Как не бросить учить python
Перейти к содержимому

Как не бросить учить python

  • автор:

Как я начал учить Python и ничего не произошло

Вы когда-нибудь видели лендинги курсов по программированию? Наверняка да, ведь времена «мидлов за полгода» и «джунов за три месяца» отгремели совсем недавно. Страницы многих успешных эдтех-компаний здесь похожи. За обещаниями золотых гор на золотых песках удаленки мы вглядываемся в светлые лица преподавателей, и после reasons to believe нас встречает… программа обучения. Двух-, а то и трехуровневая простыня со всеми важными темами. И чем их больше, тем лучше: ведь на другой чаше весов уже поджидает стоимость курса.

Стремление показать товар лицом — это, конечно, похвально. Но есть у такой дотошности и обратный эффект: неуверенность в себе. Вчерашним «выпускникам филфака», к которым с натяжкой отношу себя и я, становится страшно. В этом посте я постараюсь всех нас ободрить и расскажу, как преодолел базовый курс Python.

Немного о себе. Моя работа всегда была связана с текстами. В основном айтишными. Я много пишу с экспертами на разные темы, но никакими системными знаниями о языках программирования в итоге не оброс. До этого курса моим высшим достижением был фан-сайт группы «Кино», написанный на информатике с Dreamweaver. На фоне одноклассников с кодом в блокноте выглядело круто, но в голове осталось немного (спасибо, визивиг).

Перемещаемся лет на 17 вперед. В конце прошлого года я получил для бесплатного знакомства экспресс-курс Python «Программирование — и точка». Не буду ссылаться на создателей, чтобы не обвинили меня в рекламе, по названию найти можно быстро.

А теперь время дневниковых записей: как я провел январь.

Первые «умные слова»

В моем экспресс-курсе не обошлось без обзорной лекции о базовых вещах. Что такое компьютер, я более-менее представлял. Думал, что совсем заскучаю, но получил в свой словарь два новых термина: «компилируемый язык» и «интерпретируемый язык». Следом в зачет пошел одобрительный кивок друга-программиста — когда за пивом поведал ему новость о своем курсе и вывалил эту пару определений. И это мне еще про Python ни слова не сказали!

Среда разработки

На курсе использовали среду PyCharm. Раньше я использовал среды разработки только «в режиме просмотра», чтобы, будучи гострайтером, копипастить чужой и непонятный мне код в чужие же посты. Теперь я встал на место тех самых экспертов и должен сам врубаться, что вижу в редакторе.

Здесь и далее я буду отражать свои эмоции от обучения. Они адресованы в первую очередь тем, кто делает первые шаги в программировании, как я, или вообще сомневается в этой затее. Так вот: современные среды разработки — это восторг. PyCharm сам готовит все необходимое для работы, нужно только скачать Pycharm и установить его (по дефолту это бесплатно). Цветовое выделение кода срабатывает на лету; со временем я запомнил, как должны выглядеть те или иные слова, что я вбиваю, и неправильный цвет мгновенно напоминал мне об опечатке или другой проблеме. А еще PyCharm сразу сообщает об ошибках, причем делит их на фатальные (без которых не заработает) и нефатальные («лучше так не делать, могут быть проблемки»). Максимально дружелюбная среда для работы.

Переменные, числа и математика

Пошли первые темы непосредственно о питоне. Получил пачку советов о том, как называть переменные. Правила здесь несложные, просто учту, что переменных может быть много и поэтому нужно называть их осмысленно. Но при этом не растекаться, потому что писать их придется часто. Написал hello world — бонус к мотивации!

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

Условные конструкции

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

Условные конструкции открыли и мой первый затык. Когда мы утверждаем, что нечто равно чему-то, нужно ставить “=”. Когда мы проверяем, что нечто равно чему-то, нужно ставить “==”. Двойное равно не входило в мой лексикон чуть ли не до финального проекта. А PyCharm не писал, что это ошибка. Много раз я шерстил вроде бы нормальный код вдоль и поперек, пока в голове не улеглось.

