Мы этого вопроса частично касались выше. Путь предстоит неблизкий.

Какие стадии можно выделить?

Неродившийся программист.

Это человек, который только начал изучать программирование или планирует изучить. Мозг у него пока работает по старой схеме – не как у программиста. На этом этапе нужно больше охватывать из разных областей IT и повторять примеры из книг.

Junior-программист

Junior должен уметь делать все базовые операции. Знать их хорошо и воспроизводить в реальных задачах. Самый главный навык junior – это декомпозиция и алгоритмизация задачи. Что это значит?

Например, вам надо сделать кнопку Создать заказ. И вы начинаете создавать в голове схему этой процедуры:

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

Стать Junior можно буквально за 6 месяцев. Все это конечно субъективно, кто-то быстрее, кто-то медленнее – зависит от человека и интенсивности обучения.

Middle-программист

Middle может делать практически любые задачи. В отличие от Junior, он мало просит помощи извне. В случае проблем умеет быстро найти нужное решение проблемы в сети.

Junior и Middle не обязательно должны отличаться по ширине стека используемых технологий. Главное отличие – это автономность и меньше задержек на простые типовые проблемы.

Чтобы стать миддлом, необходимо набить достаточное большое количество шишек на лбу. Без большой практики здесь не обойтись. На мой взгляд, это может быть 2-3 года активной разработки.

Рекомендую вам вести лог своего развития как программиста – вы увидите что год назад вы принимали очень сомнительные решения в техническом плане. Особенно на начальных стадиях развития как специалист.

Senior-программист

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

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

Сеньором можно стать через 4-5 лет активной работы в сложных проектах. Если вы делаете простенькие однотипные сайты, это не в счет. Важно, чтобы у вас были новые сложные задачи, которые вы щелкаете как орешки.

Lead-программист

Этот специалист по сути является техническим лидером на проекте. Он решает куда мы движемся, что делаем и как делаем.

На мой взгляд, лид-программист должен забирать на себя часть функций по менеджменту проекта и наставничеству других программистов. Не зря же слово lead очень похоже на слово leader.

Потенциально даже Junior может быть при случае Lead программистом. Но в большинстве случаев конечно лучше ставить на эту позицию кого-то из людей поопытнее.

Главные требования к лид программисту – это опыт в выбранных решениях, а также взятие на себя ответственности за принятые технические решения.

Если у вас есть сеньор, который решает внедрять на сверх важный проект новую непроверенную технологию (или которую знает только он один) – это тревожный сигнал.

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

← Куда расти программисту Варианты профессионального роста программиста →