Упрощенно различие между уровнями разработчиков можно описать так:
Junior — совсем новичок, может мало и часто с чужой помощью;
Middle может многое и сам;
Senior помогает всем, руководит или является гуру в одной из сфер.
Кроме способности решать задачи, в разработчике для нас важны знания и вовлеченность в жизнь команды и продукта.
Конкретное наполнение уровней зависит от стека технологий, который используется в компании. Обычно
Junior разработчик — вчерашний студент или даже школьник, имеющий случайный набор начальных навыков, который мы сочли достаточным, чтобы дать человеку шанс. Готов выслушивать критику и много учиться.
Middle разработчик — вчерашний Junior, успешно освоивший весь стек технологий, используемый командой. Он уверенно, самостоятельно и в срок решает небольшие задачи/баги. Высказывает полезные замечания при просмотре чужого кода.
Senior разработчик — ментор, наставник. Ему можно поручить новый продукт или направление. Он уже руководит подразделением (Тимлид) или является очень крутым разработчиком. Он понимает, для кого делается тот или иной продукт. Кто, что и как должен делать.
Внутри этих понятий тоже есть разделение. Кроме Junior, есть Junior+ и Junior++. Аналогично с Middle, а с Senior — нет. Senior он есть, и все. «Он крут! Сам все решает и делает. Имеет авторитет в команде и вне» — так закреплено у нас. Мы ориентируемся на эти уровни при поиске новых программистов и для работы с теми, кто уже в команде. Глядя на требования — а они зафиксированы и открыты, — сотрудники понимают, в какую сторону «копать», чтобы вырасти. Это что-то вроде OKR (Objectives and Key Results).
Как происходит переход между уровнями? Первая оценка идет на собеседовании, далее — каждые полгода. Разработчик и его тимлид (или ментор) встречаются и определяют цели (те самые OKR), которые сотрудник должен достичь для повышения (или смотрят, достиг ли он поставленных ранее целей). Вырос Junior или нет, решает ментор и тимлид. Решение о переходе с уровня Middle на Senior принимает СТО. Предусмотрено также, что в этом могут участвовать и другие разработчики уровня Senior: один из них выдвигает коллегу, а окончательное решение принимают расширенным составом.
Примерно так