Дисклеймер
Чтобы советы из этой статьи принесли пользу, нужно небольшое предупреждение. Причина в мозге, который по своей природе сопротивляется бесполезной нагрузке. Ему нужна аргументированная причина, зачем выделять ресурсы на изучения программирования.
Возьмем человека, который хочет наладить питание ради укрепления здоровья — абстрактное желание без конкретной цели. Можно годами потреблять информацию, но придерживаться своего привычного вредного рациона. Поменяем контекст и предположим, что у этого же человека врачи диагностировали диабет. Если срочно не изменить питание, пациента ждут серьезные неприятности. Тут у мозга появляется внятная цель: понятно, что новая информация важна для здоровья. Человек концентрируется и легко переходит на новый рацион.
Рассмотрим другой пример. Предположим, хочется выучить английский язык для себя, просто чтобы знать. Проходит несколько лет, а знания на том же уровне, что и после школы. Поменяем контекст: переедем в англоязычную страну, денег всего на полгода, а для трудоустройства необходим английский. Снова у мозга есть цель, ради которой он готов сфокусироваться и впитывать информацию.
Когда человек пытается изучать программирование без внятной цели, происходит одно из двух: либо он начинает и вскоре бросает занятия, либо получает поверхностные знания, которые никому не нужны. Мозг сталкивается с ненужной информацией, не понимает зачем ее обрабатывает и переключает нервно-психическое напряжение на более значимую для себя цель. Из-за этого невозможно долго учиться с нужной интенсивностью и мотивацией.
Цель может быть любой: перспектива высокого заработка, желание переехать в новую страну или что угодно еще. Главное — выбрать то, чего вам действительно хочется достичь. Это проблема, с которой никто не может помочь, но если справитесь — мозг будет видеть в программирование ключ к желаемой цели. И перестанет сопротивляться учебе.
Почему наш мозг страдает, когда формирует новый навык
Следующие преграды в обучении: страх и ощущение безысходности, что не получится или придется страдать. С этим тоже можно бороться — дальнейший материал поможет во всем разобраться, преодолеть сложности и добраться до своей первой работы.
Представьте малыша, который учится говорить. Родители показывают ему картинки и просят озвучить изображенные там предметы. Допустим, он видит машину. Вот что при этом происходит (очень упрощенно):
- Ребенок видит рисунок, сигнал из зрительного центра поступает в память.
- Из памяти мозг извлекает информацию, что перед ним машина.
- Малыш вспоминает, что при виде похожего предмета родители произносили слово «машина».
- Мозг анализирует и решает, как воспроизвести похожие звуки.
- Включаются моторика и ребенок пробует произнести слово.
Если показать карточки с разными автомобилями много раз подряд, мозг приспособится. Количество шагов для решения задачи станет меньше. Визуальный образ свяжется с нужным словом: «Вижу машину — говорю машина». Процесс станет автоматическим и будет отнимать минимум энергии — так происходит формирование нейронных связей.
Пока между нейронами связь не устойчивая — мозгу энергозатратно передавать и передавать информацию, поэтому учиться сложно. Можно сказать, что мы всегда испытываем физический дискомфорт при освоении новой сложной информации.
👉 Исследование: механизм образования новых синапсов в мозге человека.
Модель Колба — проверенный метод обучения для взрослых
Смотреть видео и выполнять шаблонные задания из учебников — медленный и не самый эффективный способ обучения, если вы взрослый. Приходится пропускать через себя большие объемы теоретической информации, которую мозг не оценит — он просто не понимает, зачем в этом разбираться.
Чтобы наш интеллект осознал ценность информации — он должен применять ее на практике. Если знания нужны для проекта, это уже не абстрактная теория, которую можно проигнорировать. Плюс вы будете ошибаться и изучите материал с разных сторон: узнаете как правильно и увидите, когда что-то не работает. Чем больше проектов разной сложности выполните, тем быстрее сформируются нужные нейронные связи.
Учиться на практике можно по-разному, но проверенный способ — цикл Колба или модель контролируемой ошибки. Суть: вы работаете над проектом в четыре этапа, ошибаетесь, получаете обратную связь и так постепенно накапливаете нужные знания:
- Получения конкретного опыта. Вы сразу начинаете действовать в новой ситуации и не переживаете за допущенные ошибки. Мозг включается в обучение.
- Наблюдение и рефлексия. Мозг получил первый опыт и теперь должен проанализировать полученную информацию и дополнить ее новыми сведениями: можно понаблюдать за другими людьми, пройти курс, найти наставника или что-то еще. На этом этапе важно получить максимум данных из разных источников.
- Теоретическое обобщение. Если после предыдущего этапа мозг не пришел к нужным выводам, — можно добавить теории. Справочники и литература в помощь.
- Применение. После предыдущего этапа вы должны были изучить всю нужную информацию, которую нужно подкрепить практическим заданием по теме.
Представьте, что вы купили видеокамеру и хотите научиться ей пользоваться. Обучение по циклу Колба будет выглядеть так:
-
- Пробуете снять первый ролик без инструкции, как получится.
- Если удалось что-то записать, пытаетесь разобраться: на какую кнопку нажали, какие настройки использовали.
- Если запись не получилась или вышла некачественной, изучаете инструкцию и пытаетесь понять, что было не так.
- Последний шаг: вы заново переснимаете видеоролик с нужными настройками, опираясь на те знания, которые получили на предыдущих этапах. Ролик записан!
Контрольные точки — способ не утонуть в информации
Используя метод Колба, можно выполнять проекты и закреплять нужные нейронные связи. Однако программирование — слишком объемная сфера. Требуется механизм, который поможет не запутаться в информации. Этот механизм — контрольные точки, промежуточные результаты на пути к цели. Двигаясь по ним, вы не будете тратить время на материал и проекты, которые не приближают вас к трудоустройству.
Каждый новичок должен сам решить, на какие контрольные точки ориентироваться. Главный фактор — уровень подготовки, который удалось накопить до начала обучения:
- 1 уровень. Человек только планирует изучать программирование, возможно прошел пару уроков. На этом уровне контрольные точки должны помочь разобраться с организационными вопросами и приспособить мозг к регулярному обучению.
- 2 уровень. Человек активно учиться, изучает теорию и сталкивается с первыми трудностями. Здесь контрольные точки стимулируют фокус на практике.
- 3 уровень. Человек хорошо знает теорию, выполнил много учебных проектов, но до сих пор не смог получить работу. На этом уровне контрольные точки направлены на посещение собеседований, отработку обратной связи и трудоустройство.
Как изучать программирование новичку, который только планирует учиться
Когда человек решает стать программистом, большинство его переживаний связано с неопределенностью: непонятно с чего начать и как во всем разобраться. Страх провала стимулирует усердней учиться ради быстрых результатов. Но в этом есть проблема, поскольку по закону Йеркса-Додсона высокая мотивация вредит прогрессу:
- Новичок берется за обучение в надежде, что через пару месяцев сменит профессию. Он ожидает, что новые знания даются легко. Это, как правило, результат внешнего влияния — рекламы, статей, маркетинга онлайн-школ и прочих информационных факторов.
- Далее человек пробует учиться и сталкивается с реальностью — узнать нужно много, легко не будет. Возникает разочарование, поскольку поглощение информации не дает результат.
- Приходят мысли, что программирование — для избранных. Из-за подобных сомнений новички часто остаются недоучками, прекратив развитие на начальном уровне обучения.
Возьмем этого же человека и представим, что он с самого начала приготовился к продолжительной монотонной учебе — вместо спринта настроился на марафон. У него нет особой мотивации и желания побыстрее что-то кодить. Он понимает, что цель далеко и придется накопить множество знаний, чтобы к ней приблизиться. Это достижимо, но придется регулярно занимаются и по частям впитывать информацию.
Как это выглядит на практике
Чтобы превратить обучение в рутину, важно исключить неорганизованность. У вас не должно быть ситуаций, когда месяцами мечешься в поисках оптимального языка программирования или не можешь решить: поехать на дачу или выделить час на учебу.
Не выйдет продуктивно и регулярно учиться, пока вы не проработаете расписание и не уберете отвлекающие факторы. Нужно знать, по каким дням, в какое время и как долго будете заниматься, что будете изучать и о чем следующее занятие. Ответы на подобные вопросы — это контрольные точки, которые вам нужно пройти на первом этапе. Постарайтесь учесть все, что может отвлечь или навредить обучению.
Чтобы начать, придумайте и запишите любой план, по которому вы можете уже завтра сесть за изучение программирование. Выделите на занятия сколько угодно времени и добавьте в список любые темы. Вот пример: вы решили каждый день вставать в четыре утра и по три часа изучать Python. Отлично! Попробуйте следовать этому расписанию неделю и посмотрите, что получается. Если все устраивает, продолжайте. Если сложно или неудобно — вносите корректировки и снова пробуйте.
Организационных моментов много, поэтому старайтесь выделять на одну контрольную точку не больше недели. Например, в первую неделю вы сравниваете и выбираете язык программирования. Во вторую — подбираете оптимальное время для учебы. В третью неделю экспериментируете с длительностью учебного сеанса, и так далее. Конечная цель: разобраться с организационными моментами и хотя бы месяц не менять расписание.
Как изучать программирование, если закопался в теории
Когда долго сидишь над теорией, в какой-то момент накапливается много вопросов и может возникнуть ощущение, что программирование — для избранных. Ситуация усугубляется, если отвлекаться на организационные вопросы или ставить перед собой абстрактные необъятные цели. Например, выучить какой-то язык программирования полностью. От этого не хочется переходить к практике, пока не закончишь с теорией.
У психологов есть по крайней мере два объяснения, почему взрослый человек может не верить в собственные силы. Первое связано со школой и уроками по 45 минут. Мы привыкаем, что задача должна решаться за относительно короткое время, а если это не так — начинаем тревожится. В программирование время — относительная величина. Можно пару дней изучать проблему, а затем записать решение одной строкой кода за несколько секунд. Приучайте себя не спешить и подольше думать, когда что-то непонятно.
Вторая причина — эффект Даннинга-Крюгера. Когда человек попадает в новую область, от быстро обрастает базовыми знаниями. Если проследить за новичком, незнакомым с фронтендом, то через пару месяцев он способен разработать простой сайт с помощью HTML, CSS и некоторых JS-элементов. Это огромный прогресс, поскольку раньше он находился на нулевом уровне и вообще ничего не умел.
Но вместе с прогрессом в обучении у новичков растет и уверенность в своей компетенции. Это состояние называется «Пиком Глупости». Человеку кажется что он много знает, но объективно это не так. Со временем он это осознает и попадает в «Долину Отчаяния» — следующий этап обучения, где ждет множество вопросов, ошибок и непонимания. На этом этапе уверенность падает, а с ней — пропадает и мотивация дальше учиться.
Если хватит терпения выбраться из «Долины Отчаяния», открывается второе дыхание — обучение вновь начнет приносить удовольствие. Чтобы это сделать, нужно переключить внимание с теории на практику. И хорошо бы найти наставника.
Как это выглядит на практике
Чтобы наработаться опыта, недостаточно взять пример из учебника и по шагам повторить за автором. Проект должен быть таким, где вы не знакомы с большей частью технологий, с которыми придется работать. Достаточно примерно представлять, что и как делать, но как это будет работать — придется разбираться в процессе.
Еще одно требование: ваш проект должен быть кому-то нужен. Необязательно приносить прибыль — важно, чтобы хоть кто-то хотел им воспользоваться.
Для примера:
❌ Стандартный калькулятор, как на любом компьютере или смартфоне.
✅ Умный калькулятор, который выполняет сложные или необычные вычисления. Например, считает смету и подбирает список магазинов, где дешевле закупиться.
❌ Telegram-бот — медицинский справочник. Вводите название болезни и узнает, что это.
✅ Telegram-бот, который по названию болезни подберет подходящего врача в вашем городе или запишет на консультацию к семейному доктору.
❌ Типичный трекер задач со списками и календарем.
✅ Трекер задач с привязкой к вашей банковской карте. Не завершите дела в срок — трекер переведет какую-то сумму на депозит-копилку или порадует вашего друга.
Один выполненный проект — одна контрольная точка. Цель: добавить в проект столько элементов с разными технологиями, чтобы претендовать на большинство вакансий. При этом желательно, чтобы один проект вы были в состоянии выполнить в одиночку, за пару месяцев. Также важно, чтобы каждый новый проект был чем-то сложнее предыдущего.
Начинайте с идеи. Когда придумаете проект, подготовьте список технологий, которые нужно обязательно использовать. Если возможно — разработайте минимальную версию проекта с теми знаниями, которые вы успели накопить; или спроектируйте архитектуру. Затем последует длительный цикл: вы начнете программировать, столкнетесь с чем-то известным, будете искать недостающую информацию, пробовать снова и так по кругу.
Когда освоил теорию и собрал портфолио, а работы все нет
Если человек преодолел две предыдущие стадии и не нашел работу, скорее всего, дело в психологии. Возможно, по каким-то причинам он боится посещать собеседования. Это можно попробовать объяснить феноменом (околонаучным), который называют «Принцип Питера».
Смысл в том, что больших иерархических системах люди постоянно растут в должности, пока не окажутся некомпетентными. В случае с учебой — пока не затронут те темы, которые будут им непонятны, несмотря на ранее приобретенный опыт. Проще говоря: чем больше мы учимся и узнаем, тем больше становится непонятно.
Последствия эффекта: человек застревает на должности и не получает повышения, а в случае с обучением — бросает программирование и считает, что зря потратил время.
Если удалось трудоустроиться, влияние эффекта не выглядит критическим: ну нет больше повышения, зато есть стабильная зарплата. А вот в случае с обучением, новичок вложил много сил и не получил отдачи. Выход из ситуации: смена иерархической системы. Можно сколько угодно повышать квалификацию и считать ее недостаточной, но делать это нужно там, где за это готовы платить. Так что заставьте себя посещать собеседования.
Как это выглядит на практике
У программистов популярны две тактики прохождения собеседований. Первая — качественная, когда вы выбираете конкретную компанию и готовитесь к собеседованию по ее стандартам. Вторая тактика — количественная, когда не привязываетесь к одной компании и готовы работать там, где лучше условия.
Первая тактика больше подходит для опытных разработчиков, которые понимают, чего ожидать от собеседований. Качественная подготовка предполагает погружение в нюансы: кто будет проводить интервью, какие вопросы обычно задают кандидатам на указанную должность, чем занимается компания, какие у нее ценности и так далее. А еще нужно быть готовым уделить достаточно времени на выполнение тестового задания и не удивляться, если интервьюер предложит невыгодный оффер — кандидат стремится попасть в компанию, на нем можно попробовать сэкономить. Программисты с опытом знают, как это преодолеть.
Из-за стресса и неуверенности в знаниях, новичку сложно с первого раза пройти собеседование. Приходится брать количеством и действовать по второй тактике. Нужно заранее поставить цель. Например, пройти минимум 30 собеседований и не расстраиваться, пока не наберете нужное количество попыток. В этом случае каждая ваша попытка — это одна контрольная точка. Настраиваясь на длинную дистанцию, вы снимаете напряжение. И знаете, что в случае отказа впереди ждет новая попытка.
Вы сможете по-настоящему провалить собеседование только в одном случае — если совсем не придете на него. Ведь новичок не способен самостоятельно оценить, достаточно ли его знаний для работы. А после собеседования, при любом исходе вы останетесь в выигрыше: получите приглашение на работу или узнаете, каких знаний не хватает.
Что нужно запомнить
- Перед обучением сформулируйте внятную цель — причину, по которой вам нужно выучить программированием. Без цели мозг будет сопротивляться — он не захочет тратить ресурсы и формировать нейронные связи, если непонятно зачем это нужно.
- Взрослым сложно учиться из-за накопленного опыта. Чтобы этот опыт не мешал — удобно использовать две методологии: цикл Колба и контрольные точки. Первая позволяет быстро получить недостающий опыт и постепенно накопить знания; вторая контролирует прогресс и помогает не отступать от цели обучения.
- Если человек только планирует обучение, то ему важно снизить уровень мотивации: нужно превратить обучение в рутину, настроиться на длительную подготовку и сформировать график. Нужно убрать неорганизованность и заниматься регулярно.
- Если новичок закопался в теории, то ему важно вспомнить про цель обучения — трудоустройство. Нужно понять, какие технологии важны для работодателя и придумать под них проекты, которые можно добавить в портфолио.
- Если человек хорошо знаком с теорией и обладает неплохим портфолио, то нужно переключиться на собеседования. Нужно преодолеть страх или дискомфорт общения с другими людьми и научиться принимать от них обратную связь.