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

Так вот, в моём понимании градация основывается не только на хард скиллах — владении языками и фреймворками, умении писать код быстро, без ошибок и по возможности чисто / красиво, но и на софт-скиллах. Умении общаться с членами команды, доносить свои мысли. Умении не тупить в стиле «я робот-сгибальщик, пожалуйста, дайте таск». Умении видеть проект в целом и декмопозировать его на части. Умении услышать продакта и «сделать хорошо».

Поэтому, вкратце:

  • Джун — начинающий (иногда можно начинать больше 10ти лет) программист. Умеет делать таски и даже не всегда говнокодит. Иногда может даже взяться за юзерку целиком, а то и за фичу.
  • Мид — нормальный, стабильный разработчик. Ему можно и небольшой проект дать затащить в одно лицо, и в компонентную команду поставить пилить бэк или фронт, да и в фича-тиме он будет себя неплохо чувствовать. Чаще всего фулл-стэк. Обычно это T-shaped ребята, то есть что-то одно он знает хорошо, а то, что рядом — более поверхностно. Может взять на воспитание джуна.
  • Синьор — m-shaped разработчик. Широкий кругозор, при этом несколько тем он знает очень глубоко и может, в принципе, даже книгу написать. Не стесняется сказать говноделу, что он — говнодел, а тимлиду — что выбранное решение говно, и надо делать не так, а вот эдак. Не боится брать на себя ответственность за большой проект в целом — понятное дело, за его техническую часть. Может взять на воспитание мида.

Ну, а определившись с понятиями — перейдём к иллюзиям.

1. Джуна все ждут с открытыми объятьями.

Особенно часто эта иллюзия проявляется у студентов или вчерашних студентов. В ВУЗах вообще любят эту иллюзию, холят её и лелеют. Мол, вот выпуститесь, напишите своё резюме — а там уже очередь из желающих взять вас на работу. И студент такой сидит на попе ровно, ждёт диплома. Выпускается, пишет резюме — и недоумевает. Чего это меня, такого красивого, никто на работу брать не желает?

Да потому, что никому ты, без опыта работы, на фиг не нужен. Потому, что есть ребята, которые херячат в хакатонах уже пару лет. И их взяли на работу ещё студентами. Есть ребята, которые нафигачили тонну кода в оупен-сорсных проектах, и хоть как-то могут подтвердить свою квалификацию. Есть те, кто за бесплатно месяц-два-три оттарабанили стажёрами и сумели себя показать с хорошей стороны. Есть те, кто прошёл полугодчиные курсы, на которые все смотрят со скепсисом и всё равно не особо бегут брать их на работу. И есть ты. С дипломом, пустым резюме и, вероятно, — в восприятии HR — с пустой головой. Никому ты, такой красивый, не нужен.

2. Джун может приносить пользу, и его ценность не отрицательна

Тоже очень распространённая иллюзия. Я, мол, умею же код писать. И он даже иногда работает. Ну, и что, что криво написан — отличать говно от конфетки я ещё не могу, я же не мид. Но деньги-то мне уже платят — значит, я пользу приношу. Без меня бы проекту было однозначно хуже.

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

Затем и взяли. Как и тебя в своё время взяли. На воспитание. Теперь вот учим, воспитываем, сопли подтираем — да ещё деньги платим. В надежде, что через полгода или год хоть как-то помогать начнёт.

3. Джун думает, что он уже мид

Очень частая ситуация. Из-за этого на рынке всегда очень много джунов с одним местом работы. Меня дома не ценят — пойду к другим. Или, в клинических случаях, — несколько мест работы по 3-6 месяцев. Таких вообще никогда на работу брать нельзя. Придёт, пальцы растопырит, насрёт в кодовую базу — и ускачет дальше.

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

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

4. Мид хочет «очень глубоко в одну технологию»

А не изучить ли тебе, бэк-эндер, немного фронта? Ну, или вот другой язык — смотри, какой интересный. Или вот, к примеру, в облаках можно вот эдак интересно инфраструктуру проекта выстроить — посмотришь?

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

