Как научиться кодить и не умереть: 3 способа стать программистом без боли

Любой серьезный навык дается тяжело, программирование — не исключение. Именно из-за сложности новички часто сдаются и не добиваются результата. Читайте наше руководство, если застряли между «Hello, world!» и первой работой.

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

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

Дисклеймер

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

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

По теме
Как войти в IT, если ты гуманитарий: кратко о востребованных профессиях
Как войти в IT если ты гуманитарий: кратко о востребованных профессиях

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

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

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

Почему наш мозг страдает, когда формирует новый навык

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

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

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

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

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

👉 Исследование: механизм образования новых синапсов в мозге человека.

Мозг и навык, доведенный до автоматизм

Модель Колба — проверенный метод обучения для взрослых 

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

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

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

По теме
Можно ли совместить работу и обучение — мнение специалиста
Можно ли  совместить работу и обучение — мнение специалиста

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

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

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

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

Контрольные точки — способ не утонуть в информации

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

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

  • 1 уровень. Человек только планирует изучать программирование, возможно прошел пару уроков. На этом уровне контрольные точки должны помочь разобраться с организационными вопросами и приспособить мозг к регулярному обучению. 
  • 2 уровень. Человек активно учиться, изучает теорию и сталкивается с первыми трудностями. Здесь контрольные точки стимулируют фокус на практике. 
  • 3 уровень. Человек хорошо знает теорию, выполнил много учебных проектов, но до сих пор не смог получить работу. На этом уровне контрольные точки направлены на посещение собеседований, отработку обратной связи и трудоустройство. 
Схема контрольных точек для новичков в ИТ
Памятка по работе с контрольными точками 

Общая для новичков — на всех уровнях подготовки:

  1. Контрольная точка — не план работ, которые вам требуется выполнить. В каждую контрольную точку вы должны закладывать результат, который  необходимо достичь на пути к главной цели. Выбрать язык программирования — контрольная точка. Прочитать статьи про выбор языка — это действие без конечного результата. 
  2. Раз в неделю старайтесь пересматривать статус контрольных точек. Статус удобно отмечать цветом, например так: красный — текущая контрольная точка; серый — в ожидании; зеленый — готовы; желтый — возникли проблемы, нужно привлекать дополнительные ресурсы. Если не нравятся цвета, придумайте свою маркировку. 
  3. Список контрольных точек полезно планировать заранее, но без привязки к срокам. Если привыкли к дедлайнам — планируйте только на месяц вперед. В случае чего лучше скорректировать план, чем плохо проработать материал и гнаться за сроками. 

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

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

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

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

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

Как это выглядит на практике

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

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

несколько контрольных точек, которые нужно преодолеть в первую очередь
  • Какой язык программирования вы будете изучать? 
  • Как будете учиться: по курсам, книгам, начнете с бесплатных видео, найдете наставника, устроитесь стажером в ИТ-компанию или выберете другой способ?
  • Как будете совмещать обучение с работой, бытом и хобби? Где найдете время: будете раньше вставать, позже ложиться или пожертвуете каким-то занятием?
  • Где будете учиться: дома, в офисе, библиотеке, кафе, коворкинге или где-то еще?
  • Как отнесутся к вашим занятиям родные, друзья и коллеги? Что произойдет, если они попросят что-то сделать в часы обучения? Как планируете защищать личное время? 

Чтобы начать, придумайте и запишите любой план, по которому вы можете уже завтра сесть за изучение программирование. Выделите на занятия сколько угодно времени и добавьте в список любые темы. Вот пример: вы решили каждый день вставать в четыре утра и по три часа изучать Python. Отлично! Попробуйте следовать этому расписанию неделю и посмотрите, что получается. Если все устраивает, продолжайте. Если сложно или неудобно — вносите корректировки и снова пробуйте. 

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

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

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

По теме
Менторство в IT: как выбрать себе наставника
Менторство в IT: как выбрать себе наставника

У психологов есть по крайней мере два объяснения, почему взрослый человек может не верить в собственные силы. Первое связано со школой и уроками по 45 минут. Мы привыкаем, что задача должна решаться за относительно короткое время, а если это не так — начинаем тревожится. В программирование время — относительная величина. Можно пару дней изучать проблему, а затем записать решение одной строкой кода за несколько секунд. Приучайте себя не спешить и подольше думать, когда что-то непонятно. 

Вторая причина — эффект Даннинга-Крюгера. Когда человек попадает в новую область, от быстро обрастает базовыми знаниями. Если проследить за новичком, незнакомым с фронтендом, то через пару месяцев он способен разработать простой сайт с помощью HTML, CSS и некоторых JS-элементов. Это огромный прогресс, поскольку раньше он находился на нулевом уровне и вообще ничего не умел. 

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

Если хватит терпения выбраться из «Долины Отчаяния», открывается второе дыхание — обучение вновь начнет приносить удовольствие. Чтобы это сделать, нужно переключить внимание с теории на практику. И хорошо бы найти наставника.

Кривая Даннинга-Крюгера: в «Долине Отчаяния» новички чаще всего перестают верить в себя и бросают обучение. Если вас когда-либо посетят подобные мысли — помните, что после «Долины Отчаяния» все наладиться. Нужно немного потерпеть 

