среда, 11 мая 2022 г.

[prog.thoughts] Теряет ли сеньор свою сеньористость если кардинально меняет свой технологический стек

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

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

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


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

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

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

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

В этом смысле "сеньористость" при смене технологии, в общем-то никуда не девается.

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

И тут как раз можно поговорить про другую составляющую лычки "сеньор".


Во-вторых, речь про производительность труда.

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

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

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

Если говорить про языки программирования уровня C++, Java или C#, которые развиваются не одно десятилетие и вобрали в себя множество разнообразных фич, то освоение таких языков требует времени. Причем не только/столько на зазубривание синтаксиса и семантики, сколько на набивание шишек, всасывание в себя разнообразных best practices, заглядывание в различные темные уголки, знакомство с написанным в разном стиле кодом и т.д., и т.п.

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

Для меня очевидно, что если кто-то меняет C++ на Java (или Java на Rust, или PHP на C#), то потребуется изрядное время на то, чтобы в новом технологическом стеке "набить руку" до такой же степени, что и в старом.

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

Вторая причина -- это предметная область. Если повезет, то человек сменив технологический стек, все равно останется в той же предметной области. Скажем, занимался он HPC на Фортране, а перешел на C++. Или раньше он делал сайты для электронной коммерции на Python, а продолжил делать это на Rust или Java.

Однако, далеко не факт, что повезет. Так что смена технологического стека может быть связана со сменой предметной области. Скажем, из HPC на Фортране в Web-разработку на PHP. Или из реального времени на C++ в CRM на Java.

Тут уж, очевидно, потребуется время (и не малое) на то, чтобы въехать в эту самую предметную область. На это время, не менее очевидно, производительность труда неизбежно снизится.

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


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

1 комментарий:

Alex комментирует...

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