Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
maxvyaznikov
6 лет назад

Junior, Middle, Senior Developer: who is кто?

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

1515066058684.jpg

Речь о разделении их на Junior, Middle, Senior. Вообще-то мало кто расшифровывает эту градацию. В разных фирмах ответ на этот вопрос формулируется по-разному: кто-то опирается на опыт в годах, кто-то составляет список каверзных вопросов, кто-то смотрит на написанный исходный код и оценивает его стройность и минимализм. У меня же сформировалась следующая картина, включающая в себя два перпендикулярных вектора развития, пересекающихся в точке соприкосновения hard и soft skills.

Кто такой Junior Developer?

Junior - это тот, кто только-только начал ориентироваться (в языке или, может быть, в предметной области, в которой работает компания), поэтому ему говорят что делать и как это делать. Он задаёт вопросы «почему так, а не вот так?» и получает ответы (иногда ищет их сам). Если не задаёт, то это нехороший сигнал, так как он, скорее всего, делает не то, что нужно, а что-то другое. Для его работы должны быть готовы все необходимые каркасы, и практически всё, что он делает для остальных очевидно, либо почти не влияет на успех компании. Он с удовольствием фигачил бы код килобайтами, но пока много не знает/не понимает, поэтому основное время проводит в изучении: статей в интернете, мануалов по языку, чужого кода, ответов коллег на его вопросы.

Кто такой Middle Developer?

Middle хорошо ориентируется в языке и, может быть, в предметной области, в меру понимает употребляемый окружающими жаргон и может поддержать беседу, рассказать о том, что узнал про это в интернете или на конференциях. Поэтому самостоятельно решает как делать то, что ему говорят сделать, иногда оспаривая те или иные предложения и выдвигает свои. Он фигачит код килобайтами и даже мегабайтами и решает не только стоящие перед ним задачи, но и учится делать что-то неизвестное ранее. Порой даже уговаривает менеджеров соглашаться на нереальные сроки и работает по вечерам, лишь бы попробовать какую-то новую технологию/фреймворк/язык/etc. Любую задачу он стремится решить созданием нового проекта, не задумываясь о том, что до него кто-то уже решал подобную проблему (может быть даже и без программного обеспечения), и что собственный проект нужно будет поддерживать.

Кто такой Senior Developer?

Senior свободно ориентируется и в языке, и в предметной области, и в имеющемся в компании коде, вводит в обиход новые жаргонные словечки. Поэтому самостоятельно может решить что сделать и как, на основании целей и проблем, описанных руководством/заказчиком. Senior высочайшего уровня старается оставлять поиски на вопрос «Как?» за командой, так как сам знает ответ заранее, а предложенные варианты любит разбивать каверзными вопросами. Иногда отговаривает окружающих делать что-то, ради сфокусировки команды, себя и продукта на наиболее важных вещах. Основная масса кода, который значится за ним в репозиториях сделаны в одном их первых коммитов (проекта или нового модуля), и включает в себя создание каркаса для наполнения его силами Middle и Junior разработчиков. Он присматривает за тем, чтобы Junior'ы и Middle'ы действовали согласовано и трактовали заложенный в проект каркас так, как это подразумевалось. Отвечает на их вопросы, помогает быстрее находить нужный материал и рассказывает упущенное в документации. Это не значит, что в команде не может быть больше одного разработчика такого уровня. Просто обычно кто-то один берет на себя подобные функции, когда развитие команды складывается хаотично. Если же целенаправленно бороться с bus factor, то в команде растёт несколько Senior'ов, только чуть медленнее, зато веселее. Вряд ли Senior согласится назвать себя Senior’ом, пока его в этом не убедят. Так как понимает, что очень много ещё не знает, при этом темпы появления новых технологий высоки, а вот попробовать всё на практике не удаётся – это получалось только в ту пору, когда он был Middle’ом, а сейчас ему уже не позволяет совесть использовать неизведанное в критически важных частях системы. Поэтому перед каждым Senior’ом стоит сложная задача наладить процесс собственного совершенствования.

Командная работа

Мои личные наблюдения показывают несколько забавных вещей.

Если дать Junior'у создавать проект или компонент системы с нуля, то в нем будут лишь отрывки общепринятых шаблонов проектирования, употреблённых не к месту. При этом забыта обработка типичных ситуаций пользователя.

Если дать то же самое Middle'у, то получится огромное количество кода, разобраться в котором будет очень сложно. В зависимости от прокачанности Middle’а будет разниться процент того, что он упустил.

Если дать такую задачу команде Junior'ов, то кода получится много, они долго провозятся. Но результат будет примерно таким же, как из рук одного Middle'а. При этом они либо немного прокачают друг друг, либо разойдутся по углам и не будут разговаривать.

Если же отдать задачу в команду Middle'ов, то результат будет сравним с тем, что сделал бы Senior.

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

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

Надеюсь, мой взгляд пригодится и вам.

1
0.340 GOLOS
На Golos с January 2018
Комментарии (10)
Сортировать по:
Сначала старые