На этом этапе пришлось первый раз идти в гугл, потому что тип данных boolean проскользнул мимо внимания. Понял, что логические значения выглядят как обычные слова без кавычек, а еще Python может воспринимать из контекста, даже если они не написаны. Прямо как в человеческом языке 🙂 Впоследствии эта тема не особо мне пригодилась, но есть ощущение, что на более сложном уровне она становится важнее.

Списки и циклы

Если мы хотим перебрать что-то в диапазоне, например, от 1 до 5, мы пишем: for i in range(1, 6). Последнее число в диапазон НЕ включается, а первое включается. Ок, смирился. Можно обратиться к элементам диапазона с конца, используя отрицательные числа. Это удобно. Но при этом первый элемент списка — он для питона не первый, он нулевой, счет с нуля идет. Особенности нумерации — это первое, что меня удивило в языке. Вероятно, на более глубоких уровнях познания это имеет логическое обоснование. Привыкаю и смотрю дальше.

Ага, врубился

К этому моменту я уже привык, что в программировании все нужно объявлять и объяснять. Окей, я объявил, например, что ввожу с клавиатуры некоторый диапазон, в котором должен работать обработчик (обработчик?) for, вот этот самый range. Но как обозначить i так, чтобы обработчик понял, что нужно двигаться по диапазону? Да никак! Эта “i” выглядела для меня так, будто появляется из ниоткуда, но при этом подразумевала именно то, что мне нужно. В других примерах я увидел, что вместо “i” можно указать “_”, а потом узнал, что подойдет любой символ.

В этот момент я был как никогда близок к тому, чтобы все бросить. Спасибо, Stack Overflow, ты прекрасен! И спасибо другим ребятам, что проходили курс: в ответ на мое нытье они признались, что до циклов еще не дошли, порадовались моему прогрессу и вовремя приподняли мотивацию.

Функции и рекурсия

Объединил их в один раздел, потому что проскочил обе со всеми домашками быстро. Спойлер: это подвело меня в финальном проекте. Кроме того, я, кажется, не понял до конца, что нужно писать после названия функции в скобках, когда мы объявляем ее через def. Но этот пробел не помешал мне с заданиями, которые, видимо, были слишком простые.

Рекурсия, как концепция, показалась очаровательной. Вдохновила на внеклассное чтение, провел весь вечер, залипая на фракталы 🙂

Структуры данных

Здесь я почувствовал, что делаю какие-то реально полезные вещи. Некоторые домашки были связаны с обработкой произвольных текстов. Да я целый MVP «Антиплагиата» вот этими руками сваял! Помимо синтаксиса, нужно было усвоить понятие итерируемости, и дело в шляпе. Ах да, в памяти осталось, что кортежи очень нужны, но постигну их подлинное величие я когда-нибудь потом.

Классы

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

Модули

Классическое начало Fallout представляете? Вспомните момент, когда вылезаешь из убежища/пещеры в совершенно новый, открытый мир — где не знаешь, чего и ждать, так что ждешь всего и побольше. То же самое и с модулями Python. Целая вселенная возможностей оказалась на расстоянии строчки-двух импорта. Таким же когда-то мне представлялся мир модов на скайрим, но кайфа от побед в питоне я получил больше 🙂

Для финального проекта я подгрузил функцию выбора случайного элемента списка. И Tkinter.

Выход из убежища в Fallout 4

Итоговый проект

Курс не включал гайдов по итоговому проекту, но я знал, что согласно плану создателей курса, я должен был сделать тренажер с флеш-картами для изучения иностранного языка. Это когда тебе дают определение слова, а ты должен написать, что это за слово. И так много-много раз в случайном порядке до полного запоминания. К тому моменту я закончил прекрасную игру Yakuza 0, богатую новыми для меня словами и фразами на английском. В итоге выписал штук 80 — база готова.

