Сегодня количество желающих переквалифицироваться в программисты растет по экспоненте. Но так ли это просто? Кэйт Рэй, создательница конструктора веб-страниц scroll kit, который недавно купил WordPress, обратилась ко всем энтузиастам с единственным посылом: не верьте тем, кто говорит, что научиться кодить легко! Это скучный, разочаровывающий процесс. И жизнь программиста не так прекрасна, как ее малюют. Ощущение собственной некомпетентности, а порой даже тупости – перманентное состояние, с которым придется смириться. А для тех, кто все-таки готов погрузиться в пучину отчаяния под названием “программирование”, Кэйт сформулировала “рекурсивный” метод обучения, состоящий из семи шагов. Или стадий.
“Я видела много ужасных вещей, которые случаются с людьми, начавшими изучать программирование. И самое страшное – это когда им говорят, что научиться кодить легко. Когда вы слышите это, с вашим мозгом происходит нечто подобное:
Для того, чтобы уметь программировать, не нужно обладать особыми свойствами мозга, просто сам процесс намного более разочаровывающий и прозаичный, нежели об этом говорят. Существует множество восторженных блогов, курсов и сайтов, которые пытаются пробудить в людях непреодолимое желание научиться программировать. Но они почему-то умалчивают о том, какая это скука – заниматься настройкой своей среды (имейте ввиду, даже знакомые прожженные программисты с этим вам не помогут, потому что это невероятно нудный и сложный процесс, да и никто из них уже не помнит, как это делается).
Энтузиасты не расскажут вам, что львиная доля в программировании приходится на умение задавать Google правильные вопросы и понимание того, какой участок кода лучше скопипастить. И еще они не посвящают вас в величайший секрет: нет предела совершенству, не существует наивысшего уровня. Ощущение себя недоразвитым и тупым – это не то, что нужно научиться преодолевать, а то, с чем нужно учиться жить. Это перманентное состояние.
Этой зимой черт меня дернул изучить iOS. Летом, сразу после окончания колледжа, я самостоятельно научилась программировать, и была уверена, что осилю любой язык. Я забыла, как это тяжело. Преодолев свое возмущение по поводу простоты Xcode (раскадровка выглядит так, как будто это не настоящее программирование, а детская игра), я ввязалась в ряд проектов, которые оказались для меня слишком крутыми. Оказалось, что iOS очень сильно отличается от веб-программирования. Все, что, как я предполагала, должно быть сложным, оказалось простым, а то, что должно быть простым – оказалось сложным. Я была очень нетерпелива по отношению к самой себе, и сама себя сильно раздражала.
Я забыла очень важную истину: самое привычное состояние для программиста – это ощущение собственной неадекватности. В мире программирования все то, что нужно изучить, ничем не ограничено – это бесконечная область знаний. Вы можете быть гуру какого-то языка или фреймворка, но если вы хотите, что называется, делать вещи, вам придется постоянно изучать новые инструменты и сомневаться в собственной компетентности. Заранее приготовьтесь постоянно чувствовать себя тупыми – это помогает.
Психолог Михай Чиксентмихайи придумал гениальную визуализацию того, как происходит процесс обучения (не только в программировании, а вообще в любой дисциплине):
Я обнаружила, что этот пример очень четко отражает то, через что я прошла, и придумала свой собственный рекурсивный рецепт обучения программированию.
- Оптимизм. Если вы не всегда понимаете, что вы делаете, просто последовательно шаг за шагом выполняйте инструкции из учебника. Вы получите представление о том, как выглядит процесс написания кода на вашем языке/фреймворке. Эта часть может быть простой и скучной, потому что вы просто выполняете то, что вам говорят.
- Неуверенность. Постройте заново то, что вы только что сделали, или нечто очень похожее. Старайтесь как можно реже заглядывать в учебник. Осознайте, как мало вы поняли из того, что сделали.
- Отчаяние. Постарайтесь построить нечто очень простое, такое, что вам действительно хочется построить. Осознайте, что вы вообще понятия не имеете, как это сделать.
- Воодушевление. Найдите методичку о том, как сделать то, что вы хотите сделать. К счастью, эти методички часто повышают понимание языка, который вы изучаете. Выполните инструкции шаг за шагом.
- Страх. Переделайте все с нуля самостоятельно.
- Более глубокое отчаяние. Начните новый проект.
- Принятие. Повторяйте шаги от 1 до 6.
Я сама – большой фанат учебников. В процессе самообучения, я создала сайт с коллекцией полезных методичек, рекомендованных программистами, которые сами их использовали. Надеюсь, он сократит период “зависания” и приблизит вас к моменту, когда вы почувствуете азарт и научитесь быстрее находить полезные материалы.
Пока вы учитесь преодолевать разочарование, вы незаметно привыкаете к самому процессу и тренируетесь писать код. Смиритесь с тем, что вы никогда не будете понимать все, что делаете. Поверьте, ваши навыки совершенствуются даже несмотря на то, что вы этого не ощущаете. И главное, не суетитесь. Все будет хорошо”.