20.04.2023
Дисклеймер: страх и отчаяние первых шагов
в программировании на Python

Евгений Евсеев — основатель школы программирования «Девман».

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

В этой статье он расскажет, чего ожидать

от обучения разработке на языке программирования Python (и не только).


Базовые принципы обучения
Прежде чем браться за организацию учебного процесса, учтите два базовых принципа. Они звучат так:
  • вам только кажется, что вы всё поняли;
  • вы забудете всё, что узнали, если не будете использовать.
А теперь разберём каждый подробнее.
Принцип 1. Вам только кажется, что вы всё поняли
Решив изучить образовательный материал, обычно читают книгу или статью, проходят учебный курс, осваивают туториал, погружаются в вопрос ровно до момента, пока не почувствуют, что поняли прочитанное. Осторожно! Почти всегда, за редким исключением, это иллюзия, которую называю «иллюзия понимания». Очень сложно, изучив материал, сразу же начать успешно его применять.

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

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

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

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

Есть два метода добывать новые знания: метод Push и метод Pull. Метод Push — потребление информации впрок, попытка запомнить побольше полезного в надежде, что это пригодится потом. А метод Pull — это «вытягивание» информации из источников в ответ на конкретный практический запрос.
Работаем с источниками как профессионалы
Чтобы получить максимальную пользу от обучения, нужно уметь выбирать источники информации. Теорию берём из книг, оттачиваем навыки на туториалах. Главное — не пытаемся найти универсальный рецепт, действуем по ситуации.
Лучшие книги — ориентированные на практику
Желая изучить язык программирования с нуля, с чего начинать? Не с выбора книги или видеокурса, а с решения, что станет вашим первым проектом.

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

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

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

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

Другими словами, не достаточно просто воспроизвести шаги из туториала и сделать стандартный продукт. Но можно учиться по туториалам, собирая по примеру  собственный проект самостоятельно.
Как не надо учиться программированию
  • Не стоит искать написанный кем-то перечень, какие технологии надо освоить начинающему программисту. Найти чек-лист «Что должен знать веб-разработчик» и двигаться по нему сверху вниз — пустая трата времени. Очень редко бывает, что одной технологии достаточно для реализации проекта. На самом деле, это всегда комбинация из множества разных инструментов. Это значит, что, если вы идете по чек-листу, в котором перечислены общеупотребимые тулы, у вас не будет возможности закреплять теорию практикой.

  • Кроме того, при освоении новой специальности не нужно «писать в стол». Очень важно доводить продукты до рабочего состояния, при котором другой человек может с ними взаимодействовать. Если вы разрабатываете сайт, он должен быть опубликован, доступен по ссылке в интернете. Если вы сделали много всего, но ничего из этого нельзя «пощупать», у нанимателей ваши слова вызовут много вопросов и сомнений.

  • Типичная ошибка — когда вы берёте на себя сразу много, в первые же дни. Вы много занимаетесь и устаёте, что приводит к выгоранию. Лучше брать то количество уроков, выбирать ту загруженность, которые вас не сломают. Лучше начинать понемногу, но увеличивать нагрузку по мере необходимости. Если переборщить, мозг привыкнет, что учиться тяжело и неприятно. В результате — прокрастинация и невозможность сосредоточиться.

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

  • И главная ошибка — думать: «У меня не получится, это не мое». Мы в «Девман» считаем, что склад ума — это миф, а «программирование = математика» — это предубеждение. При изучении чего-то нового, нужно смотреть на вещи шире.
Не останавливайтесь на достигнутом
Сделав первые шаги, важно не сдаваться. В этом поможет искусство мотивировать себя самостоятельно или заряжаться мотивацией от ментора. А расширить горизонты и выйти на новый уровень получится, сделав упор на изучении английского.
Do you speak English?
При обучении Python с нуля очень важно знание английского языка. Часто этот навык недооценивают, и к программированию приступают со слабым уровнем владения английским. Поначалу особенных затруднений из-за этого может не ощущаться. Но буквально через несколько месяцев обучения скорость продвижения замедлится.

Программы написаны на английском языке. Чтобы суметь прочитать код и разобраться, как он работает, важно понимать смысл названий, переменных и функций в используемых библиотеках. Без достаточного словарного запаса вы работаете в режиме write only — можете писать код, но не можете его читать.

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

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

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

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

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

Это может быть довольно сложно, но есть два варианта упростить построение своего образовательного трека. Первый: действуйте по образцу, используйте гайды и туториалы. Второй: обратитесь к профессионалам, запишитесь на пробную неделю нашего курса по Python для начинающих.
Хотите попробовать курсы бесплатно?
У нас есть курсы Python и программы для учеников
с разным опытом — от нуля до сильного джуна.

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

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