Tkinter я кое-как осваивал уже сам, по многочисленным гайдам в Сети. Предварительно отрисовал простенькую блок-схему с user journey. Помимо рандомного выбора определений поставил ограничение на 20 карточек за сессию и подсчет правильных ответов — с выдачей какого-нибудь игрового персонажа в зависимости от результата.

Думаю, вы представляете, как это примерно должно работать. У меня получилось где-то 80 строчек кода (не считая словарную базу). В них входило 10–15 модулей (графических элементов) Tkinter и три функции — проверка ответов с подсчетом результата, переход на следующий вопрос с подсчетом показанных карточек, создание финального сообщения на основе числа верных ответов.

Самое классное здесь не то, что я сделал проект сам с нуля, нет. Самое классное — что в начале работы я не имел представления о том, как будет выглядеть большая часть проекта. Всё вырисовывалось постепенно, за каждым поворотом к цели я открывал что-то новое, переписывал, переставлял, стремился к тому, чтобы всё вышло по ТЗ. И оно вышло, да! Я смог сделать из этого готовое приложение — можно было показать его даже без пайчарма.

К чему всё это?

Все истории успеха начинающих программистов строятся по одному шаблону. Я и сам написал таких не один десяток. На сцену выходит лирический герой, вызывает сострадание, принимает волшебную таблетку программирования — и вот перед нами лучезарный рыцарь в сияющих IT-доспехах. Окей, таков путь.

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

Надеюсь, и в вашей работе всё еще находится место таким эмоциям. Успехов!

  • python
  • курсы
  • обучение программированию

Почему Python — плохой выбор для первого языка программирования?

Так как я веду несколько технических групп и чатов, то часто сталкивался с вопросом от подписчиков о том, с какого же языка лучше начать изучать программирование и информатику. Очень часто кто-то советует именно Python. Я в корне не согласен с этим советом. Мне нравится этот язык, и я ничего не имею против него, он прост и удобен. Но есть кое-какие аргументы против того, чтобы поставить его на место вашего первого языка программирования. Оговорюсь, что всё сказанное далее является субъективным мнением автора и не претендует на истину.
Итак, почему…

Ниже на картинке я привел пример, как можно с помощью маленькой функции обработать матрицу и вернуть структуру, соответствующую транспонированной матрице.

Транспонирование матрицы — это операция над матрицей, при которой ее строки и столбцы меняются местами. Кто уже начинал изучать аналитическую геометрию (линейную алгебру), тот сталкивался с этой простейшей задачей. Иногда это задание дают на уроках информатики в качестве сложных задач на обработку двумерных массивов, которые мы и называем матрицами. Что ж, кому-то может показаться и вовсе несложным. Однако, для большинства начинающих и людей, не сталкивающихся с программированием, понять, что такое двумерный/многомерный массив — это непростая задача. Вы можете не поверить, но есть много очень замудренных задач на обработку многомерных массивов, над которыми придется подумать даже опытному разработчику.

Но вернемся к нашей (более-менее легкой ?) задачке про транспонирование. Как вы видите, в Python задачу можно решить буквально за пару строчек кода. И всё это благодаря сложным встроенным функциям и методам, которые очень сильно облегчают ваш мыслительный процесс. В результате программируя на Python в качестве первого своего языка, вы надеваете на себя розовые очки и начинаете считать, что программирование — это просто. В этом есть и доля правды, и в этом есть огромный подвох.

Есть другие языки, более низкого уровня, которые помогут вам понять глубину, понять базу, понять структуру, снять розовые очки, убрать синтаксический сахар и как следует подумать над теми вещами, которые ранее вы принимали как должное. Какой из этого вывод? Если вы хотите научиться думать, по-настоящему понимать как работает железо, то лучше начать с низкого уровня. Поэтому полезнее будет начать с Assembler или C.

Во-первых, это даст вам лучшее представление о том, как работает процессор и периферийная электроника в вашем ПК.

Во-вторых, вы начнете понимать сообщения об ошибках в операционной системе.

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

