Сегодня количество желающих переквалифицироваться в программисты растет по экспоненте. Но так ли это просто? Кэйт Рэй, создательница конструктора веб-страниц scroll kit, который недавно купил WordPress, обратилась ко всем энтузиастам с единственным посылом: не верьте тем, кто говорит, что научиться кодить легко! Это скучный, разочаровывающий процесс. И жизнь программиста не так прекрасна, как ее малюют. Ощущение собственной некомпетентности, а порой даже тупости – перманентное состояние, с которым придется смириться. А для тех, кто все-таки готов погрузиться в пучину отчаяния под названием “программирование”, Кэйт сформулировала “рекурсивный” метод обучения, состоящий из семи шагов. Или стадий.

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

Это я сама нарисовала (у меня лучше получается кодить, чем рисовать)

Это я сама нарисовала (у меня лучше получается кодить, чем рисовать)

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

Энтузиасты не расскажут вам, что львиная доля в программировании приходится на умение задавать Google правильные вопросы и понимание того, какой участок кода лучше скопипастить. И еще они не посвящают вас в величайший секрет: нет предела совершенству, не существует наивысшего уровня. Ощущение себя недоразвитым и тупым – это не то, что нужно научиться преодолевать, а то, с чем нужно учиться жить. Это перманентное состояние.

Этой зимой черт меня дернул изучить iOS. Летом, сразу после окончания колледжа, я самостоятельно научилась программировать, и была уверена, что осилю любой язык. Я забыла, как это тяжело. Преодолев свое возмущение по поводу простоты Xcode (раскадровка выглядит так, как будто это не настоящее программирование, а детская игра), я ввязалась в ряд проектов, которые оказались для меня слишком крутыми. Оказалось, что iOS очень сильно отличается от веб-программирования. Все, что, как я предполагала, должно быть сложным, оказалось простым, а то, что должно быть простым – оказалось сложным. Я была очень нетерпелива по отношению к самой себе, и сама себя сильно раздражала.

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

Психолог Михай Чиксентмихайи придумал гениальную визуализацию того, как происходит процесс обучения (не только в программировании, а вообще в любой дисциплине):

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

  1. Оптимизм. Если вы не всегда понимаете, что вы делаете, просто последовательно шаг за шагом выполняйте инструкции из учебника. Вы получите представление о том, как выглядит процесс написания кода на вашем языке/фреймворке. Эта часть может быть простой и скучной, потому что вы просто выполняете то, что вам говорят.
  2. Неуверенность. Постройте заново то, что вы только что сделали, или нечто очень похожее. Старайтесь как можно реже заглядывать в учебник. Осознайте, как мало вы поняли из того, что сделали.
  3. Отчаяние. Постарайтесь построить нечто очень простое, такое, что вам действительно хочется построить. Осознайте, что вы вообще понятия не имеете, как это сделать.
  4. Воодушевление. Найдите методичку о том, как сделать то, что вы хотите сделать. К счастью, эти методички часто повышают понимание языка, который вы изучаете. Выполните инструкции шаг за шагом.
  5. Страх. Переделайте все с нуля самостоятельно.
  6. Более глубокое отчаяние. Начните новый проект.
  7. Принятие. Повторяйте шаги от 1 до 6.

Я сама – большой фанат учебников. В процессе самообучения, я создала сайт с коллекцией полезных методичек, рекомендованных программистами, которые сами их использовали. Надеюсь, он сократит период “зависания” и приблизит вас к моменту, когда вы почувствуете азарт и научитесь быстрее находить полезные материалы.

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