Как пояснить разницу между грейдами разраба (джун/мидл/сениор) простыми словами? На выходных катался с детьми на велосипеде и понял, что один из них велосипедист-джун, а второй хороший такой мидл. Это натолкнуло меня на очередную классификацию этих грейдов через аналогию через обучение детей ездить на велосипедах.
Статья носит больше развлекательно-обозревательный характер, нежели что-то полезное практичное. Но это сравнение ранее понравилось многим подписчикам моего тг-канала.
Junior
Ребенок-велосипедист с доп-колесами
Если говорить про навыки управления велосипедом, то у джуна-велосипедиста есть следующие отличительные черты:
не может ехать без дополнительных задних колес.
проезжает бордюры, лестницы, грязь только с помощью папы.
если упал, то без слез и/или папы не встать.
без присмотра сразу поедет под колеса проезжающему мимо грузовику
Отличительная черта джуна заключается в том, что он не знает как по-другому. Нет никакого представления, что мир может быть устроен иначе. Для него наличие сзади дополнительных колес — необходимость для движения вперед, а наличие рядом папы это единственный способ справляться с трудностями.
Моя задача как отца достать велосипед из гаража, привести на ровную поверхность, направить его в безопасное место, посадить ребенка и отправить наслаждаться поездкой в прямом направлении под постоянным присмотром. Со временем можно будет опускать его вперед на пару метров, давать разгоняться и принимать решение о торможении.
На первых шагах обучения ребенка сложностей и напряжений гораздо больше чем удовольствия (разве что внутреннее моральная радость, что проводишь время с сыном). Иногда хочется просто сесть на свой велик и прокатиться в свое удовольствие по городу. Но для роста джуна надо заниматься всем — выбирать велосипед, периодически его обслуживать, менять и все это собственными руками без какого-либо (разве что морального) участия подрастающего велосипедиста. Площадки для катания и их безопасность тоже нужно искать самостоятельно и нести туда велосипед вместе с его владельцем.
На этом этапе задерживаются по-настоящему подолгу только если ментор (папа) не предлагает снять задние колеса или у самого байкера не возникает мыслей, что все ровесники гоняют уже на двух колесах, а он все еще на 4.
Начинающий программист
Все это актуально и для джунов-разрабов:
Начинается разработка обязательно с полностью изолированных сред без возможности хоть каким-то образом повлиять на прод (=страховочные колеса);
Любое "новое" первое время воспринимается как непреодолимая сложность и без ментора или долгого гуглежа не справиться;
Если чего-то пошло не так (
Unhandled exception
вызывает вопросы еще на этапе понимания слова exception), то сразу нужна помощь сверху (="пап, я упал, помоги");Если пропустить код джуна без изучения его PR, то 100% будет баг и, иногда, фатальный (=поедет под колеса грузовика).
Вместо страховочных колес у джунов изолированные окружения, где не могут ничего сломать, а вместо папы есть ментор, который не позволит уронить прод и покажет как лучше делать задачу.
Моя задача как ментора заонбордить джуна в процесс, настроить ему окружение, дать простую задачу, показать где именно эту задачу решать и даже подсказать какой код написать. Потом постепенно можно будет расширять его зону ответственности и пространство для самостоятельных рассуждений.
С джунами больше работы, чем пользы для меня и компании (разве что грезы о том, что потом он будет приносить пользу). Иногда от сложности обучения хочется сдаться, забить и делать свои сеньорские задачи (=кататься по городу в одиночку).
С джунов начинается путь любого разработчика. Это самый базовый уровень. В галере джунов любят закидывать задачами неопытные руководители. И наваливать на джуна задачи, думая что он вывезет, разгуглится и разберется — глупость, аналогичная идее посадить 3 летнего ребенка на велосипед и отправить его в магазин на велосипеде за покупками. Не будет ни покупок, ни велосипеда, ни ребенка.
Middle
Уверенный в себе велосипедист
Побыв достаточное время джуном и, что важно, при регулярных тренировках, велосипедист переходит из джунов к мидлам, а именно:
едет без задних доп колес и отлично может кататься по двору у дома;
при падении встает и едет дальше молча;
если отправить его в другой город, то точно заблудится;
если попросить его посмотреть за джуном (младшим братом), то, вероятнее всего, поедут под грузовик оба;
если дать ему задачу "доехать до дачи" и отправить, то, скорее всего, не доедет. Но уверенно заявит, что гарантированно доедет.
При переходе в статус велосипедиста-мидла у него появляется достаточно явная доля уверенности в своих силах, которая легко переходит в самоуверенность. Причина у этого простая — когда не знаешь о том где находится грань какого-то скилла, то кажется что уже знаешь 100% скилла. Оно и логично — если я не знаю как можно ехать на велосипеде еще лучше, то значит лучше ехать и невозможно!
С мидлом уже можно уверенно и интересно кататься по городу. Можно отправить его до школы через дорогу самостоятельно и он, с высокой вероятностью, доедет до нее. Может где-то упадет, но быстро встанет, придет в себя и поедет дальше. Он уже знает какие-то самые базовые правила дорожного движения и понимает, что дорогу переходить надо глядя слева-направо (но забывает об этом каждый третий раз).
Мидл-велосипедист может проехать большое расстояние в сопровождении сеньора-велосипедиста (папа/мама и другие). Сможет принять участие в сборке велосипеда, каком-то обслуживании ("подай ключ на 8") и главное сможет кататься самостоятельно по двору, осваивать вождение велосипеда дальше и погружаться в этот прекрасный велосипедный мир.
Но, с другой стороны, уверенность в том, что он доедет на велосипеде куда угодно может сыграть злую шутку. Желание ехать на велосипеде может перейти границы адекватности и мидл-велосипедист может ввести санкции (обидеться и заплакать) за то, что ему не разрешили самому поехать на велосипеде в дождь в деревню. Аргументация будет железная — "я уже туда ездил с тобой же" и тезисы "сейчас погода совсем другая и я с тобой доехать не смогу" разбиваются об уверенность мидла в том, что он точно доедет.
Понять, что велосипедист начинает переход в ранг мидлов можно по тому, что дополнительные колеса не приносят больше никакой пользы, а только мешают нормально ездить, закладывать на бок велосипед и проезжать в узких местах.
Средний разработчик
Если говорить о разработчиках, то мидлы уже могут спокойно разобраться в существующем проекте на уровне кода. Им все еще нужна будет помощь в том, чтобы настроить окружение для работы, но у мидла уже есть понимание как работают серьезные проекты и почему иногда надо потратить время на рефакторинг и приведение кодовой базы в порядок. Если нужно спроектировать изолированный модуль внутри приложения, то мидл вполне может реализовать свое видение решения задачи и его PR получит всего десяток комментариев, после обработки которых он будет принят.
С другой стороны, уверенность в своих знаниях очень близко граничит с самоуверенностью. Желание рефакторить может стать идеей-фикс и он будет всячески вовлекать бизнес и руководство в то, что надо переписать часть приложения или, в идеале, "написать его с нуля". А нужно это сделать потому, что он узнал как это можно сделать по-настоящему круто и правильно, что бы можно было "поддерживать проект потом десятилетиями и любой новый разработчик заонбордится в этот проект за 10 секунд!"
Проблемы бизнеса чужды для мидла, т.к. он познал мир разработки и ему не нужно опираться на деньги и то, откуда они берутся. На моей памяти от меня уходила пара мидлов из-за того, что наш подход недостаточно современный и крутой и "вообще на PHP уже давно бэк не пишут, везде модный go, микрофронтэнды, микросервисы и прочие прелести". Я не держу таких людей у себя — если он захотел пойти в компанию где будут реально крутые процессы и технологии, то ему действительно стоит туда идти, т.к. моя галера совсем не про это, а про зарабатывание денег.
Из мидлов состоит, в основном, моя компания и это самые крутые сотрудники в компании. Описанные выше сложности возникают далеко не со всеми и не все, кто это начал, остаются верны этой идее. Плюс мидла перед джуном очевидны — им можно ставить задачу более верхнеуровнево и можно контролировать уже выполнение бизнес-задачи, нежели адекватность подхода. Новые знания в миддлов вкачиваются достаточно легко и в какой-то момент мидл уже сам начинает вносить в команду какие-то новые полезные вещи, которые он подсмотрел где-то в интернете. И есть ненулевая вероятность, что он превратится с сеньора.
Senior уровень
На данный момент у меня в подчинении еще не было большого количество сеньоров и из детей только один дорос до мидла, а сам я себя отношу к Middle+++ как разработчику, так и велосипедисту. Поэтому я не могу знать наверняка все детали и отличительные особенности этого грейда со стороны.
Но, если кратко, Senior-разраб сам проект с нуля напишет с командой или без, тестами покроет и зарелизит успешно. А велосипедист велосипед себе купит, соберет, подкрутит и доедет на любой расстояние с пересадками и без. Переход от мидла к сеньору происходит уже не так явно и тяжело четко отследить момент когда это происходит.
Если спросишь любого сеньора-программиста или сеньора-велосипедиста, то он вряд ли скажет ровно тот день, когда перешел в этот статус. Все это происходит спустя годы опыта, попыток, проб и ошибок и в какой-то момент уже, сам не заметив, все делаешь сам, закрываешь сложные задачи и уезжаешь на дальние расстояния.
Без прохода через предыдущие этапы невозможно стать Senior-ом в любом деле. И пройти сразу оба этих этапа в любом деле невозможно за неделю, месяц, год и иногда даже несколько лет. Все это - кропотливый длительный путь через получение знаний, их обработку, применение в работе, закрепление и повторение этого по кругу тысячи раз.
Но длительности пути к сеньору не является достаточным условием для достижения этого результата. Если я 10 лет катаюсь с дополнительными колесами, то это не делает меня автоматически профессиональным велосипедистом - так и в программировании если я 10 лет крашу кнопки пусть даже в Яндексе это не делает меня Senior-разработчиком. Поэтому всегда стоит отслеживать за собой — "ведет ли текущая работа меня к росту как специалисту или я все также катаюсь с доп колесами на текущем уровне?"
Благодарю за внимание и буду рад вашей подписке на свой Telegram канал, где я делюсь подобными мыслями, но в более сжатом формате.
Комментарии (17)
peter316
27.09.2024 12:03+2Мне кажется, что задние колеса это зло. Ребенок привыкает на них опираться и потом всё равно приходится учиться держать равновесие преодолевая привычку опираться. С задними колесами и поведение велика совсем другое при поворотах. В общем это можно сравнить с обучением на скретче. Проще один день по бегать с ребёнком по хорошей площадке, постепенно ослабляя контроль и он быстрее научится ездить не имея плохую практику езды с задними колесами.
По моему джун - это тот, кто катается на велосипеде, постоянно смотрит по сторонам и постоянно падает, так как не может анализировать дорогу. Мидл - это тот кто может смотреть по сторонам, но не падает так, как успевает заранее проанализировать дорогу. А синьор - это тот кому мидл говорит, зачем ты купил вел за пол ляма, чем он от моего отличается.
amorev Автор
27.09.2024 12:03Согласен, что задние колеса зло. Я ими пользовался по глупости и лени с обоими детьми. На втором прям конкретно понял, что это была ошибка.
okterij
27.09.2024 12:03А не посоветуете, на какой площадке стоит "побегать" с ребёнком 9 лет, если не скретч?
Chloroform
27.09.2024 12:03Когда я был джун разрабом - я был мидл велосипедистом, а после 9 лет постоянного катания на работу уже наверно можно сеньор)
Заметил, что и 9 лет назад я мог проезжать достаточно большие расстояния около 40 км и не попасть в аварию. Но сейчас я могу проехать это расстояние намного быстрее.
Кстати, сеньоры когда падают - это намного больнее (
Karl_Benz
27.09.2024 12:03Зачем вы эти статьи про умения джуна пишете? Откройте вакансии и посмотрите требования: от джуна требуют навыков и опыта как у профессионального велогонщика.
SuharkovMP
По данной классификации кем будет профессиональный велогонщик?
amorev Автор
Мне кажется это будет что-то вроде спортивного программиста, который решает задачки на алгоритмы и тд)
mendler
тут можно ориентироваться на градацию гугла и использовать подкатегории Senior разработчиков, так как профессиональных уровней тоже бывает много:
Principal
Senior Principal
Distinguished
Fellow
Antares1991
Техлид?
mendler
техлид как и тимлид это должности в компании, мидл разработчик тоже может быть лидом, если больше никого нет выше по уровню
ayrtonSK
Хорошая аналогия в статье, лёгкая, с удовольствием прочел.
Кем же будет профик - вопрос конечно какой именно
Tech lead. Обвешан всякими датчиками пульса, мощности выводящими на гармин нужные метрики. Он будет читать ход гонки, предсказывать события, помогать команде, возить бочки, закрывать отрывы, участвовать в развозе на финиш, а в подготовительный период помогать команде выполнять тренировочный процесс. В специализации же зависит от того кем тебя родители родили, одни будут спринтерами, другие раздельщиками, а третьи специалистами по холмам, кто то грегери он больше на tech lead похож , а кто то уйдёт в кантри и будет крутым одиночкой.
Хотел написать архитектор или cto, но он уже не крутит педали, а tech lead с большой натяжкой проф велогон, скорее under спортивной школы по уровню данной шкалы.
Только не спрашивайте про триатлетов :).
serdgio
Святые computer science
bzq
Велогонщик будет техническим экспертом. Он, кстати, тоже уедет под колеса грузовика без присмотра, только очень быстро. А вот тренер будет архитектором.