Как из джуна стать сеньором и что сделать, чтобы их отличить?

Данная статья рискует стать моей самой короткой статьей. В общем виде ответы на эти вопросы очень простые. Выглядят они примерно так:

Тезис 1. Чтобы стать сеньором надо иметь интересные проекты, на которых ты можешь вырасти и уметь внимательно читать документацию. 

Тезис 2. Гарантировано отличить джуна от мидла и сеньора может ваш тимлид, отправьте специалиста к нему на собеседование. 

Ничего нового в этом смысле в данной статье не будет. Собственно всё :)

И всё бы хорошо, но...:

1. В такой формулировке задача не отделима от тимлида. А точно ли стоит гонять всех без разбора к нему на собеседование или всё таки должен быть адекватный фильтр?

2. У молодых специалистов где-то до 2‑х лет стажа комплекс самозванца и желание самоидентификации просто космического масштаба. Согласитесь, глупая идея каждый месяц бегать к тимлиду и спрашивать: я уже мидл? А теперь? А сейчас? Тем более что во время роста часто возникает проблема пограничного состояния, когда “поди отличи”, то ли это хай джун, то ли лоу мидл. А ведь от этого зарплата зависит. 

3. А ещё если у вас компания 30+ разработчиков неплохо бы определить некие общие правила игры, по которым люди развиваются и повышают себе зарплату. 

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

Мифы и легенды древней программистики

Для того чтобы ответить на поставленные в заголовке вопросы — необходимо разобраться с главным: что отличает джуна, мидла и сеньора. Вопрос мягко выражаясь не новый, поэтому на этом поле накопилось много мифов. Разберемся с самыми устойчивыми из них.

Чтобы быть мидлом/сеньором надо знать…

Вместо трёх точек можете поставить любую технологию или практику. Вот вам несколько вариантов на выбор:

  1. Docker

  2. TypeScript

  3. ООП

  4. Фреймворк (Laravel, Django, Spring, etc)

  5. Паттерны проектирования.

Совсем одиозные деятели могут сюда даже язык программирования поставить. Типо все сеньоры кодят на Java/C++. Ну тут даже сказать нечего, в этом случае лечиться надо.

Любая концепция роста построена на технологическом стеке обречена на вымирание. Вот решили вы что у вас в конторе мидл должен глубоко знать реляционные СУБД, а потом… Пришла эпоха NoSQL и принесла вам Mongo. И что теперь? Все ваши мидлы больше не мидлы? Или у вас есть отдельно Middle Postgres Developer и Middle Mongo Developer? Допустим. А если ваш бэкендер захочет перейти в проект с Mongo, он что, временно теряет свою мидловость, пока Mongo не освоит? А зарплату ему надо понижать на это время? В общем все подобные методики которые я видел либо требует серьезнейшей постоянной поддержки, либо существуют больше на бумаге чем в реальности.

Немного лучше дело обстоят с теорией. ООП там или Паттерны. Но! Как только мы говорим, что сеньор должен знать ООП все программисты микроконтроллеров 

Ну а что касается паттернов… Я вот понял что за всю программерскую жизнь (14 лет на самых разных проектах, включая highload) ни разу не использовал Абстрактную фабрику. Вот Фабричный метод использовал. Абстрактную фабрику — нет. И что, увольняем меня из сеньоров?

При этом данное заблуждение — самое распространенное. Во-первых, оно очень простое. Можно мечтать, вот выучу TypeScript и стану мидлом. Во-вторых, оно очень удобно для вакансий. Но всё это фигня.

Технологический стек — это то, что необходимо знать, для того чтобы работать в вашем проекте на определенной должности. Всё. На ваш уровень он влияет, но только за счёт того, какой сложности задачи вы можете решать доступным вам стеком. Ну и насколько ваш стек актуален. Я в том плане, что мне как-то не встречались последнее время Senior TurboPascal Developer.

Сеньора делает опыт