И получается вместо T-shaped — I-shaped. Узкий специалист, которого хрен знает, как использовать тогда, когда его специализация не нужна. Придётся увольнять, наверное. Ну, или тащить дальше, как чемодан без ручки. А потом — всё равно уволить к чертям, и рвать на себе волосы, что в прошлый раз не уволил.

Забывают эти граждане про старое доброе правило: чем глубже в лес, тем дольше изучать. Если ты знаешь название технологии и хотя бы примерно на хрена она нужна — это уже 50% успеха. Щупал и что-то экспериментировал — 75%. Писал на ней год и успел понять какие-то тонкости — 85%. Ну, а до 90%-95% тебе понадобится лет пять. Или десять. Но ты этого ещё не понимаешь — это же первая твоя технология. Вот и впадаешь в эту опасную иллюзию. Очнись!

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

5. Мид думает: «вот если бы мне дали волю — я бы сделал уххх как хорошо!»

Код — всегда говно. Чем он старше, чем проект больше — тем больше говна. Свой же код, написанный полгода назад — на первый взгляд написан каким-то криворуким идиотом. Да и на второй. И на третий.

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

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

Результат удручает.

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

А почему, думаете, существуют пет проджекты? Вот как раз для «тренировки на кошках». А почему, думаете, они практически никогда не доходят до релиза? Вот как раз поэтому.

Любой «жуткий легаси проект», написанный десять лет назад — писался с самыми лучшими намерениями, и вовсе не дураками писался. Раз сумел столько лет прожить, не умерев. Любой «стильный-модный-молодёжный» проект, который вы пишете сейчас — если это не полное говно с точки зрения бизнеса — через 10 лет превратится в «жуткое легаси». И переписывать его вам никто не даст. Если он, конечно, находится в здравом уме и твёрдой памяти.

6. Мид думает, что он уже синьор

Очень часто связано с предыдущей иллюзией. Но может встречаться и отдельно. Вот, мол, граждане, — я тут уже три года сижу, пишу код, один проект даже сам запилил — наверняка я уже синьор-синьор. Ну, или просто синьор.

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

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

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

7. Синьор говорит «нууу, это же не я в проекте делал…»

Это же Вася криво интерфес реализовал. Это же Петя наговнокодил тут в слое обработки данных. Это же Лёша прям из контроллера в базу обращается. Плейн текстовым запросом. Мой-то код — ого-го. Он красивый, легко тестируемый и расширяемый. Я молодец.

Да, молодец. Был бы — если бы был мидом. А так — извини, брат, но как так вышло, что у тебя в проекте можно наговнокодить? Где у тебя статический анализатор кода? Где гайдстайл? Где обязательный процент покрытия тестами? Где гейтед чекин? Почему код ревью проводится только для галочки, а если рекомендации к рефакторингу и пишутся — то не выполняются?

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

8. Синьор думает, что в одно лицо будет работать куда лучше, чем «с этими говноделами»

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

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

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

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

И потом никому от этого лучше не становится — ни проджекту, у которого все планы по бороде пошли, ни мидам, оказавшимся без поддержки и совета, ни самому синьору.

Молодец. Справился.

9. Синьор думает, что ему «пора в менеджеры»

Частенько возникающая иллюзия, особенно сильная на постсоветском пространстве. Мы вошли в отрасль сильно позже других стран, и для нас программист в возрасте 50-60 лет всё ещё в новинку. Уже не так, как это было 10 лет назад — а тем более 20 лет назад — но всё же. Возникает у некоторых возрастных синьоров эдакое ощущение застоявшести. Мол, достиг потолка — куда дальше-то расти? Наверняка надо податься в менеджмент. Проджектом стать, или продактом. Ну, или тимлидом на худой конец.

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

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

На этом сегодня — всё, гоу в комменты обливать меня дерьмом и рассказывать, какой я дурак и ничего не понимаю. 🙂
Ну, или чего там нонче принято Синьор думает, что ему «пора в менеджеры»делать в комментариях. ))

Жизненный Опыт Николая Пасько