Как я изучал программирование по бесплатным курсам и книгам

Рассказываю основываясь на своем опыте, на примере языка Python.

С детства хотел изучить программирование, но жизнь сложилась так, что мне пришлось начинать работать с 9 го класса, и было не до учебы. Потом был страх, что программирование это очень сложно, и чтобы им владеть нужно потратить несколько лет на учебу в вузе, изучить компьютер и математику от и до. Но как оказалось, все не так страшно, и об этом я хочу рассказать.

Для вашего удобства разделил статью на несколько частей -

Какие знания нужны программисту

Для начала хочу подчеркнуть важную мысль для начинающих - для того, чтобы выучить язык программирования, не нужно обладать специальными знаниями.

Специальные знания нужны для того, чтобы его применять. И это не обязательно математика или устройство компьютера. Если вы хотите заниматься веб-программированием, вам нужно изучить СУБД, и один из популярных фреймворков, Django/Flask. Математика тоже нужна, но в программировании искусственного интеллекта.

Так же специальные знания нужны, для повышения качества и возможностей вашего кода - после начала практики вы очень скоро столкнетесь с необходимостью изучить работу с потоками, ООП и асинхронное программирование.

Очень важно изучить как работают алгоритмы и паттерны проектирования.

С чего начать изучение

  • Изучение языка

Начал я с курса на Coursera от Михаила Густокашина, преподаватель рассказывает очень хорошо. Задания в основном связаны с математикой, но все задания можно и нужно решать применяя только информацию, которую вы получили на предыдущих лекциях. Задания очень сложные, иногда на одну задачу можно потратить целый день, но зато намного лучше запоминается пройденный материал.

Мне интересна веб-программирование, поэтому я продолжил изучение на Яндекс.Практикум, на бесплатной части курса “Профессия python разработчик”. Окончив пробную часть я окончательно убедился, что мне интересно развитие в этом направлении.

  • Изучить фреймворк и библиотеки

Поскольку свободных 20.000 и более рублей на покупку курсов у меня не было, а кредиты я не беру, было решено продолжить изучение по книгам.

После долгих раздумий и сравнений было решено продолжить изучение по книге

Изучаем Python. Программирование игр, визуализация данных, веб-приложения  Мэтиз Эрик

У неё есть свежее издание, и затрагиваются интересные мне фреймворки и библиотеки.

Начал сразу с изучения библиотеки для разработки игр PyGame, решил не пропускать эту часть, чтобы прокачать навыки ООП и работу с библиотеками. Задания в книге очень простые и позволяют в легкой степени закрепить пройденный материал. Обучение визуализации данных я решил пропустить, так как её можно освоить по официальной документации и мне это не очень интересно. Обучение веб-программированию в ней проходит на очень поверхностном уровне, но неплохо для ознакомления.

  • Начать работу над своим проектом

Я решил начать с создания агрегатора с вакансиями для маркетолога. Этот проект затрагивают много знаний которыми я хочу овладеть или улучшить. И хорошо подходит для портфолио.

Несколько советов:

  • Если не понимаете какую-либо тему, попробуйте изучать её в разных источниках.
  • Курсы покупать не обязательно, можно получить необходимые навыки по книгам, главное подходить к выбору основательно
  • Обязательно практикуйте полученные знания
  • При обучении по книгам выбирайте свежие издания, с актуальной информацией
  • Не изучайте программирование ради денег, есть много других не менее востребованных и оплачиваемых профессий, например 3D художник.

Мой первый заказ:

Найти его было несложно, у меня есть опыт работы в интернет-маркетинге, создании сайтов и настройке рекламы. После того как я написал на стене, что немного изучил программирование мне написал один из коллег-клиентов которому я делал сайт и спросил могу ли я сделать для него программу для повышения уникальности изображений.

Уточнив все детали и обговорив символическую оплату я приступил к созданию. Рабочий прототип получилось написать за один день, для этого мне хватило знаний полученных ранее, и гугла для чтения документации по необходимым модулям, и немного изучить работу с потоками.