Ну здесь справедливо обратное утверждение. На мой взгляд вы не можете быть сеньором имея менее 5 лет опыта. Ниже я расскажу почему. Но это работает только в одну сторону - 5 лет опыта не делает вас сеньором. И с одной стороны это должно быть всем очевидно, а с другой… рынок вакансий работает по другому. Как только у тебя появляются 2 года стажа, ты начинаешь подходить под формальные требования HR, особенно корпоративных. А этим ребятам обычно глубоко плевать кого они там наняли, у них KPI строится от количества собеседований и наймов. Если через полгода ты уйдешь из их корпорации перегоревшим и пережёванным — этим ребятам ни жарко ни холодно. Так что молитесь на адекватных тимлидов. Эти героические товарищи, работая в корпорациях, могут либо таки вас не взять на позицию, с которой вы не справитесь, либо таки доучить. Слава и хвала как говорится.

Да и что конкретно происходит с человеком за 5 лет? Если товарищ проработал линейным разработчиком 5 лет — он сеньор или нет? От чего это зависит?

Ну или можно пойти шире и под опытом понимать не просто стаж, а опыт тех или иных проектов. Звучит уже лучше. Можно даже красивые фразы придумать. В стиле “Если ты не деплоил хотфикс на продакшн под вопли пользовательских чатов, то ты не сеньор”. Круто звучит? А если ваша компания специализируется в основном на разработке MVP на заказ? Что, в ней не стать сеньором?

Чтобы стать сеньором тебя должен укусить другой сеньор

С одной стороны иметь наставника который покажет и расскажет, как правильно — понятное и логичное желание. Более того, наличие такого наставника сильно упрощает жизнь. С другой стороны это не работает настолько прямолинейно. Из моей практики самыми лучшими наставниками для джунов являлись… другие джуны! Примерно на полгода имеющие больше опыта. Почему? Да потому что сеньор забыл больше чем знал джун. Пропасть между ними очень высока. И с одной стороны послушать сеньора всегда полезно, на как решать ваши повседневные проблемы и задачи вам лучше подскажет ваш товарищ, но немного более опытный. Который буквально вчера уже решал те же задачи и проблемы.

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

Чем отличается джун от сеньора?

И так, мы выяснили что:

  1. Технологический стек – это просто набор технологий и практик, которые вам необходимо знать для работы в должности на конкретном проекте.

  2. Наличие сеньора рядом не гарантирует вам максимально быстрый переход в сеньоры.

  3. Стаж и опыт необходимые факторы, но при этом не являются достаточным.

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

  1. Алгоритмическая и архитектурная сложность проектов в которых участвовал специалист. 

  2. Стадия проектов (MVP, Вывод в production, Развитие и сопровождение).

  3. Количество проектов определенной сложности на определенных стадиях, которые он выполнил.

  4. Уровень личного влияния на проект.

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

Теперь проверим концепцию, да и покажу как пользоваться. И так. Возьмем товарища который 10 лет занимается фронтендингом лендингов. У него могут быть такие параметры:

Уровень сложности

Обычные лендинги

Стадия проектов

Вывод в Продакшн, Сопровождение

Количество проектов (повторяемость)

более 200

Уровень личного влияния на проект

Единолично вёл работу по каждому проекту

И так, сеньор этот товарищ или нет? Сложность у проектов низкая, зато все остальные параметры на высоте. Поскольку выводил в продакшен и сопровождал: знает как те или иные технические решения отражаются на проекте. Сделал более 200, значит действия доведены до автоматизма. Работал один, сам полностью нёс ответственность за результат. В компании которая занимается производством лендингов такой товарищ вполне может быть сеньором и получать очень хорошие деньги. Теоретически. На практике, конечно, может быть по-разному. Может это растрындяй-единоличник. Но это уже проверяется другими методами.

Возьмем другой пример. Товарищ с 1,5 годом стажа.

Уровень сложности

ERP-системы

Стадия проектов

Сопровождение

Количество проектов (повторяемость)

1