Думаю, что можно еще привести кучу плюсов к тому, чтобы начать с низкого уровня. Зачастую, люди, изучающие Python, по привычке подключают в свой код кучу библиотек ради реализации каких-то простейших функций. Логично предположить, что это сильно утяжеляет код и делает его медленным. А если еще вспомнить, что даже эффективно написанный python-код примерно в 1000 раз медленнее аналогичного кода на C/C++, то представьте себе какая производительность в итоге получится. Конечно же не всем разработчикам нужно писать ПО, которое работает в режиме реального времени и требует мгновенных реакций с минимальными задержками. Не всем нужно писать ААА-игры.

Тем не менее, обратите внимание на текущую ситуацию в программном обеспечении. Если раньше нужно было 8-битный процессор, чтобы запустить спутник в космос, то сейчас у нас тормозит несколько вкладок в браузере при 2-4 ядерном 64-битном CPU. Так может быть причина как раз в разработчиках, а не в «слабом» железе?

Самый ранний из найденных космических аппаратов, в которых стояли не микросхемы средней степени интеграции, а именно монолитный микропроцессор (8-битный RCA 1802) – это спутник Magsat, запущенный 30 октября 1979 года.

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

Напишите в комментариях, согласны ли вы с такой идеей? Или же вы придерживайтесь другого подхода?

4 ошибки, которые мешают вам выучить Python

Как учиться и что делать, чтобы не пожалеть о потраченном времени. Холодный душ для новичков.

Александр Бабаскин

Александр Бабаскин

Автор статей о программировании. Изучает Python, разбирает сложные термины и объясняет их на пальцах новичкам. Если что-то непонятно — возможно, вы ещё не прочли его следующую публикацию.

Это статья для всех, кто начинает или планирует изучать Python. Мы разберём четыре ошибки, которые часто встречаются в период обучения. Если сможете их своевременно исправить — сэкономите время и упростите вход в профессию.

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

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

Ошибка №1

Выбирать профессию «на примерку»

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

Человек планирует быстро познакомиться с основами Python, потом ещё с несколькими языками программирования, сравнить и выбрать лучший вариант. Это фундаментальная ошибка, которая может испортить карьеру.

Представьте, что вы хотите стать доктором и выбираете направление. Как вы поступите? Соберёте подробную информацию о специальности или воспользуетесь методом проб и ошибок: полгода поработаете в венерологии, затем перейдёте в хирургию, дальше — в глазное отделение, в терапию, и так, пока не определитесь с решением?

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

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

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

  1. Почитайте статьи про Python и сравните его с другими языками.
  2. Пообщайтесь с карьерным консультантом.
  3. Посмотрите, какие проекты реализованы на Python и с какими технологиями это связано.
  4. Выпишите преимущества и недостатки Python.
  5. Решайте, учить или нет. А можете пока собирать информацию дальше.

Какое бы решение вы ни приняли, скорее всего, оно будет ошибочным. Писать код на профессиональном уровне не всем подходит — часто это монотонная работа, в которой нет творчества и приключений, как в фильме «Социальная сеть». То есть вообще нет гарантий, что вам понравится процесс.

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

Задание 1

Соберите информацию про Python и письменно ответьте на вопросы:

  1. Почему вы выбираете Python в качестве первого языка программирования? Это эксперимент или осознанный выбор?
  2. Какой у вас примерный карьерный план на следующие 10 лет?

Под ответами перепишите декларацию намерений:

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

Я знаю, что выбор языка программирования — это риск. Мне может не понравиться, но я не намерен сдаваться. Через несколько лет я стану востребованным Python-разработчиком и при желании смогу изменить карьеру. Я настроен работать и понимаю, что не бывает простых путей — любой язык программирования лёгок только на старте. Дальше начинаются сложности. Поэтому не вижу смысла тратить своё драгоценное время.

Python — отличный язык, и я верю, что у меня всё получится!»

Число, подпись, ФИО

Распечатайте ответы на вопросы вместе с декларацией и держите записи под рукой. Возникнет желание бросить обучение и подыскать что-то полегче — перечитайте написанное, успокойтесь и продолжайте работать.