Но в программе отсутствовал графический интерфейс, создать его я решил при помощи модуля Tkinter. С его помощью удалось создать необходимый интерфейс удалось за пару часов.

Оставалось добавить горячую клавишу для остановки программы. С этим возникли самые большие сложности. На добавление всего одной дополнительной функции у меня ушло 3-4 дня. Но зато я очень хорошо прокачал навык управления потоками в Python, научился отслеживать их работу, не давать им бесконечно множится, и завершать по необходимости.

Чему я научился:

  • Автоматизировать рутинную работу. Если вы тратите много времени на выполнение похожих действий скорее всего я смогу вам помочь.
  • Написать парсер. Он сможет обирать почти любую информацию из интернета и сохранять в удобном вам виде или отправлять в мессенджер.
  • Сделать серверную часть сайта или админку для управления сайтом.
  • Написать чат-бота почти любой сложности.
  • И многое другое, пишите, возможно сделаю работу для вас за символическую оплату и отзыв:)

На этом всё. Если у вас есть какие либо вопросы, буду рад ответить.

0
78 комментариев
Написать комментарий...
Alex Chernyshev

Самое важное что нужно программисту это страсть к программированию, все остальное - второстепенно.
Вся работа со стороны это сидение на стуле за монитором по 10-16 часов.
Без этой страсти и горящих глаз - вы сольетесь годам к 30ти в том или ином виде. Еще и жалеть потом будете что вообще ввязались. 
Ну и денег особых не приносит давно.

Ответить
Развернуть ветку
Петр Иванов

про деньги все таки в сравнении познается.
например большинству населения России зарплаты в ИТ только снились, поэтому я не знаю какая у вас оценка не особых денег, но большинство населения считает уровень дохода программистов особым.

Ответить
Развернуть ветку
3 комментария
Michael Goor

Во! Самый стоящий комментарий! Это надо любить. А вообще просто есть люди кто характиром не подходит для этого. важно чтобы был подходящий характер, например ковырять неработающий код час и больше и в конце понять что не хватало какой то точки или кавычки.

Ответить
Развернуть ветку
Алексей Голубев

К 30-ти годам горящих глаз тоже не остаётся

Ответить
Развернуть ветку
Петр Иванов

вопрос автору - а вы до начала этого обучения с базовой алгоритмизацией были знакомы?
то есть условный оператор if, цикл while,for, массив, переменная

если нет, то насколько сложно было ее освоить до уровня "написать цикл for который считает сумму чисел в массиве или написать цикл for который находит минимальное число в массиве"?

у меня по опыту у взрослых именно вот эта часть вызывает такой ступор что они отваливаются наглухо. 

а литература как раз этому и не учит, учит синтаксису языка, подразумевается что человек if,for, while - то есть набор тюринг полных инструкций знает "уже и так". ну или обьясняется но примитивно, подразумевая что все это поймут либо быстро либо знают и так.

Ответить
Развернуть ветку
Василий Степанов

есть же замечательный курс

Ответить
Развернуть ветку
5 комментариев
Егор Шукис
Автор

Нет, изучал с нуля. 

А что бы  "написать цикл for который считает сумму чисел в массиве или написать цикл for который находит минимальное число в массиве", достаточно сменить мышление на более логическое и понять как работают самые основы. 

Ответить
Развернуть ветку
10 комментариев
Василий Степанов

ну вообще сейчас основы информатики проходят с 6 класса. По идее к концу школы уже даже программировать должны на яве или с++

Ответить
Развернуть ветку
23 комментария
Филипп Качанов

Автор приводит курс на coursera. Там очень много практических заданий. Как раз так сможете преодолеть свой барьер. По крайней мере я этот курс с самого нуля проходил. Знаний никаких не имел.

Ответить
Развернуть ветку
3 комментария
Dark Stack

