Джун, мидл, сениор на примере велосипедистов
Как пояснить разницу между грейдами разраба (джун/мидл/сениор) простыми словами? На выходных катался с детьми на велосипеде и понял, что один из них велосипедист-джун, а второй хороший такой мидл. Это натолкнуло меня на очередную классификацию этих грейдов через аналогию через обучение детей ездить на велосипедах.
Статья носит больше развлекательно-обозревательный характер, нежели что-то полезное практичное. Но это сравнение ранее понравилось многим подписчикам моего тг-канала.
Junior
Ребенок-велосипедист с доп-колесами
Если говорить про навыки управления велосипедом, то у джуна-велосипедиста есть следующие отличительные черты:
не может ехать без дополнительных задних колес.
проезжает бордюры, лестницы, грязь только с помощью папы.
если упал, то без слез и/или папы не встать.
без присмотра сразу поедет под колеса проезжающему мимо грузовику
Отличительная черта джуна заключается в том, что он не знает как по-другому. Нет никакого представления, что мир может быть устроен иначе. Для него наличие сзади дополнительных колес — необходимость для движения вперед, а наличие рядом папы это единственный способ справляться с трудностями.
Мой младший сын все еще junior, но уже пробует без задних колес
Моя задача как отца достать велосипед из гаража, привести на ровную поверхность, направить его в безопасное место, посадить ребенка и отправить наслаждаться поездкой в прямом направлении под постоянным присмотром. Со временем можно будет опускать его вперед на пару метров, давать разгоняться и принимать решение о торможении.
На первых шагах обучения ребенка сложностей и напряжений гораздо больше чем удовольствия (разве что внутреннее моральная радость, что проводишь время с сыном). Иногда хочется просто сесть на свой велик и прокатиться в свое удовольствие по городу. Но для роста джуна надо заниматься всем — выбирать велосипед, периодически его обслуживать, менять и все это собственными руками без какого-либо (разве что морального) участия подрастающего велосипедиста. Площадки для катания и их безопасность тоже нужно искать самостоятельно и нести туда велосипед вместе с его владельцем.
На этом этапе задерживаются по-настоящему подолгу только если ментор (папа) не предлагает снять задние колеса или у самого байкера не возникает мыслей, что все ровесники гоняют уже на двух колесах, а он все еще на 4.
Начинающий программист
Все это актуально и для джунов-разрабов:
Начинается разработка обязательно с полностью изолированных сред без возможности хоть каким-то образом повлиять на прод (=страховочные колеса);
Любое «новое» первое время воспринимается как непреодолимая сложность и без ментора или долгого гуглежа не справиться;
Если чего-то пошло не так (
Unhandled exception
вызывает вопросы еще на этапе понимания слова exception), то сразу нужна помощь сверху (=«пап, я упал, помоги»);Если пропустить код джуна без изучения его PR, то 100% будет баг и, иногда, фатальный (=поедет под колеса грузовика).
Вместо страховочных колес у джунов изолированные окружения, где не могут ничего сломать, а вместо папы есть ментор, который не позволит уронить прод и покажет как лучше делать задачу.
Моя задача как ментора заонбордить джуна в процесс, настроить ему окружение, дать простую задачу, показать где именно эту задачу решать и даже подсказать какой код написать. Потом постепенно можно будет расширять его зону ответственности и пространство для самостоятельных рассуждений.
С джунами больше работы, чем пользы для меня и компании (разве что грезы о том, что потом он будет приносить пользу). Иногда от сложности обучения хочется сдаться, забить и делать свои сеньорские задачи (=кататься по городу в одиночку).
С джунов начинается путь любого разработчика. Это самый базовый уровень. В галере джунов любят закидывать задачами неопытные руководители. И наваливать на джуна задачи, думая что он вывезет, разгуглится и разберется — глупость, аналогичная идее посадить 3 летнего ребенка на велосипед и отправить его в магазин на велосипеде за покупками. Не будет ни покупок, ни велосипеда, ни ребенка.
Middle
Уверенный в себе велосипедист
Побыв достаточное время джуном и, что важно, при регулярных тренировках, велосипедист переходит из джунов к мидлам, а именно:
едет без задних доп колес и отлично может кататься по двору у дома;
при падении встает и едет дальше молча;
если отправить его в другой город, то точно заблудится;
если попросить его посмотреть за джуном (младшим братом), то, вероятнее всего, поедут под грузовик оба;
если дать ему задачу «доехать до дачи» и отправить, то, скорее всего, не доедет. Но уверенно заявит, что гарантированно доедет.
При переходе в статус велосипедиста-мидла у него появляется достаточно явная доля уверенности в своих силах, которая легко переходит в самоуверенность. Причина у этого простая — когда не знаешь о том где находится грань какого-то скилла, то кажется что уже знаешь 100% скилла. Оно и логично — если я не знаю как можно ехать на велосипеде еще лучше, то значит лучше ехать и невозможно!
С мидлом уже можно уверенно и интересно кататься по городу. Можно отправить его до школы через дорогу самостоятельно и он, с высокой вероятностью, доедет до нее. Может где-то упадет, но быстро встанет, придет в себя и поедет дальше. Он уже знает какие-то самые базовые правила дорожного движения и понимает, что дорогу переходить надо глядя слева-направо (но забывает об этом каждый третий раз).
Мидл-велосипедист может проехать большое расстояние в сопровождении сеньора-велосипедиста (папа/мама и другие). Сможет принять участие в сборке велосипеда, каком-то обслуживании («подай ключ на 8») и главное сможет кататься самостоятельно по двору, осваивать вождение велосипеда дальше и погружаться в этот прекрасный велосипедный мир.
Но, с другой стороны, уверенность в том, что он доедет на велосипеде куда угодно может сыграть злую шутку. Желание ехать на велосипеде может перейти границы адекватности и мидл-велосипедист может ввести санкции (обидеться и заплакать) за то, что ему не разрешили самому поехать на велосипеде в дождь в деревню. Аргументация будет железная — «я уже туда ездил с тобой же» и тезисы «сейчас погода совсем другая и я с тобой доехать не смогу» разбиваются об уверенность мидла в том, что он точно доедет.
Слева я (джун-велосипедист) и мой брат (мидл-велосипедист)
Понять, что велосипедист начинает переход в ранг мидлов можно по тому, что дополнительные колеса не приносят больше никакой пользы, а только мешают нормально ездить, закладывать на бок велосипед и проезжать в узких местах.
Средний разработчик
Если говорить о разработчиках, то мидлы уже могут спокойно разобраться в существующем проекте на уровне кода. Им все еще нужна будет помощь в том, чтобы настроить окружение для работы, но у мидла уже есть понимание как работают серьезные проекты и почему иногда надо потратить время на рефакторинг и приведение кодовой базы в порядок. Если нужно спроектировать изолированный модуль внутри приложения, то мидл вполне может реализовать свое видение решения задачи и его PR получит всего десяток комментариев, после обработки которых он будет принят.
С другой стороны, уверенность в своих знаниях очень близко граничит с самоуверенностью. Желание рефакторить может стать идеей-фикс и он будет всячески вовлекать бизнес и руководство в то, что надо переписать часть приложения или, в идеале, «написать его с нуля». А нужно это сделать потому, что он узнал как это можно сделать по-настоящему круто и правильно, что бы можно было «поддерживать проект потом десятилетиями и любой новый разработчик заонбордится в этот проект за 10 секунд!»
Проблемы бизнеса чужды для мидла, т.к. он познал мир разработки и ему не нужно опираться на деньги и то, откуда они берутся. На моей памяти от меня уходила пара мидлов из-за того, что наш подход недостаточно современный и крутой и «вообще на PHP уже давно бэк не пишут, везде модный go, микрофронтэнды, микросервисы и прочие прелести». Я не держу таких людей у себя — если он захотел пойти в компанию где будут реально крутые процессы и технологии, то ему действительно стоит туда идти, т.к. моя галера совсем не про это, а про зарабатывание денег.
Из мидлов состоит, в основном, моя компания и это самые крутые сотрудники в компании. Описанные выше сложности возникают далеко не со всеми и не все, кто это начал, остаются верны этой идее. Плюс мидла перед джуном очевидны — им можно ставить задачу более верхнеуровнево и можно контролировать уже выполнение бизнес-задачи, нежели адекватность подхода. Новые знания в миддлов вкачиваются достаточно легко и в какой-то момент мидл уже сам начинает вносить в команду какие-то новые полезные вещи, которые он подсмотрел где-то в интернете. И есть ненулевая вероятность, что он превратится с сеньора.
Senior уровень
На данный момент у меня в подчинении еще не было большого количество сеньоров и из детей только один дорос до мидла, а сам я себя отношу к Middle+++ как разработчику, так и велосипедисту. Поэтому я не могу знать наверняка все детали и отличительные особенности этого грейда со стороны.
Но, если кратко, Senior-разраб сам проект с нуля напишет с командой или без, тестами покроет и зарелизит успешно. А велосипедист велосипед себе купит, соберет, подкрутит и доедет на любой расстояние с пересадками и без. Переход от мидла к сеньору происходит уже не так явно и тяжело четко отследить момент когда это происходит.
Если спросишь любого сеньора-программиста или сеньора-велосипедиста, то он вряд ли скажет ровно тот день, когда перешел в этот статус. Все это происходит спустя годы опыта, попыток, проб и ошибок и в какой-то момент уже, сам не заметив, все делаешь сам, закрываешь сложные задачи и уезжаешь на дальние расстояния.
Без прохода через предыдущие этапы невозможно стать Senior-ом в любом деле. И пройти сразу оба этих этапа в любом деле невозможно за неделю, месяц, год и иногда даже несколько лет. Все это — кропотливый длительный путь через получение знаний, их обработку, применение в работе, закрепление и повторение этого по кругу тысячи раз.
Но длительности пути к сеньору не является достаточным условием для достижения этого результата. Если я 10 лет катаюсь с дополнительными колесами, то это не делает меня автоматически профессиональным велосипедистом — так и в программировании если я 10 лет крашу кнопки пусть даже в Яндексе это не делает меня Senior-разработчиком. Поэтому всегда стоит отслеживать за собой — «ведет ли текущая работа меня к росту как специалисту или я все также катаюсь с доп колесами на текущем уровне?»
Благодарю за внимание и буду рад вашей подписке на свой Telegram канал, где я делюсь подобными мыслями, но в более сжатом формате.