Ошибка №2

Писать код и не знать PEP-8

Если решите стать водителем, то придётся выучить правила дорожного движения. Без ПДД вы не получите права и рискуете попасть в аварию.

В языке Python есть индекс PEP-8 — руководство по стилю написания кода. По уровню значимости это такой же документ, как ПДД для водителя.

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

PEP-8 — это объёмный документ, который недостаточно только прочитать. Нужно научиться видеть ошибки и знать, как поправить код.

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

  • Заведите блог или страницу в соцсетях.
  • Каждый день читайте фрагмент руководства по стилю для Python-кода.
  • Делайте короткую заметку обо всём, что запомнили.

Уделяйте этому упражнению 10–15 минут в день, и через несколько месяцев выучите PEP-8 назубок. Когда разберётесь с теорией — переключайтесь на практику. Берите свой или чужой код, находите в нём ошибки и исправляйте их по правилам. Так вы набьёте руку и привыкнете к чистому коду.

Задание 2

Заведите блог, аккаунт в Twitter или страничку в любой соцсети. Сделайте это место своим ежедневником по изучению руководства PEP-8. Старайтесь публиковать короткие заметки и постепенно разбирать все правила стиля.

Для проверки качества кода попробуйте бесплатный сервис PythonChecker.

Ошибка №3

Игнорировать правила нейминга

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

Предположим, программист назвал функцию delete_all — «удалить всё». Без погружения в контекст и чтения кода ничего не понятно — эта функция может означать что угодно:

  • удалить все файлы из базы данных;
  • удалить всё с компьютера;
  • удалить всех хейтеров из интернета;
  • и так далее.

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

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

Возьмём функцию delete_all и переименуем её в delete_all_archive — «удалить весь архив». Одним словом мы убрали неопределённость. Теперь программистам не нужно изучать код, чтобы понять назначение функции.

Название должно объяснять, что делает код и зачем он нужен. Если ответить на два вопроса не получается, добавляйте комментарий. В названии пишите, что делает код, а в комментарии — зачем он нужен. Это упрощает чтение:

  1. Программист видит функцию delete_all_archive и понимает, что она удаляет все архивные комментарии.
  2. Дальше он читает комментарий и узнаёт, что код нужен для автоматической очистки системы от мусорных файлов.
  3. По названию и комментарию программист может решить: раскрыть код и посмотреть реализацию или не тратить время. Так работает нейминг.

Названия и комментарии старайтесь оставлять на английском языке. Если команде так неудобно — попробуйте сохранить на латинице хотя бы названия.

Задание 3

Нейминг удобно изучать параллельно с PEP-8. Видите полезное правило — добавляйте его в свою базу знаний. Исчерпывающего перечня правил нейминга нет, и в разных проектах бывают нюансы или ограничения.

Поэтому для начала изучите Python Zen и законспектируйте книгу «Чистый код» Роберта Мартина. Когда закончите, обращайте внимание на примеры из практики. Увидели в чужом коде удачное название — сделали заметку.

Ошибка №4

Программировать в отрыве от сообщества

Python много заимствовал у ABC — мёртвого языка программирования, который, по мнению Гвидо ван Россума, провалился из-за отсутствия поддержки сообщества. Язык ABC проектировали учёные, которые не смогли учесть интересы программистов за пределами лаборатории.

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

Пример с Python и ABC демонстрирует силу сообщества, которую можно использовать для изучения языка. Не нужно замыкаться и самостоятельно разбирать непонятные вопросы — не всё можно загуглить, и не всегда ответы поисковой выдачи помогают сориентироваться в предмете.

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

Для понимания ценности сообщества нужно представить ситуацию: вас взяли на испытательный срок и в качестве теста попросили разобраться с какой-то нестандартной Python-библиотекой. Коллеги недоступны, в поисковике пусто, а экспериментировать некогда. Остаётся сообщество. Если вы знаете, куда обратиться за помощью, то с большой вероятностью найдёте подсказку.

