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

Этап 1 — Новичок

В первые дни на рабочем месте мы все полны энтузиазма. В этот период вы совсем не ориентируетесь и просто не знаете, что делать. Как рыба без воды, вы не понимаете каждую строку кода. Doctype? А? Для чего вообще этот <div>? Первый этап пугает, выматывает нервы, но при этом захватывает. Сколько же, чёрт возьми, языков предстоит выучить?

Однако вашим величайшим преимуществом может быть то, что вы не знаете, насколько глубока вода(Примечание переводчика: оригинальный текст «you have no idea how deep the rabbit hole goes» отсылает к Алисе, падающей в бездонную кроличью нору в «Алисе в Стране чудес»). Изучение HTML — это лишь небольшой шаг вперёд.

Этап 2 — Первые шаги

Хотя это потребовало некоторых усилий, в конце концов вы накопили достаточно знаний, чтобы сделать первый шаг в мир программирования. Если первый этап был полностью состоянием растерянности: «Как мне / С чего начать?», то ко второму этапу вы начали постепенно выстраивать собственную систему навыков. Конечно, синтаксис CSS для определения стилей всё ещё незнаком вам, но, по крайней мере, вы можете изменять код в недавно купленном редакторе кода и видеть результат изменений в браузере. Это чудесное чувство!

Этап 3 — Крайняя фрустрация

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

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

Этап 4 — Момент просветления

Момент «просветления» — одно из лучших ощущений в мире: в одно мгновение, внезапно, вы «поняли» — «О-о-о, теперь я наконец понимаю». Лично я замечаю, что крупные прорывы в программировании обычно случаются ночью, когда другие крепко спят. После того как я прочитаю код восемь раз, то, что когда-то было неуловимым, становится хотя бы немного яснее.

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

Этап 5 — Хрупкий код

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

Но по крайней мере вы создаёте что-то настоящее. Пока что, пожалуйста, ограничьте свои пул-реквесты на GitHub написанием документации и исправлением опечаток. Не недооценивайте, насколько эти усилия могут помочь другим.

Этап 6 — Имитация

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

Этап 7 — Самодовольство

На этом этапе вы наконец начинаете попадать в ситуацию, когда: у вас, конечно, всё ещё огромный простор для совершенствования, но и ваша уверенность в себе быстро растёт — возможно, слишком быстро! Часто говорят, что в первые несколько лет вы ещё не способны осознать, насколько вы невежественны!

На этом этапе избегайте импульса становиться слишком высокомерным. Высокомерие никому не на пользу, и оно лишь заставит лучшую версию вас в будущем покачать головой, оглядываясь на прошлое. Когда вам захочется оставить саркастический комментарий на GitHub, Reddit или StackOverflow со словами «Чувак, научись программировать», не делайте этого. Совсем недавно вы сами были полным новичком. Пожалуйста, распространяйте позитивную энергию, а не унижайте других. Мы все на одной стороне, просто на разных этапах.

Этап 8 — Изучение Vim

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

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

Этап 9 — Когда код становится искусством

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

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

Этап 10 - Опытный

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

На этом этапе вы стали зрелым, вдумчивым разработчиком, с которым все хотят работать. Поздравляем!

Этап 11 - Рок-звезда

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

Другие называют вас рок-звездой или ниндзя, но вы ненавидите такие ярлыки. Вы знаете лучше всех — учёбе нет конца!

Источник: http://blog.jobbole.com/56252/