Уровень личного влияния на проект

Рядовой разработчик

Уровень технической сложности неплохой. По крайней мере точно выше чем лендинги. Однако товарищ всё время занимался 1 проектом, в рядовой позиции. Скорее всего хай джун.

Ну и третий вариант, товарищ с аналогичным стажем:

Уровень сложности

ERP-системы

Стадия проектов

Вывод в production

Количество проектов (повторяемость)

3

Уровень личного влияния на проект

Рядовой разработчик

Вот этот парень уже может быть мидлом. Участвовал в выводе в продакшн 3‑х проектов. Но тут надо подробнее расспросить про то, чем занимался. А то может он все релизы в носу проковырял.

Именно, кстати, поэтому я не верю в сеньоров с менее чем 5 годами стажа. Вам физически не сделать нужное количество проектов, меньше чем за это время :) Ну или довести до автоматизма работу с мелкими :)

Итого

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

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

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

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

  2. Отдаёте HR, на собеседовании им достаточно дать эту табличку кандидату и попросить отметить нужные пункты.

  3. HR делают сводные таблички на кандидатов и вы можете отсеять лишних или лучше понимать что спрашивать на собеседовании.

  4. ???

  5. Profit.

Комментарии (19)


  1. GBR-613
    14.01.2022 17:22

    Я думаю, что главное отличие между джуном, миддлом и сеньором это скорость, с которой он/а освоит новый ЯП или библиотеку в случае необходимости.

    Как из одного стать другим? Очень просто: раз в два года менять язык и/или технологию. Чаще слишком тяжело, и не успеть серьёзно освоить, реже - ты начинаешь покрываться плесенью. Ну и ещё всё время стараться совершенствоваться в английском: вся литература на нем.


    1. Sdima1357
      14.01.2022 17:28
      +3

      Дело за малым, убедить сеньора освоить новый ЯП или новую библиотеку и не быть при этом посланным далеко...


      1. datacompboy
        14.01.2022 20:55
        +8


        1. Sdima1357
          14.01.2022 21:12

          Да , я знаю. Мне почти 60. :(


    1. Vladimirsencov
      16.01.2022 01:34
      +1

      Ну не очень хороший совет. Я вот только после 5 лет работы на Java готов решать на ней сложные задачи. Какая то интуиция появилась.


  1. StjarnornasFred
    14.01.2022 17:29
    +9

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

    • Джуниор умеет умеет программировать на C#. Мидл умеет программировать на си-образных языках. Синьор умеет программировать.

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

    Иными словами, синьор не обязан всё уметь, но он обязан уметь всё суметь :)


    1. Vladimirsencov
      16.01.2022 01:36

      И зачем мне подобной фигнёй заниматься? Мне и на привычном стеке много работы и неплохо платят.


  1. GBR-613
    14.01.2022 17:36
    -8

    Отдельный вопрос: как тимлиду расти сеньора.

    А оно вам надо? Ты его вырастишь - он потребует повышения зарплаты или уйдёт туда, где зарплата больше. Может, тебе как тимлиду лучше, чтобы он не рос, а совершенствовался в том, что тебе от него нужно?

    Но если всё таки такая цель стоит- тогда только ротация кадров. Каждые 1-2 года переводить людей из группы в группу или из проекта в проект.


  1. oOKIBrTlUTohw4Sc
    14.01.2022 17:55
    +6

    Как же меня раздражают статьи/комментарии и прочее на тему "что должен знать синьор?" - должен кому? Просто это реально похоже на рассуждения на тему "как попасть в рай и не попасть в ад". Нет какого то там бога разработки, который диктует требования, нет сертификации. Вас нанимают люди. Живые. Вот вопрос "что нужно знать чтобы показаться синьором в этой компании или конкретно для этого человека" уже имеет смысл. Ну или хотя бы "пройти в большинство компаний" или "как стать сферичиским синьором в вакуме".

    И банально от того, какой характер задач, размер проекта, навыки коллег, от того продуктовая компания или аутстаф очень разняться требования. Нет, в вакансии там понятно что напишут плюс минус одинаково. А вот на практике это отличается в пределах от "хм, говорите уже давно не работали с машинным обучением? Какой же вы тогда фронтендер, мы вам перезвоним" до "код писал? Только лабы в универе? Окей, когда сможешь выйти? Все равно ты самый адекватный из желающих".

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


  1. random1st
    14.01.2022 18:55

    А тимлид откуда знает?


    1. mpudalov Автор
      15.01.2022 11:14
      -1

      Насмотренность + глубокое понимание того что нужно в его проекте.


  1. moonster
    14.01.2022 21:24
    +2

    Отличие в уровне ответственности, которую персонаж успешно вывозит.

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


  1. MaryRabinovich
    14.01.2022 21:32
    +3

    (дисклеймер: если вы мне ответили, а я типа игнорирую, это не я игнорирую, а карма у меня низкая, выраженно отрицательная. Я могу только в один комментарий в сутки, ы)

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

    Можете вы в вашем хобби себя с девятью уровнями соотнести? Какие они, эти девять?

    Вот горнолыжник. Он джун или миддл, как бы вы это проверили?

    Ещё немного абсурдизируем тему сравнением с другими специальностями. У какого врача вы предпочтёте лечиться? Вас миддл устроит? "Ну, если деньги есть, лучше синьор, наверное".

    Каких певцов вы предпочитаете слушать? "Ой, мне джуны больше нравятся. У них свежий голос". А глянувший на часы как-то раз на сцене во время концерта Лев Лещенко был уже синьор на тот момент.

    Звучит довольно абсурдно, учитывая, что реалистичные разговоры о, например, певцах - это десятки жанров, тысячи исполнителей. Ну хорошо, врачи более унифицированы, вас в медицине "личность врача" не очень интересует. Но даже там - ну как сравнивать кардиолога и зубного врача по трёхбалльной (девятибалльной) шкале?

    ЗЫ я понимаю, что "это уже традиция". Ну то есть нечто, что делают все и повсюду - целые уже... а кстати сколько лет? Я тут недавно где-то прочла, что бриллианты как признак любви, т.е., как камешки для помолвки как "древнюю традицию" внедрила Де Бирс в тридцатых прошлого века - когда типовая аудитория бриллиантов (зажиточная элита) пошла на убыль. Так же и тут. Учитывая относительную молодость специальности в целом, кто и когда придумал делить программистов на джунов, миддлов и синьоров - возможно, он ещё даже жив. Можно даже его спросить напрямую: "А что вы имели в виду, уважаемый?"


    1. questor
      15.01.2022 11:12
      +1

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

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

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


      1. MaryRabinovich
        17.01.2022 14:39

        Вообще говоря, "senior architect" - это всего лишь "старший", как прилагательное. Это не "синьор", занявшийся архитектурой, а "старший архитектор".

        Как в детском садике "старшая воспитательница".


    1. zoryamba
      16.01.2022 02:16
      +1

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


      1. MaryRabinovich
        17.01.2022 14:45

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


  1. zoryamba
    16.01.2022 01:57
    +1

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

    Но тут справедливо возникает вопрос. Если мидл может сделать все, то что тогда отличает сеньора от мидла? И, хотя, по мнению некоторого количества интервьюверов, я вполне достоин сеньорской позиции, у меня до сих пор нет ответа на этот вопрос. Может, я осознаю это еще через пару лет? А может, возможность отличить мидла от джуна и делает тебя сеньором?

    Может, у кого-то есть понимание, в какой момент Вы стали сеньором? Поделитесь мыслями. Очень мучает этот вопрос :)

    ЗЫ: снимал на синдром самозванца xD


    1. Nialpe
      17.01.2022 09:11

      Предположу, что в вашей парадигме сеньор "понимает, что можно сделать многое (из хотелок заказчика при наличии ресурсов), но не все, есть и недостижимое"