Задание 4

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

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

Что дальше

  1. Прочтите про 10 ошибок, которые делал каждый разработчик. После этой статьи вы должны понять, что провалы встречаются у всех на разных этапах карьеры. Программист не должен этого бояться. По возможности лучше стараться сделать так, чтобы побольше учиться на чужом опыте.
  2. Попробуйте перевести статью When Pythons Attack: Common Mistakes of Python Programmers. Здесь перечислены основные технические ошибки, которые встречаются у всех Python-разработчиков.
  3. Ознакомьтесь с 10 мифами о Python. В интернете слишком много ложной информации про этот язык. Выясните, что из этого неправда.
  4. Узнайте, как перестать быть джуниором и начать жить. Это статья о ключевых качествах, которые нужны профессиональному программисту.
  5. Познакомьтесь с эффектом Даннинга — Крюгера. Из этой статьи вы узнаете про ловушки мышления, которые могут помешать карьере.

Как не бросить обучение программированию – 7 проверенных способов

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

Всем привет, на связи JavaRush. Мы делаем курсы по Java и нам важно, чтобы люди доучились до конца — а это нетривиальная задача. В конце-концов, в школе нас ничего не отвлекало, но при этом учиться всё равно бывало сложно, а во взрослой жизни стало ещё сложнее — потому что кроме учебы появилась работа и домашние дела. В этой статье мы разберём, что мешает освоить программирование и как не бросить обучение на полпути. Разбираться будем на примере нашего курса, но эти же приёмы можно использовать и для обучения любому другому языку.

P. S. Сохраните статью, чтобы в любой момент вернуть себе утраченную мотивацию 😉

Причина №1. Не могу разобраться самостоятельно

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

Что делать?

Для джунов, которые заблудились в дебрях программирования, в сети созданы программистские форумы типа Quora или StackOverflow. Есть и более специализированные ресурсы для «носителей» определённого языка программирования.

При прохождении онлайн-курсов обычно организуют пространство, где можно задать вопросы или попросить помощи с заданиями. Мы сделали так же: на JavaRush есть раздел «Помощь» — это так называемый «коллективный разум» студентов и нас, разработчиков этого Java-ресурса. В этом разделе вы можете задать конкретный вопрос, касающийся решения задачи из курса.

А те, кто совсем не справляется самостоятельно в изучении программирования, могут дать объявление о поиске ментора или попросить помощи в изучении сложной темы в разделе «Форум».

Причина №2. Долго не вижу результата. Моих навыков никогда не будет хватать, чтобы сделать что-то реальное

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

Но что делать, если как раз с практикой проблемы?

Что делать?

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

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

Причина №3.Не хватает мотивации

Такое случается часто: сначала вы были мотивированы, но потеряли вовлеченность на полпути. Это не означает, что надо всё бросать. Потеря мотивации — обычное дело для длительного обучения. Её можно вернуть.

Что делать?

Возродить потерянную мотивацию можно несколькими способами. Для начала вспомнить, зачем вам вообще это нужно. Буквально: сесть и выписать свою цель на лист бумаги и проанализировать, насколько вы к ней приблизились. Осознание того, что вы не стоите на месте, двигаетесь, пусть и медленно, может приободрить.

Ещё один способ — придумать стимул. Можно дать себе обещание что-то сделать или купить в случае, если вы пройдёте сложную тему или напишете пробный проект. Сделали — поощрили себя, и можно придумывать новую цель и новый стимул.

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

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

Многих людей в учебе мотивируют «ачивки» за выполненные задачи, и это тоже может помочь не бросить обучение. Именно поэтому на JavaRush за каждую решенную задачу вы получаете награду — несколько единиц «чёрной материи». «Материя» необходима для того, чтобы двигаться дальше – открывать следующие уровни и лекции. Также есть специальные награды за более крупные достижения, которые формируют рейтинг пользователя среди всех студентов курса.

Как не бросить обучение программированию – 7 проверенных способов 1

Причина №4. Прокрастинация

