Есть несколько уровней синьорности разработчиков – Junior, Middle, Senior, Team Lead. Чем они отличаются, за что каждый из них отвечает, и на какую работу можно рассчитывать на каждом уровне синиорности?
Во многих случаях все эти уровни рисуются с потолка, руководством или специально обученными людьми. Но при этом существуют какие-то общепринятые стандарты отрасли, давайте по ним пройдемся.
Что должен уметь Junior?
- 1. Знать минимум один язык программирования и разбираться в своей профессии.
- 2. Без контроля выполнить несложную техническую задачу от начала и до конца. Например, сделать так, чтобы при нажатии кнопки выполнялась определенная операция, написать метод или класс.
Нет, отсутствие контроля не отменяет обращение за помощью к синиорным товарищам. Например, если нужно обратиться к некоему файлу, а он отсутствует – что делать? Но все же с простейшими заданиями джуниор должен справляться самостоятельно, а не бегать советоваться с каждой строчкой. Потому что Junior Developer – тоже девелопер. Программировать надо уметь.
При этом джуниору нельзя поставить задачу «Выясни, как тут лучше построить архитектуру» или «Разберись, что хочет заказчик». Это работа миддла.
Что должен уметь Middle?
- 1. Решать более общие задачи, поставленные на уровне бизнеса. Самостоятельно определять, как реализовать определенный функционал, уточнять детали у заказчика и предыдущих разработчиков.
- 2. Менторить джунов, объяснять им непонятные вещи.
Что должен уметь Senior?
- 1. Слышать и понимать business value задачи – зачем это все делается. Сеньор должен выслушать заказчика и понять, какое решение тому нужно. Может предложить более простое решение. Или не делать это вообще, потому что эта функция в системе уже есть. Или организовать решение административным способом.
- 2. Отвечать за других разработчиков. Организовать мини-группу из других разработчиков и скоординировать их работу.
- 3. При отсутствии тим лида синиорный человек может организовать нескольких разработчиков и их скоординировать.
Что должен уметь Team Lead?
- 1. Координировать и управлять своей командой, чтобы она работала как единое целое.
- 2. Определять техническое решение – сам или с помощью архитектора.
- 3. Отвечать перед заказчиком за реализацию решения.
Позвольте, — скажете вы, — но ведь за это отвечает Прожект Менеджер! И да, и нет. ПМ отвечает за реализацию технической стороны проекта. А вот тимлид ответственен перед заказчиком за то, чтобы разработка выполняла оговоренные функции и решала указанные бизнес-задачи.
Как же получается, что человек не обладает этими навыками, но при этом числится Senior или Team Lead?
Очень просто. Есть такое понятие «маржинальность разработчика». У синиоров и тим лидов выше зарплата, поэтому их выгоднее продавать на аутстаффе. Поэтому многие компании правдами и неправдами стремятся натянуть своим разработчикам грейд, чтобы продать их подороже. Но так делать нехорошо, конечно же!