Что на самом деле отличает middle от senior? Опросили тимлидов
Камиль Закиев и Михаил Черемухин-Рерберг рассказывают, чего миддлу не хватает до сеньора и в чем сеньор на голову выше миддла.
481 открытий3К показов

Кажется, разница между middle- и senior-разработчиком очевидна — в опыте, умении писать хороший код, разбираться в технологиях. Но почему тогда в одной компании человека считают синьором, а в другой — даже до миддла не допускают? Почему кто-то спустя три года уже ведёт проекты и влияет на продуктовую стратегию, а кто-то через пять лет разработки продолжает фиксить кнопки?
Мы задали одни и те же вопросы тимлидам и менторам Solvery —Михаилу Черемухину-Рербергу, frontend team lead в Uchi.ru, и Камилю Закиеву, backend team lead в Контуре, — и узнали, чем же на самом деле отличаются миддлы и сеньоры.

Камиль Закиев
backend team lead в Контуре, ментор Solvery

Михаил Черемухин-Рерберг
frontend team lead в Uchi.ru, ментор Solvery
Решать задачу или решать проблему
Представьте себе ситуацию: в проде баг. Миддл спокойно тратит день на поиск и фиксы. Senior, скорее всего, этот баг бы даже не допустил — потому что заложил бы тесты и даже поставил под сомнение архитектурное решение, из которого этот баг вообще мог взяться. И миддлы, и сеньоры — технически подкованные специалисты. Однако миддл решает задачи в рамках текущей проблемы, а сеньор — исходит из общего контекста.
Сеньоры, как правило, видят необходимость покрывать своей код тестами. Поэтому чаще отлавливаются банальные ошибки в логике.
Разница в подходе к решению бага — это не просто про технику, а про системное мышление. Senior мыслит процессами, связями и классами проблем. Он знает: устранение конкретного бага не спасёт систему от будущих сбоев, если не изменить подход к разработке.
Все разработчики ошибаются, при этом цена ошибки вырастает кратно уровню грейда — это естественно с увеличением зоны ответственности. Здесь важнее как разработчик подходит к решению проблемы: миддл хорошо решит локальную проблему, а сеньор выявит причины ошибки и помимо текущей проблемы устранит целый класс проблем как на уровне кода, так и на уровне процесса разработки. В связи с этим сеньор обычно не задает вопросов — он уже провел исследование и приходит с вариантами решений для их обсуждения. Миддл — наоборот: приходит с вопросами, чтобы вместе придумать решение.
К слову о вопросах. Вот шутка от Миши:
Миддл: Почему код этого приложения так плохо написан? Можно же было взять технологию Х, она бы упростила все раз в 10!
Сеньор: так исторически сложилось.
Та самая ответственность
Один из главных признаков senior-разработчика — уровень ответственности, который он берёт на себя. Это видно буквально с первых дней работы над задачей. Миддл — уточняет, просит помощи, ждет ревью, не всегда понимает продуктовый контекст. Senior сам идёт выяснять, кто заказчик задачи, уточняет требования, предлагает компромиссы, инициирует обсуждение с командой.
Сеньор получает ТЗ, задает все необходимые вопросы, уточняет требования. После этого уходит реализовывать требуемое. Если помидору нужно у кого-то уточнить требования, то этот человек будет найден и опрошен. Сеньора не нужно подпинывать, он сам прекрасно знает сроки.
Миша, например, не доверил бы миддлу такие задачи:
- инфраструктурные — когда необходимо вывести сервис в продакшен, задеплоить приложение;
- задачи, предполагающие исследование и аналитическую работу;
- задачи, требующие проектирование — это могут быть сервисы, приложение или комплексная фича.
Примеры таких задач — разработка сервиса на границе продукта (интеграция с клиентами, соседними командами), проектирование доменного слоя приложения, шардирование баз данных.
Важно уметь грамотно очертить технический скоуп проекта, провести декомпозицию на отдельные задачи, оценить сроки реализации, возможные риски и способы их предотвращения. Также я ожидаю от сеньора прозрачной коммуникации относительно сдвига сроков реализации проекта или раздувание скоупа.
Сеньор — это далеко не про знание
Один из популярных мифов — senior знает все: фреймворки, паттерны, облачные решения, умеет шардинг и микросервисы. На деле все куда тоньше: сеньор не обязательно знает больше, он просто предлагает более уместные решения и делает это в нужное время.
Вот главные навыки, которые отличают сеньора от миддла по мнению Миши:
- опыт и практика, широкий кругозор;
- если не знает, как реализовать, знает, где подсмотреть;
- высокий уровень ответственности и самостоятельности;
- все, что может быть автоматизировано, автоматизируется.
- если есть вариант не реализовывать фичу, вариант будет выбран как предпочтительный.
Решающее значение в отличии грейда я отдаю уместности предлагаемых технических решений, способностям договориться с другими людьми, пониманию предметной области, для которой проектируется системное решение.
Сеньор всегда знает, что важно, а что нет, что стоит делать, а что — можно не трогать. Часто это проявляется в том, как синьоры взаимодействуют с бизнесом и менеджерами. Они умеют говорить «нет» фиче, если понимают, что цена ее реализации выше ценности.
От сеньора я ожидаю, что он задаст любое количество вопросов, которое ему понадобится, чтобы картина сложилась целиком. Как правило, разработчики рангом ниже стесняются задавать вопросы, ибо боятся показаться глупыми. Сеньор же понимает, что лучше спросить сейчас, чем больше работать потом, либо доделывать работу в нервяках. Также ожидаю, что в лорда можно кинуть задачу (контекст), ограничения (как временные, так и ресурсные), а он в свою очередь возьмет техническую часть реализации. Уйдет и вернется с решением. В идеале, еще и будет держать в курсе по промежуточным статусам.
Про влияние на команду
Один из кейсов — ситуация, когда в команде появляется сильный сеньор. Он не назначен лидом, не продвигает себя, но за полгода процессы улучшаются, решения становятся зрелее, начинающие разработчики растут быстрее.
Сеньор идентифицирует проблемы, предлагает решения, обсуждает с командой возможные варианты (по сути увеличивает техническую экспертизу команды). Вместе с тем зачастую (почти всегда) у команды есть более критичные бизнес-задачи, и решение технических проблем отходит на второй план. В таком случае миддл идет делать бизнес-задачи, а сеньор продумывает, как реализовать бизнес-требование с оглядкой на возможное движение в сторону целевой технической картины и «продает» этот план тимлиду и бизнесу.
Я видел проактивных как миддлов, так и сеньоров, причём во всём: в решении проблем, реализации задач, в жизни сообщества, в процессе менторства и обучении коллег.
Ты готов, мой мальчик (или нет)
И Миша, и Камиль сходятся в одном: не так важен формальный грейд, как поведение и зрелость. Готовность к переходу — это про инициативу, про подход к задаче как к проекту, про ответственность за результат и влияние на процессы.
Когда человек берёт больше ответственности, берёт задачи с большой долей неизвестности, отвечает за результат — тогда он становится сеньором.
Когда миддл обретает навыки системного мышления, взаимодействия, уместности решений, я понимаю, что ему можно поручать более сложные задачи и помогать в наращивании опыта на грейд сеньора.
Все сводится к одной простой мысли: senior — это не роль, а способ действовать. Это уровень ответственности, зрелости, влияния и подхода. Миддл решает задачи, а сеньор — проблемы. Миддл спрашивает, как делать, а сеньор — зачем делать.
Если вы миддл и хотите вырасти — начните брать на себя чуть больше, чем просили. Задавайте больше вопросов, особенно про смысл и цели. Учитесь не просто кодить, а проектировать, объяснять и влиять на то, какие задачи появляются.
И тогда — грейд догонит вас сам.
481 открытий3К показов