Чем отличаются позиции уровней junior, middle и senior в разработке?
Конкретное наполнение уровней зависит от стека технологий, который используется в компании. Это значит, что джуниор одной компании не всегда равноценен джуниору другой компании. Помимо стека технологий на градацию позиций влияет тип компании: аутсорс, аутстаф или продуктовая. В аутсорс-компании у разработчика есть возможность поработать на разных проектах и быстрее расти. В продуктовой компании скорость развития разработчика ниже, но более качественное. В аутстаф-компании развитие разработчика напрямую зависит от него и стоит дороже.
Чем же именно отличаются позиции?
Intern/Trainee
Перед джуном есть трамплин - позиция Intern или Trainee. Это интерн/стажёр без опыта, главная задача которого - усердно учиться и вырасти в джуна.
Главные требования:
- Хороший английский.
- Понимание выбранного инструмента и умение им пользоваться.
Требование к знанию английского не требует объяснений. Английский нужен всем. Про инструмент также довольно понятно. Если вы приходите на роль программиста, инструмент для вас — язык программирования со средствами разработки, которыми нужно уметь пользоваться. Приходить с нулевыми знаниями и надеяться, что всему научат на месте, параллельно выплачивая зарплату, бесполезно — слишком большой конкурс. За плечами многих кандидатов профессиональные курсы, они с легкостью отвечают на все теоретические вопросы и даже имеют опыт программирования «для себя». Конечно, таких людей берут в первую очередь.
Junior
Пройдя интернатуру, человек превращается в полноценного джуна. Стать джуном можно и без трамплина в виде позиции интерна, но тяжелее и с бОльшим количеством шишек. Но, заметим, тоже возможно. Основное требование к нему — способность самостоятельно выполнять технические задачи. Если в проекте выстроена архитектура, он должен без задержки реализовать очередной кусок типовой логики приложения. Хотя джун может время от времени ошибаться, не понимать нюансов, обсуждать планы реализации с тимлидом или вместе с ним проверять готовый код.
Необходимые качества:
- Желание развиваться и учиться (а на своих ошибках — особенно).
- Энергия и целеустремленность.
- Способность спокойно относиться к критике.
Нужно понимать, что на задачи, которые синьор решит за десять минут, джуну может потребоваться три подхода по часу каждый, а в процессе код придется переписывать полностью, затратив массу дополнительной энергии. Важно не бояться этого и чувствовать баланс: когда поднажать, попробовав решить-таки задачу самостоятельно, а когда, наоборот, перестать биться лбом о стену, сжигая проектное время, и обратиться за помощью. Оправдывать свою недостаточную производительность фразой «я же еще джун» — плохая идея.
Middle
Основное требование к мидл-разработчику — способность самостоятельно выполнять поставленные перед ним задачи. Отличие от джуна - делать всё без ошибок уровня джуна и понимать требования бизнеса и уметь переводить их в технические решения. Мидл-разработчик понимает, что именно делает приложение. Это позволяет глубже понять задачу, а, значит, точнее ее оценить и качественнее реализовать. Если требования не полностью покрывают какой-то сценарий, хороший разработчик обратит на это внимание на этапе планирования. А не когда приложение начнет валиться при любом нестандартном действии пользователя.Мидл-разработчик знаком со стандартными шаблонами и решениями при построении приложения в своей области, понимает, зачем они нужны, и умеет их применять. Стандартизация решений имеет большое значение при коллективной разработке кода, т. к. позволяет новому человеку быстрее разобраться, что к чему, и минимизирует количество ошибок. Понимание структуры типового приложения делает задачу его построения с нуля достаточно тривиальной, позволяет рассуждать о принципах правильной реализации и отличать хороший код от плохого. Мидл-разработчик понимает, что работает не один. Он умеет взаимодействовать с другими членами команды: может обсудить сложный момент с дизайнером, уточнить у бизнес-аналитика неполные требования или согласовать какое-то важное техническое решение с архитектором проекта (если такой есть) и, конечно, владеет соответствующими инструментами коллективной разработки.
Senior
Синьор — опытный разработчик, повидавший много кода, набивший кучу шишек и сумевший сделать из этого правильные выводы. Основная задача синьора — принимать правильные технологические решения в проекте. «Правильные» — это такие, которые приносят максимальную пользу бизнесу и минимизируют затраты. Хороший синьор не только понимает, что разрабатывает команда, но думает, какие задачи должно решить готовое приложение. Разрабатывая площадку для аукциона, синьор всегда задается вопросом о пиковой нагрузке и старается предусмотреть попытки конкурентной записи в таблицы БД. Он заранее думает об узких местах системы, о возможности ее масштабирования, помнит об уязвимостях и проблемах, вызванных неправильным использованием инструментов.
Такой специалист делает удивительную вещь — решает проблемы еще до того, как они появились.
Основные характеристики синьора:
- Звание синьора невозможно получить быстро. Нужно наработать обширный опыт и понять, что отличает хорошо сделанный продукт от тяп-ляп-разработки, как проявляет себя технический долг, сколько стоит рефакторинг, зачем на самом деле нужны паттерны и так ли необходимы бесконечные уровни абстракции. Необходимо самостоятельно принять важные решения и дать им пройти испытание временем, иначе оценить их не получится.
- Синьору необходимы хорошие коммуникативные навыки, потому что он должен не только предложить правильное решение, но и убедить в своей правоте заказчика и команду. Если вы не смогли отстоять хорошее решение и вместо него было принято плохое, винить в этом придется самого себя. Вариант «я же говорил» на уровне Senior уже не работает. С командой то же самое — мало знать, как надо, нужно еще и уметь это доходчиво объяснить. Тогда команда быстро растет и набирается опыта, избегая болезненных ошибок. Авторитарный подход («делайте, как я сказал») зачастую приводит к внутренним конфликтам, и ситуацию на проекте отнюдь не улучшает — нужно стараться этого избегать.
- Синьор не может обойтись без понимания устройства библиотек и фреймворков. Если инструмент разработки для вас — черный ящик, и вы составляете приложение из готовых частей, не зная, что у каждой из них под капотом, продукт всегда будет неустойчивым и непредсказуемым.
А что дальше? А дальше рост по предпочтениям: тимлид, менеджмент, эксперт, архитектор. Но об этом поговорим отдельно)
Доп. источник: DOU, Habr