Как это выглядит на практике

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

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

Для примера:

❌ Стандартный калькулятор, как на любом компьютере или смартфоне. 

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

❌ Telegram-бот — медицинский справочник. Вводите название болезни и узнает, что это. 

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

❌ Типичный трекер задач со списками и календарем. 

✅ Трекер задач с привязкой к вашей банковской карте. Не завершите дела в срок — трекер переведет какую-то сумму на депозит-копилку или порадует вашего друга.

Алгоритм, который поможет определить стек технологий вашего проекта 
  1. Проанализируйте рынок вакансий и выпишите требования к middle-специалистам по вашему языку программирования. Позиции джунов не рассматривайте, чтобы при трудоустройстве иметь преимущество перед другими кандидатами. 
  2. Посчитайте количество упоминаний каждой технологии в вакансиях. Популярные варианты вы должны отметить и использовать в одном или нескольких проектах. 
  3. Если встретите взаимоисключающие технологии — выбирайте ту, что больше распространена. Например, фронтенд-разработчик вместе с языком Java Script должен знать одну из библиотек: React, Angular или Vue.js. В нашем примере React — самая распространенная библиотека, ее стоит изучать всем, кто пока не определился с будущем местом работы. Или попробуйте разные технологии на разных проектах. 

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

Начинайте с идеи. Когда придумаете проект, подготовьте список технологий, которые нужно обязательно использовать. Если возможно — разработайте минимальную версию проекта с теми знаниями, которые вы успели накопить; или спроектируйте архитектуру. Затем последует длительный цикл: вы начнете программировать, столкнетесь с чем-то известным, будете искать недостающую информацию, пробовать снова и так по кругу. 

Когда освоил теорию и собрал портфолио, а работы все нет

Если человек преодолел две предыдущие стадии и не нашел работу, скорее всего, дело в психологии. Возможно, по каким-то причинам он боится посещать собеседования. Это можно попробовать объяснить феноменом (околонаучным), который называют «Принцип Питера»

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

По теме
«Собеседования похожи на свидания из Tinder». Опытный HR разобрал типичные ошибки кандидатов
«Собеседования похожи на свидания из Tinder». Опытный HR разобрал типичные ошибки кандидатов

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

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

Не уверены в знаниях — помните «Принцип Питера». Сомневайтесь, но за зарплату

Как это выглядит на практике

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

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

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

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

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

По теме
Кем быть в IT: коротко об инженерных профессиях в разработке
Кем быть в IT: коротко об инженерных профессиях в разработке

Что нужно запомнить

  1. Перед обучением сформулируйте внятную цель — причину, по которой вам нужно выучить программированием. Без цели мозг будет сопротивляться — он не захочет тратить ресурсы и формировать нейронные связи, если непонятно зачем это нужно.
  2. Взрослым сложно учиться из-за накопленного опыта. Чтобы этот опыт не мешал — удобно использовать две методологии: цикл Колба и контрольные точки. Первая позволяет быстро получить недостающий опыт и постепенно накопить знания; вторая контролирует прогресс и помогает не отступать от цели обучения. 
  3. Если человек только планирует обучение, то ему важно снизить уровень мотивации: нужно превратить обучение в рутину, настроиться на длительную подготовку и сформировать график. Нужно убрать неорганизованность и заниматься регулярно. 
  4. Если новичок закопался в теории, то ему важно вспомнить про цель обучения — трудоустройство. Нужно понять, какие технологии важны для работодателя и придумать под них проекты, которые можно добавить в портфолио. 
  5. Если человек хорошо знаком с теорией и обладает неплохим портфолио, то нужно переключиться на собеседования. Нужно преодолеть страх или дискомфорт общения с другими людьми и научиться принимать от них обратную связь. 
article widget img
«‎‎Главная ошибка собеса — подгонять ответы»‎. Рекрутеры рассказали о найме в IT
Откуда берутся IT-рекрутеры, с какими трудностями они сталкиваются в попытках закрыть позиции и какие ошибки сами совершают на интервью — полезно знать перед тем, как искать работу.
Телеграм-канал про Образо­вание, карьеру и жизнь в IT
Телеграм-канал про Образо­вание, карьеру и жизнь в IT

Читайте по теме

Как учиться
Как учиться
4

Как учиться

Как выбрать онлайн-курс, не бросить учебу и мотивировать себя
nerd head nerd letter

Мир содрогнулся, когда узнал, что читают разработчики по ночам...

Ничего криминального — только полезная еженедельная рассылка от Bubble. Тренды в айти, лайфхаки и советы экспертов.

Подписывайся!

Ты — котик! Проверяй почту
Нам нужен настоящий адрес эл. почты
Спецпредложения
Курсы со скидками для пользователей Bubble
Выбрать курс
Освоить за выходные
Экспресс-курсы программирования
Выбрать курс
Баг пофиксил
Курсы для QA-инженеров
Выбрать курс
Звездочка к резюме
Курсы по карьерному росту
Выбрать курс
Подписывайся на Bubble в соцсетях
Подписывайся на BUBBLE в социальных сетях
Телеграм-канал про Образование, карьеру и жизнь в IT
Только полезный контент и ничего лишнего.