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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

речь о среднем взрослом который учился в остатках советской школы, скажем 35 лет сейчас ну или30-40лет.
тогда информатика в школах конечно была но на нее никто не обращал внимания и никакой алгоритмизации выпускник школы не знал если он не занимался этим специально (таких называли компьютерный гений и просили винду переставить, интернета тогда не было).

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

У меня такая же проблема и я лично не встречал библию начинающего программиста в таблетках. Надо заставлять себя читать бестселлеры по CS увеличивая их уровень сложности по вертикали и смещаясь в сторону выбранного языка и фремворков по горизонтали. Короче нужен системный подход

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

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

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

Просто с возрастом тяжелее учиться: мозг не так воспринимает информацию, плохо запоминает, нет мотивации и куча дел во взрослой жизни. Но нет ничего невозможного.

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

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

я вот пришел к выводу что более серьезной проблемой программирования является его игрушечность.
во первых оно выглядит (вначале) как издевка типа 
const a=5
const b=6
const c=a+b
(это намного проще чем любой бухучет)

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

и вот это демотивирует.

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

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

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

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

вот согласен да получить большую зарплату это ограниченный мотиватор как ни странно. в теории то казалось бы чем еще мотивировать как не деньгами, а вот нет.

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

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

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

согласен да, работать надо много сейчас, а отдача сильно потом.
с другой стороны а где по-другому?

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