Вместо учебы убираете квартиру или смотрите сериалы (шпилите в игры или что угодно ещё), а учебный проект пишете в последнюю ночь перед дедлайном? Если вы узнали в этом себя, то вас одолела прокрастинация. Кстати, по словам ученых, прокрастинация — это не синоним лени, а скорее откладывание дел до последнего. Зачастую прокрастинацией страдают люди, склонные к перфекционизму. Это можно объяснить тем, что перфекционисты склонны доводить результат до совершенства. Когда ты сам от себя требуешь идеала, облажаться и правда становится страшно.

Что делать?

Не бросить обучение из-за прокрастинации может помочь дробление большого важного дела (например «выучить программирование») на более мелкие («пройти новую тему»).

Ещё один способ — это так называемый «волшебный пендель», то есть регулярные напоминания о том, что пора заниматься. Конечно, мы не могли в требованиях для курса написать «завербовать человека для напоминания» (вместо этого мы добавили менторов :D) и нам нужно было универсальное решение. Так появился «График пинков» на JavaRush: там можно установить уведомления на нужные дни:

Как не бросить обучение программированию – 7 проверенных способов 2

В борьбе с прокрастинацией помогает и определение чекпоинтов: можно выставлять контрольные точки по времени (работать 45 минут, а 15 минут отдыхать) или по задачам (решить 3 задачи, а потом сделать перерыв).

Причина №5. Непонятно, что делать дальше. Нет четкого плана

В самостоятельном обучении без чёткого плана приходится туго — можно запутаться в обилии информации, не разобраться, что в каком порядке учить, и в итоге потерять мотивацию.

Что делать?

Если нет плана, его надо придумать. И желательно не в голове, а на бумаге или в электронном документе. Чем более подробный план обучения, тем лучше. Это позволит вам не распыляться на придумывание тем для обучения. Временами можно сверяться с планом и корректировать его, если надо.

Для отслеживания прогресса можно создать документ в Excel, дневник или установить специальные приложения типа Trello, Airtable, Google Keep, Degreed, Diigo, Maketime.

Мы подготовили пример такого плана в Excel:

Как не бросить обучение программированию – 7 проверенных способов 3

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

Если же нет времени придумывать план, можно использовать готовый путь развития. В этом могут помочь курсы, ведь одна из их основных целей — как раз структурировать информацию. Если вы изучаете Java с нуля, можно использовать структуру JavaRush.

Весь обучающий курс Java разбит на 4 блока-квеста: Java Syntax, Java Core, Java Multithreading и Java Collections. Каждый квест состоит из 10 уровней, а каждый уровень содержит 10–15 лекций и 20–30 практических задач. Такая структура помогает ученикам постепенно двигаться к намеченной цели.

Причина №6. Боязнь неудачи

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

Что делать?

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

Такие истории можно найти на девелоперских форумах и сайтах. В сообществе учеников JavaRush есть раздел «Истории успеха», где ученики и выпускники курса выкладывают свои рассказы. Здесь можно почитать истории тех, кто уже закончил обучение и нашёл работу, и тех, кто ещё учится, но уже достиг значимого прогресса.

А ещё примеры чужих успехов очень помогают вернуть утраченную мотивацию.

Причина №7.Мешает обстановка вокруг. Нет времени

Только вы сели поучиться, как вас попросили вынести мусор или погулять с собакой. Или просто так много дел, что нет времени.

Что делать?

В том и преимущество онлайн обучения, что его можно организовать где и когда угодно. Чтобы морально настроиться на учебу, важно оборудовать дома полноценное рабочее место.

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

В заключение нашего текста приведем первый пункт мотивирующей памятки студентов Гарварда: «Если ты сейчас уснешь, то тебе, конечно, приснится твоя мечта, но если ты сейчас выучишься, то воплотишь свою мечту в жизнь». Поэтому, если вы давно хотели стать программистом, не откладывайте эту мечту на потом. Начните сегодня, а эта памятка поможет вам не бросить обучение и прийти к своей цели.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *