Уровни программистов: чем junior отличается от middle, senior и lead

Уровни программистов: чем junior отличается от middle, senior и lead Полезное

Уровень программиста (грейд) — это условное деление на junior, middle, senior и lead, которое компания использует, чтобы описать зону ответственности сотрудника: какие задачи ему можно доверить без постоянного контроля и за какой результат он отвечает. Единого стандарта грейдов в индустрии нет: в одной компании синьором назовут разработчика с двумя годами практики, в другой — только после пяти лет и прохождения комиссии. Поэтому в статье уровни разбираются не по стажу, а по трем проверяемым критериям.

Почему стаж не годится в качестве критерия

Годы в профессии — плохой ориентир. Человек может пять лет писать похожие CRUD-формы под присмотром и остаться миддлом по факту навыков, а другой — за два года пройти несколько разных проектов и дорасти до самостоятельной работы уровня синьора. Стаж легко указать в резюме, но он не показывает, что именно человек умеет делать один, без подсказок.

Из-за этого HR-разброс между компаниями большой: должность «senior» в одной команде может по требованиям соответствовать миддлу в другой. Ниже — три критерия, по которым грейд оценивают внутри команды, а не по формальному стажу.

Три критерия грейда

Проверяемых свойства три, и оценивают их вместе, а не по отдельности:

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

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

Junior: обучение под присмотром

Junior — начальный уровень. Ключевой признак не «мало опыта», а то, что задачи ему ставят декомпозированными: тимлид или более опытный коллега уже разбил крупную задачу на понятные шаги.

Джуниор обычно:

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

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

Middle: самостоятельная реализация

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

Признаки уровня middle:

  • берет задачу целиком (от анализа требований до тестирования) и доводит до готового результата;
  • пишет код, который проходит ревью без принципиальных архитектурных правок;
  • может оценить примерные сроки своей задачи и предупредить, если оценка меняется;
  • пока не отвечает за технические решения всего проекта — архитектурные развилки выносит на обсуждение с senior или lead.

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

Senior: полная ответственность за технический результат

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

Что отличает senior от middle:

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

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

Lead: ответственность за решения и за людей

Здесь термины часто путают, поэтому стоит развести их явно. Tech lead отвечает за техническое направление: он определяет архитектуру на уровне всего продукта, согласовывает решения между командами и следит, чтобы разные части системы не разъезжались по подходам. Team lead отвечает за людей: распределяет задачи, помогает с ростом джуниоров и мидлов, участвует в найме и оценке работы команды.

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

Таблица: уровень, что умеет, зона роста

Уровень Что умеет Зона роста
Junior Реализует декомпозированную задачу по готовому описанию, нуждается в регулярном ревью Разбивать задачу на этапы самостоятельно, задавать более точные уточняющие вопросы
Middle Берет задачу целиком, работает в рамках заданной архитектуры без пошагового контроля Видеть последствия решения для всего проекта, а не только для своей задачи
Senior Проектирует архитектуру модуля, отвечает за качество технического решения, обучает младших коллег Управление приоритетами нескольких команд, согласование решений на уровне продукта
Lead Отвечает за техническое направление (tech lead) или за людей и процессы в команде (team lead) Баланс между глубокой технической работой и управленческими задачами

Как перейти на следующий уровень

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

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

Выводы

  • Junior, middle, senior и lead различаются не годами стажа, а тремя критериями: самостоятельность, охват задач и ответственность.
  • Junior работает по декомпозированным задачам под регулярным ревью; middle берет задачу целиком в рамках готовой архитектуры.
  • Senior отвечает за архитектуру и качество технического решения в масштабе проекта, а не только за свой код.
  • Lead — отдельная роль: tech lead отвечает за технические решения продукта, team lead — за людей и процессы в команде.
  • Единого стандарта грейдов в индустрии нет, поэтому названия должностей стоит сверять с реальными обязанностями на конкретной вакансии.

Где применяется / связь с практикой

Освойте тему на практике

Понимание грейдов пригодится и на собеседовании, и при выборе, с чего начинать обучение. Если сейчас нет опыта в разработке вообще, разумная точка входа — язык, на котором проще всего перейти от синтаксиса к первым рабочим программам. Например, на курсе Python Basic разбирают основы языка и практику на задачах, которые дают понять, готовы ли вы к позиции junior, до того как выходить на реальные собеседования.

Освойте тему на практике

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

FAQ

Можно ли перескочить через уровень, например с junior сразу на senior?
Формально должность можно получить и без прохождения middle, но обычно для этого нужен опыт из другой области (например, тестирования или системного администрирования), который уже дал часть навыков самостоятельной работы. Без такого опыта резкий скачок редко проходит проверку на реальных задачах.

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

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

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)