В одном из срачей на LOR-е возникло столкновение мнений: один участник спора высказался в духе, что сеньор при переходе с одного языка программирования на другой окажется уже не сеньором, а миддлом в лучшем случае. Другой же возражал и говорил, что сеньористось, если она настоящая сеньористость, никуда не исчезает.
Попробую немного порассуждать на эту тему, хотя у меня лично совсем небольшой опыт именно что кардинальной смены технологического стека.
Прежде всего скажу о том, что в контексте данного разговора нужно выделить две ключевые составляющие лычки "сеньор", на которых будет сосредоточено внимание.
Во-первых, "сеньористость" определяет уровень самостоятельности разработчика и степень контроля, который за этим разработчиком нужен.
Т.е. джуниору нужно не просто дать задачу, но еще и рассказать как именно ее решать, а потом проверить результат. И, желательно, отслеживать процесс выполнения задачи.
Тогда как за мидлом уже следить не нужно, хотя результат проверять желательно. Да и способ решения задачи, если мидл ранее с подобным не сталкивался, может потребоваться подсказать.
А вот сеньор берет задачу в достаточно общей формулировке, самостоятельно находит способы решения, воплощает это решение в жизнь и доводит это решение до продакшена. Без необходимости контролировать выполнение этих шагов.
В этом смысле "сеньористость" при смене технологии, в общем-то никуда не девается.
С поправкой на то, что в своем старом технологическом стеке сеньор уже знал где и как копать в случае чего. А в новом технологическом стеке у него таких знаний пока нет и потребуется время, чтобы эти знания накопить. Можно ожидать, что процесс накопления должен будет идти достаточно споро, т.к. у человека уже есть навык и опыт поиска и осмысления информации. Но все равно на какое-то время эффективность разработчика снизится.
И тут как раз можно поговорить про другую составляющую лычки "сеньор".
Во-вторых, речь про производительность труда.
Принято считать, что один и тот же код сеньор напишет быстрее, с меньшим количеством ошибок, более эффективно, проще, понятнее и сопровождабельнее, чем мидл. Не говоря уж про джуна.
Подозреваю, что в большинстве случаев так оно бы и должно было бы быть. Но тут нужно понимать из-за чего производительность труда у сеньора оказывается выше, чем у мидла и джуна.
Первая причина -- это другой уровень владения технологическим стеком. Уровень мастерства при обращении с инструментом. Грубо говоря, когда инструмент за много лет стал в прямом смысле продолжением рук.
Если говорить про языки программирования уровня C++, Java или C#, которые развиваются не одно десятилетие и вобрали в себя множество разнообразных фич, то освоение таких языков требует времени. Причем не только/столько на зазубривание синтаксиса и семантики, сколько на набивание шишек, всасывание в себя разнообразных best practices, заглядывание в различные темные уголки, знакомство с написанным в разном стиле кодом и т.д., и т.п.
Но в современном мире знания одного языка программирования мало, нужно еще и владеть неким количеством библиотек/фреймворков. В каких-то языках (и предметных областях) это оказывается даже более важно, чем знание тонкостей языка программирования.
Для меня очевидно, что если кто-то меняет C++ на Java (или Java на Rust, или PHP на C#), то потребуется изрядное время на то, чтобы в новом технологическом стеке "набить руку" до такой же степени, что и в старом.
Так что уже здесь стоит ожидать падения производительности труда. Т.е. сеньор уже не будет "выдавать на гора" столько же, сколько он это делал на своем прошлом технологическом стеке.
Вторая причина -- это предметная область. Если повезет, то человек сменив технологический стек, все равно останется в той же предметной области. Скажем, занимался он HPC на Фортране, а перешел на C++. Или раньше он делал сайты для электронной коммерции на Python, а продолжил делать это на Rust или Java.
Однако, далеко не факт, что повезет. Так что смена технологического стека может быть связана со сменой предметной области. Скажем, из HPC на Фортране в Web-разработку на PHP. Или из реального времени на C++ в CRM на Java.
Тут уж, очевидно, потребуется время (и не малое) на то, чтобы въехать в эту самую предметную область. На это время, не менее очевидно, производительность труда неизбежно снизится.
Сюда же можно добавить и такой фактор, как смена коллектива. Если некто меняет технологический стек одновременно со сменой работы, то ему нужно привыкнуть к новому месту. На что, если мне не изменяет склероз, может уходить от шести до девяти месяцев (и это считается нормальным).
Так что, резюмируя, лично я склонен согласиться с тем, что сеньор, кардинально сменивший свой технологический стек, скорее всего временно потеряет свою сеньористось и опустится, в лучшем случае, до уровня миддла.
Согласен. Даже если не меняются ни стек, ни предметная область, но меняется коллектив, проседание практически неизбежно. И это нормально: новый коллектив, другие порядки. Даже переход из одной команды в другую в рамках одной организации может поначалу быть весьма дискомфортным
ОтветитьУдалить