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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0
78 комментариев
Написать комментарий...
Василий Степанов

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

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

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

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

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

что посоветуете в качестве первой кники по пайтону?

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

Уже отвечал на другом ресурсе на этот вопрос, так что просто скопирую:
Сложно изучать питон по одной книжке. Непременно в какой-то момент что-то станет непонятно или скучно, поэтому нужно изучать сразу по нескольким книгам и курсам! Где-то застрял в одной книге - начни другую, потом вернешься. В разных книгах можно даже изучать одни и те же темы, авторы рассказывают немного по разному и понимается после этого очень хорошо. После освоения азов - можно в этих книгах читать уже только главы, которые интересны в первую очередь, совсем не нужно проходить книги строго в порядке нумерации страниц. Обязательно просмотрите в каждой книге список глав, чтобы понимать что будет точно интересно и вернутся к этим главам потом, даже если книжка в другой главе "не пошла".

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

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

1) Эрик Мэтиз - Изучаем Python. Программирование игр, визуализация данных, веб-приложения
2) Свейгарт - Учим Python, делая крутые игры
3) Бэрри Пол - Изучаем программирование на Python
4) Майкл Доусон - Программируем на Python (есть интересные "практические" главы)

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

В изучении языка по книгам нужно придерживаться такого принципа: делай только то, что интересно, тогда обучение не забросишь. Стало скучно или непонятно - переключись на другую книгу, возможно эта непонятная тема там подается понятнее и интереснее. Не дай какому-то непонятному моменту застопорить обучение, переключайся!

Также, чтобы разнообразить, можно проходить курсы на курсере или стэпике. Прохождение там бесплатные (платные специализации, но проходить поштучно каждый курс из них можно бесплатно, единственное, что не будет проверок от однокурсников, но это можно пропускать).

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