"Математика тоже нужна, но в программировании искусственного интеллекта". Это не совсем так, например, когда я учил PHP - там вообще не нужна была математика, но когда стал учить C++ и увлекаться компьютерными сетями, протоколами, алгоритмами, и криптографией, то математика очень даже сильно понадобилась. Приходилось даже гуглить, чтобы понять подавляющее большинство формул.

По поводу курсов, то в сети очень много сливов, например, на форуме Openssource и на сайте CourseHunter. Ну, а любые книги можно скачать в Telegram или в Даркнете на сайте Флибуста.

Что касается Python, то мне кажется - это ПОП'совый язык, с которого не стоит начинать путь в программирование. СИ-подобные языки на эту роль куда лучше годиться, но они гораздо сложнее других. Но опять же, все зависит от преследуемой цели.

Ответить
Развернуть ветку
Егор Шукис
Автор

Про важность математики в играх забыл упомянуть.

А по поводу того, что язык ПОП'совый, тут я решил идти от простого к сложному. По пайтону очень много хороших книг, видео на Ютуб, статей и возможностей. И он хорошо подходит под задачи которые мне интересны. 

Но в будущем мне интересно изучить C++ и Assembler, для общего развития и удовольствия. 

Ответить
Развернуть ветку
2 комментария
Василий Степанов

Математика нужна компьютерном зрении, графике и пр...обычный разработчик вполне может обойтись и без нее.
Ну и язык надо выбирать осознанно, исходя из того, чем планируешь заниматься. А то некоторый олды не будут тебя за программиста считать, если ты ассемблера не знаешь

Ответить
Развернуть ветку
2 комментария
Василий Степанов

Странно почему в качестве учебника не выбрали Лутца.

Ответить
Развернуть ветку
Дядя Скрудж

Потому, что Лутц - это не учебник, по нему нельзя научиться. К нему можно прийти позже для углубления познаний. На начальном этапе никто его не сможет освоить.

По аналогии, когда учишься ездить на авто - важно сесть и научиться ездить, а как работает внутри автомобиль, можно изучать позже, если интересно.

Ответить
Развернуть ветку
2 комментария
Егор Шукис
Автор

Основывался на отзывах, свежести издания,  а так же наличию информации о веб-фреймворках. Сейчас в качестве следующего учебника планирую купить учебник от Перисваля. 

Ответить
Развернуть ветку
1 комментарий
Петр Иванов

мне кажется для взрослого человека очень большая проблема во первых мотивация, а во вторых это "игрушечность" задач.
ну то есть типа чтобы научиться программировать надо писать программы типа a = a+b; print(a); и это взрослого демотивирует типа "что и вот эта херь бл...? это программирование".

то есть при наличии мотивации это типа все понятно куча курсов взял да сделал. но мне кажется взрослому мотивацию получить для занятия таким делом это как курить бросить. можно, но единицам.

(сказано по опыту попыток менторства взрослых кто хотел стать разработчиками)

Ответить
Развернуть ветку
Дмитрий Лазарев

Интересно, каков практический смысл взрослому человеку осваивать программирование с нуля?

Ответить
Развернуть ветку
3 комментария
Егор Шукис
Автор

Для прохождения этого барьера я для себя решил полностью полагаться на преподавателей, если они уже прошли через это, значит лучше меня знают с чего начать. 

А не курю я уже год примерно, бросал несколько лет)

Ответить
Развернуть ветку
Петр Иванов

автор молодец если прошел стадию "мотивировать себя" успешно. дальше уже дело техники.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Сергей О

Спасибо за прекрасный курс. Материал достойный, рекомендую также обратить внимание на курсы Михаила Русакова

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
tair mulaev

скалька занило увась самоабучене времи сколька вы удиля времи 

Ответить
Развернуть ветку
Vladimir Denisov

Какой то мутный тип. Рекламный. 

Ответить
Развернуть ветку
Егор Шукис
Автор

Сказал человек у которого в подписках маркетинг и социальные сети. 

А что вы имеете в виду под словом "рекламный"?

Ответить
Развернуть ветку
75 комментариев
Раскрывать всегда