Профессиональный рост программистов (junior, middle, senior, …)

Уже скоро будет московский Teamlead Conf 2020, на котором я буду рассказывать про основы менеджмента для технарей в докладе “SOLID’ный тимлид”. Поэтому в преддверии этого выступления я решил рассказать про профессиональный рост программистов или какие ступеньки есть до позиции team или tech лида.

Junior

Эта позиция является начальной для всей ветки, но уже здесь желательно, чтобы претендент соответствовал следующим условиям:

  • познакомился с понятием алгоритм
  • изучил основные структуры данных
  • познакомился с одним из языков программирования
  • заразился интересом к программированию

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

Особенностью junior разработчика является то, что у него обычно нет опыта промышленной разработки в команде, поэтому:

  • требуется разработать план развития как специалиста с
    - командной точки зрения (процесс работы над задачами, взаимодействие в команде и т.д.)
    - технической точки зрения (это зависит от стека, который используется в команде)
  • выделять время куратора для
    - подбора подходящих задачек (не слишком сложных и подходящих под план развития)
    - контроля их выполнения
    - ответов на “глупые” вопросы
  • контролировать темпы роста джуниора, чтобы вовремя перевести его на позицию middle-разработчика пока его не сманили конкуренты

Junior developer не является полноценно боеспособной единицей как с точки зрения знаний/опыта, так и с точки зрения ответственности. Он сильно зависит от команды, а также того количества времени, что выделяется на его обучение. Необходимое, но недостаточное условие для занятия данной должности — это обучаемость. Для успешной работы и обучения кандидата необходимы короткие циклы обратной связи, которые обеспечивает прикрепленный к нему наставник.

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

Соискателю стоит идти на позицию junior developer в область, к которой есть интерес и в компанию, которая славится своими процессами разработки и где есть сильные специалисты — будет чему поучиться.

Если джуниор

  • перестал отнимать время у наставника и членов команды
  • успешно решает задачи объемом около 1–2 дней
  • систематически подходит к работе

то он хорошо справляется и приближается к следующему уровню

Middle

Дальше идет позиция middle developer, который обычно получается из junior после 1–2 лет опыта промышленной разработки в команде сильных специалистов. Помимо, требований к junior разработчику желательно, чтобы они удовлетворяли следующим условиям:

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

Обычно сотрудники этого уровня составляют основу команд.

Особенностями разработчика на данной позиции является то, что:

  • обычно они составляют основу команды и выполняют задачи, которыми забит бэклог, не слишком сложные и интересные, но крайне полезные для бизнеса
  • они почти всегда смогут сделать такие задачи (но не всегда в рамках архитектуры, которую закладывал лид/архитектор, что иногда выясняется только на review)
  • их знания в основном сконцентрированы вокруг самого процесса написания кода, смежные части являются terra incognito (devops инженерия, системный анализ, quality assurance и т.д.)
  • зачастую их знания в программировании ограничены стэком, который используется в компании
  • обычно они используют стиль разработки “на языке”, а не “с использованием языка” — смотри книгу “Clean Code” (“Чистый код”) Роберта Мартина

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

Работодателю найм middle developer позволяет решить текущие проблемы в достаточно простых и понятных проектах. Кроме того, если в компании правильно выстроен процесс обучения и удержания специалистов, то можно рассчитывать за 1–2 года получить ведущих разработчиков

Соискателю стоит идти в компанию, которая имеет отлаженные процессы разработки и в команду или на проект, в котором есть интересные задачи, которые способствуют росту

Если middle developer

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

то он хорошо справляется и приближается к следующему уровню

Senior

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

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

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

Это финальная точка перед развилкой, которая зачастую пугает людей. Причем по умолчанию, если надолго зависнуть в этом состоянии, то

  • senior developer получит людей в помощь, станет отвечать за них и перейдет к роли teamlead
  • senior developer будет дальше отказываться от помощи и уйдет в технические дебри и придет к роли techlead

Работодателю набор ведущих разработчиков позволяет заткнуть дыру в проекте или стартовать новый, а если правильно выстроен процесс работы, то можно рассчитывать за 1–2 года получить teamlead или techlead

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

Что дальше?

Про рост на позицию тимлида я уже писал в статье “Как стать тимлидом?”, а техлиды часто работают в платформенных командах, о которых я писал в статье “Платформенные команды — что это такое и зачем они нужны”, которую написал по результатам круглого стола на Techlead Conf 2020.

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.