Джун, сеньор и мидл: меняются ли с годами представления о грейдах разработчиков

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В чём принципиальное отличие джуна от мидла, а мидла от сеньора? На какие навыки поднажать, чтобы не задерживаться на одной ступеньке? Эти темы актуальны в ИТ-сообществе всегда. 

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

Немного официоза 

Хотя мы привыкли говорить о начинающих и опытных специалистах в бытовом ключе, в России существуют официальные документы, описывающие уровни квалификации разработчиков. Например, год назад Минтруд утвердил новый профстандарт «Программист». 

По мнению Кира Дергачева, руководителя разработки в Нетологии, новый профстандарт приближен к реальности: в описании функций используются общепринятые термины и упоминаются проектные работы. Перейти на следующий уровень квалификации можно за 3–12 месяцев.

Кир Дергачев

Руководитель разработки в Нетологии

В профстандарте основной рост идёт по траектории зоны ответственности. Junior (3-я категория) отвечает за небольшую единицу кода, вроде модуля системы, может её запустить, проверить работу. Он умеет применять алгоритмы для реализации описанных функций. Middle-разработчик (категории 4–5) пишет тесты, применяет шаблоны проектирования и выходит за рамки модулей, может базово проектировать их взаимодействие. Также в документе сделан акцент на коммуникацию с заказчиком, оценку сроков, — в общем, предсказуемость работы здесь важна. Уровень senior (6) уже включает как архитектурные инструменты, так и работу с командой.

Дальнейшее направление для профессионального развития разработчика можно найти в профстандартах «Архитектор программного обеспечения» и «Руководитель разработки программного обеспечения».

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

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

Качество кода и другие хард-скиллы

Пять лет назад Стивен Бёрнс, старший разработчик с опытом работы более 25 лет, довольно точно описал различия между кодом джуна и сеньора. 

Стивен Бёрнс

Разработчик в Magentus Practice Management

Код джуна

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

  • Это упрощённый код, который довольно легко читается при первой итерации. Не учитывает типичные сбои. К третьей или четвёртой итерации, особенно если команда разработчиков придерживается методологии Agile/Scrum, расшифровать код становится уже непросто. Обычно он всё ещё напоминает скрипт.

  • Если над фичей работало N джунов, возникает ощущение, что на самом деле над фичей работало >=N разработчиков: код часто оказывается разнородным. В нём просматривается эго каждого разработчика.

  • Изменения, вносимые в фичу (или рефакторинг кода), обычно приводят к обновлению и исправлению множества тестов.

Код сеньора

  • Код легко понять. Его легко читать, ведь сеньор знает, что бо́льшую часть времени разработчики занимаются именно чтением кода. Даже если над кодом работало несколько человек, кажется, что его написал один программист.

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

  • Код единообразный.

  • Код учитывает сценарии типичных сбоев. Например, в таком коде могут быть заложены проверка данных на входе и выходе, сценарии работы в случае краткосрочных сбоев в сети или базе данных, непредвиденных действий пользователя или сомнительных сторонних API. Суть в том, что прагматичный сеньор учитывает распространённые сбои, но не стремится изобрести палочку-выручалочку на все случаи жизни.

  • Если важна масштабируемость, код не слишком много взаимодействует с БД или сетью. 

  • Тестовый охват высокий, но не стопроцентный. Тесты помогают при рефакторинге и внесении изменений или расширении до актуальной реализации.

Автор цитаты — Джон Ф. Вудс
Автор цитаты — Джон Ф. Вудс

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

Шейн Штебнер

Главный инженер в Office Depot, LLC

Говорят, разработчики развиваются дугообразно, стартуя с самого простого кода.

  • Джуны начинают с простого кода, потому что никакого другого кода не знают. Долго пишут код, потому что постоянно ищут подходящие примеры, и переписывают написанное.

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

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

Давайте посмотрим более подробно, что имеет в виду Шейн.

У джунов часто получается разнородный код. Это не влияет на удобство использования, но это очевидный косяк. Они учатся так интенсивно, что не успевают выработать формат, которого хотели бы придерживаться. Повторяются, потому что не до конца восприняли идею повторного использования компонентов. Пишут всё в одном файле, потому что ещё недостаточно хорошо разобрались в объектно ориентированном программировании. Даже если джуны используют контроллер, как правило, они укладывают всю логику в один или два метода. То, что они создают, работает на первый взгляд, но не выдерживает вариаций входных данных. Их код не поддаётся изменениям: у джунов стандарты качества растут так быстро, что при каждом изменении приходится переписывать его заново. Они могут добиться кое-каких результатов, но часто пробуксовывают. Комментарии, которые джуны выдают, иногда ценные, а иногда бессмысленные. Они могут прокомментировать: /** Сохраните это */ $this->save; или /** Важно, потому что это предотвращает ошибку X */.

У опытных мидлов суперабстрактный код, до степени абстрагирования абстракций. Обычно они стремятся к повторному использованию любой мелочи, даже если её придётся использовать всего дважды. Стараются прокомментировать 100% фрагментов кода. Чтобы найти ошибку, готовы проштудировать 25 классов. Отлично справляются с отдельными задачами, но на целый проект у них уйдёт слишком много времени. А в коллективе зачастую они так заняты разговорами о соглашениях, плагинах и современных фреймворках, что работа вообще не движется. Сеньоры встречаются «в естественной среде обитания» довольно редко, так что мидлы чаще всего сталкиваются по работе с другими мидлами или джунами, и от этого им кажется, что они на вершине успеха.

