Джун, мидл, сениор на примере велосипедистов

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

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

Junior

Ребенок-велосипедист с доп-колесами

Если говорить про навыки управления велосипедом, то у джуна-велосипедиста есть следующие отличительные черты:

  • не может ехать без дополнительных задних колес.

  • проезжает бордюры, лестницы, грязь только с помощью папы.

  • если упал, то без слез и/или папы не встать.

  • без присмотра сразу поедет под колеса проезжающему мимо грузовику

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

Мой младший сын все еще junior, но уже пробует без задних колес

Мой младший сын все еще junior, но уже пробует без задних колес

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

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

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

Начинающий программист

Все это актуально и для джунов-разрабов:

  • Начинается разработка обязательно с полностью изолированных сред без возможности хоть каким-то образом повлиять на прод (=страховочные колеса);

  • Любое «новое» первое время воспринимается как непреодолимая сложность и без ментора или долгого гуглежа не справиться;

  • Если чего-то пошло не так (Unhandled exception вызывает вопросы еще на этапе понимания слова exception), то сразу нужна помощь сверху (=«пап, я упал, помоги»);

  • Если пропустить код джуна без изучения его PR, то 100% будет баг и, иногда, фатальный (=поедет под колеса грузовика).

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

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

С джунами больше работы, чем пользы для меня и компании (разве что грезы о том, что потом он будет приносить пользу). Иногда от сложности обучения хочется сдаться, забить и делать свои сеньорские задачи (=кататься по городу в одиночку).

С джунов начинается путь любого разработчика. Это самый базовый уровень. В галере джунов любят закидывать задачами неопытные руководители. И наваливать на джуна задачи, думая что он вывезет, разгуглится и разберется — глупость, аналогичная идее посадить 3 летнего ребенка на велосипед и отправить его в магазин на велосипеде за покупками. Не будет ни покупок, ни велосипеда, ни ребенка.

Middle

Уверенный в себе велосипедист

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

  • едет без задних доп колес и отлично может кататься по двору у дома;

  • при падении встает и едет дальше молча;

  • если отправить его в другой город, то точно заблудится;

  • если попросить его посмотреть за джуном (младшим братом), то, вероятнее всего, поедут под грузовик оба;

  • если дать ему задачу «доехать до дачи» и отправить, то, скорее всего, не доедет. Но уверенно заявит, что гарантированно доедет.

При переходе в статус велосипедиста-мидла у него появляется достаточно явная доля уверенности в своих силах, которая легко переходит в самоуверенность. Причина у этого простая — когда не знаешь о том где находится грань какого-то скилла, то кажется что уже знаешь 100% скилла. Оно и логично — если я не знаю как можно ехать на велосипеде еще лучше, то значит лучше ехать и невозможно!

0c009e327eafb9dde6d88f942d26403d.png

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

Мидл-велосипедист может проехать большое расстояние в сопровождении сеньора-велосипедиста (папа/мама и другие). Сможет принять участие в сборке велосипеда, каком-то обслуживании («подай ключ на 8») и главное сможет кататься самостоятельно по двору, осваивать вождение велосипеда дальше и погружаться в этот прекрасный велосипедный мир.

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

Слева я (джун-велосипедист) и мой брат (мидл-велосипедист)

Слева я (джун-велосипедист) и мой брат (мидл-велосипедист)

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

Средний разработчик

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

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

Проблемы бизнеса чужды для мидла, т.к. он познал мир разработки и ему не нужно опираться на деньги и то, откуда они берутся. На моей памяти от меня уходила пара мидлов из-за того, что наш подход недостаточно современный и крутой и «вообще на PHP уже давно бэк не пишут, везде модный go, микрофронтэнды, микросервисы и прочие прелести». Я не держу таких людей у себя — если он захотел пойти в компанию где будут реально крутые процессы и технологии, то ему действительно стоит туда идти, т.к. моя галера совсем не про это, а про зарабатывание денег.

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

Senior уровень

На данный момент у меня в подчинении еще не было большого количество сеньоров и из детей только один дорос до мидла, а сам я себя отношу к Middle+++ как разработчику, так и велосипедисту. Поэтому я не могу знать наверняка все детали и отличительные особенности этого грейда со стороны.

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

5b5c5d8bb593afb15544a98ec5a85fbe.png

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

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

Но длительности пути к сеньору не является достаточным условием для достижения этого результата. Если я 10 лет катаюсь с дополнительными колесами, то это не делает меня автоматически профессиональным велосипедистом — так и в программировании если я 10 лет крашу кнопки пусть даже в Яндексе это не делает меня Senior-разработчиком. Поэтому всегда стоит отслеживать за собой — «ведет ли текущая работа меня к росту как специалисту или я все также катаюсь с доп колесами на текущем уровне?»

Благодарю за внимание и буду рад вашей подписке на свой Telegram канал, где я делюсь подобными мыслями, но в более сжатом формате.

© Habrahabr.ru