У сеньора однородный, простой код, абстрактный в той мере, в какой это нужно для сопровождения кода. Возможно, глядя на такой код, мидл бы поворчал, но сеньор знает, что лучше не усложнять. Он решает поставленные задачи оптимальным образом. Добавляет блоки документации ко всем классам и методам, но ограничивается только полезными комментариями. Использует описательные понятные соглашения об именовании переменных, методов и классов. Понимает, что каждый файл, строка, символ — это ответственность, а быть кратким — это достоинство. Чем меньше кода, тем меньше объёмы тестирования, сопровождения, отладки, рефакторинга и переписывания.

Два года назад Скотт Биддл, старший разработчик с опытом работы более 20 лет, так описал разницу между джунами, мидлами и сеньорами:

Скотт Биддл

Старший дата-инженер в Acxiom

Самый доходчивый способ объяснить разницу — это посмотреть, какой вклад в работу вносят разработчики разных уровней.

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

Мидл автономен. Его начальник, тимлид или руководитель проекта может сказать: «Скотт, вот для тебя задачка». Мидлу дают ТЗ, ставят сроки, и он приступает к работе. Мидл вносит больший вклад, чем джун, и за редкими исключениями не отнимает время у других разработчиков.

Вклад сеньора куда заметнее. Ему говорят: «У нас тут задача, придумайте, как её решить», «Нам нужно перепроектировать и переделать крупную систему» или «Чтобы хоть что-то получилось, нужно руководить нашими джунами», — и сеньор просто идёт и делает всё это. Он вносит большой вклад, лично или с привлечением других сотрудников.

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

Софт-скиллы и сфера ответственности

Практически в каждой дискуссии о квалификации программиста рано или поздно поднимается тема софт-скиллов и зоны ответственности: чем выше квалификация разработчика, тем важнее в его работе навыки коммуникации и тем больше ответственности он на себя берёт. 

Jeanicka Rhey «How To Differentiate Junior and Senior Developers», Developer Nation
Jeanicka Rhey «How To Differentiate Junior and Senior Developers», Developer Nation

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

Маркус Мальберг

ИТ-архитектор в dacoso GmbH

По сути, всё сводится к перспективам и готовности принимать на себя ответственность, вне зависимости от организационной структуры компании.

Хотя статус сеньора связан с опытом работы, быть или не быть сеньором — это, скорее, состояние души. Я видел ребят, которые проработали всего пару лет, но они настоящие сеньоры, и тех, кто и после 20 лет не дорос до мидла.

А вот мнение сегодняшнего дня:

Павел Комягин

Тимлид разработки внутренних продуктов в Нетологии

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

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

А вот сеньор — это источник бесконечных вопросов в мире разработки. А зачем мы это делаем? А точно надо делать? А чего вы хотите добиться? А точно надо так? Смотрите, можно ещё вот так. Давайте выберем самое дешёвое или быстрое решение. А если к нему приходят с абстрактной проблемой, он может выяснить все детали у нужных людей, спроектировать, декомпозировать, отдать мидлам (и что-то джунам) и принять результат.

Часики тикают, а различия между джунами, мидлами и сеньорами не меняются

Как видно из нашей подборки мнений, представление о принципиальных различиях между джунами, мидлами и сеньорами почти не меняется с годами. И пять лет назад, и сейчас джуны остаются новичками, которым доверяют несложные задачи, которых опекают, учат и поддерживают. Мидлы — рабочая сила, на которую приходится основная нагрузка по разработке кода. Сеньоры же отличаются от джунов и мидлов не только отточенными навыками программирования: они способны видеть всю картину целиком, выполняют функции наставников и умеют грамотно взаимодействовать с руководством и заказчиками.

Вспоминается фраза «Постоянство — признак мастерства». Если встретили дельный совет о профессиональном развитии, опубликованный опытным разработчиком пять или семь лет назад, смело берите его на вооружение: срок годности у него ещё не закончился.

Ближайшие курсы по программированию:

  • Django: создание backend-приложений;

  • Сетевой инженер;

  • Android-разработчик с нуля;

  • iOS-разработчик  с нуля;

  • DevOps-инженер.

Топ бесплатных курсов и занятий:

  • День открытых дверей магистратуры «Финансовые технологии и аналитика»;

  • 1С-программист: первые шаги в профессию;

  • Как начать продавать на маркетплейсах; 

  • День открытых дверей магистратуры «Инженерия данных»;

  • В поиске своего призвания.

Источник: https://habr.com/ru/companies/netologyru/articles/812871/


Интересные статьи

Интересные статьи

Если взглянуть на ИТ индустрию изнутри, хотя бы за последние 20 лет, то технологии и продукты сменяли друг друга довольно активно, вознося на пик спроса то одних специалистов, то совершенно других. Ес...
Astra Linux — крупный игрок на рынке информационных технологий в России. Компания производит отечественное ПО, в том числе защищенные операционные системы и платформы виртуализации. Продукты разработч...
Данная статья рискует стать моей самой короткой статьей. В общем виде ответы на эти вопросы очень простые. Выглядят они примерно так:Тезис 1. Чтобы стать сеньором надо иметь интересные проекты, на кот...
Данная статья охватывает не только эстетические вопросы форматирования, но и другие типы соглашений и стандартов, которые необходимо знать Android разработчику.Основной ф...