Всем привет! Меня зовут Иван Сёмин, я руковожу несколькими командами разработки в компании Домклик. На данный момент в моём подчинении 28 человек, часть из которых приходила на junior-позицию. Хочу поделиться своим видением погружения новых сотрудников в процессы компании и коллектив, и рассказать о способах развития разработчиков до middle-уровня в крупных командах.

Кто такой junior

Разберём на примере junior в Python-разработке. Разработчик может претендовать на junior-позицию, если он хорошо знает основы Python: базовый синтаксис, типы данных, области видимости, ООП, а также умеет писать модульные-тесты. Если же какие-то из этих требований не выполняются, но есть базовые навыки программирования, то кандидат может претендовать на позицию стажёра с быстрым ростом до джуна.

Для веб-программирования хочется увидеть у кандидата знание асинхронного программирования (и чем оно отличается от синхронного) и основ SQL. Также из-за специфики развёртывания веб-сервисов нужны хотя бы базовые навыки обращения с Linux-системами и знание Docker/Docker-compose.

Большим плюсом для работодателя будет наличие портфолио из pet-проектов на github (разработанных с нуля, а не выполненных в рамках какого-то курса под диктовку лектора).

Специфика нашей компании и команд

В нашей компании сложилась хорошая культура разработки, всегда работает принцип «попроси — и тебе помогут». Благодаря этому новички быстрее адаптируются, а многие сотрудники работают на одном месте дольше стандартных для рынка двух-трёх лет. Компания заинтересована в разнопланово развитых инженерах: кроме основного навыка (backend/frontend) от сотрудника ожидают развитие навыков DevOPs (чтобы понимать, как код попадает в тестовые и production-среды) и баз данных (потому что ряд сервисов работает под высокой нагрузкой и нужно представлять себе дальнейшие оптимизации). Плюсом будет изучение (хотя бы на базовом уровне) frontend-а в дополнение к backend-у (или наоборот) — это позволит лучше понимать своих коллег на «другой» стороне разработки, а также даст возможность закрывать ряд задач бизнеса «под ключ».

Перейдём к этапам погружения.

Этап первый

В свой первый рабочий день разработчик подписывает документы в HR, получает технику (мы используем Macbook Pro) и проходит базовый onboarding со своим руководителем. Во время адаптации мы кратко рассказываем о процессах в компании, о техническом инструментарии, корпоративном портале. Дальше идёт погружение в бизнес-часть выбранной разработчиком команды. Также очень важно, чтобы в свой первый рабочий день новый сотрудник познакомился со своей командой и получил первую задачу, с которой начнётся его техническое погружение в проект. Наставник новичка (опытный сотрудник из команды, который будет отвечать на все технические вопросы во время испытательного срока) поможет локально поднять проект, подключиться к тестовым стендам и базам.

Этап второй

В течение первых спринтов новичок получает, в основном, простые и детально описанные задачи, привыкает к рабочему ритму команды. Со временем приобретённых навыков становится достаточно, чтобы на постоянной основе решать несложные задачи по одному или нескольким бизнес-направлениям. Вылитые в production задачи помогают увидеть приносимую команде пользу, а отзывы пользователей системы, как правило, хорошо мотивируют на дальнейшее получение опыта.

Этап третий

Примерно в середине испытательного срока нового сотрудника знакомят со всеми обязанностями релиз-инженера (эту роль может исполнять любой разработчик из команды, на неё назначают при планировании нового спринта). Первые самостоятельные релизы проходят под чутким контролем наставника. Также в ряде команд есть ротируемая роль support-инженера: это разработчик, который решает все появляющиеся в течение дня тикеты от пользователей. Большинство тикетов будет сложно разобрать самостоятельно (если инженер не знаком с этой частью системы), поэтому наставник подскажет, к кому обратиться за помощью. Благодаря этому подходу хорошо получается делиться знаниями и взаимодействовать со всеми членами команды.

Этап четвёртый

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

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

Заключение

В разных компаниях и у разных руководителей отношение к junior-разработчикам может отличаться. Выше описано моё видение этих этапов, и в «чистом» виде оно применимо к крупным командам, где можно распределить нагрузку по адаптации новичка на большое количество сотрудника. В маленькие команды гораздо реже берут инженеров junior-уровня, так как может быть дефицит наставников и добавление нового члена команды на месяц-полтора сильно замедлит темп работы коллектива. Но в любом случае каждой крупной компании просто необходимо брать разработчиков начального уровня: для отрасли очень важен приток новых светлых умов, которые в дальнейшем будут становиться опорой для бизнеса.

Комментарии (7)


  1. zloddey
    29.03.2022 11:48
    +2

    Извините...

    Hidden text
    Тимлид Герасим перед погружением junior-разработчика
    Тимлид Герасим перед погружением junior-разработчика


  1. Vamelan
    29.03.2022 12:15

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


    1. SeekerOfTruth Автор
      29.03.2022 12:47
      +1

      полностью согласен с вами
      описал это в четвёртом пункте(этапе), чтобы не загромождать каждый пункт "необходимостью получения ОС"

      про незамыленный взгляд - действительно помогает понять куски системы, сделанные слишком сложно, и планировать рефакторинг


  1. SkiBY
    29.03.2022 15:45

    Меня смутило определение junior. Этого действительно достаточно - знания основ? В моей картине мира это как раз таки уровень стажёра, а не прямо готового junior

    Если все же у вас так, то как происходит рост до middle у питониста?


    1. SeekerOfTruth Автор
      29.03.2022 16:01

      т к определение junior у всех разное, то специально описал минимальные требования к junior позиции

      по росту до middle:
      сотрудник на этой позиции должен уметь самостоятельно вести проекты(только по архитектурным вопросам обращаясь к сеньёрам и техлиду), иметь опыт выполненных с нуля проектов. При расписывании задач middle не должен требовать слишком мелкие детали - их он проработает самостоятельно, и при необходимости на код ревью защитит перед старшими товарищами. Оттачивание этих навыков начинается на четвёртом этапе, в конце испытательного - когда сотруднику дадут новый проект либо скажут значительно модифицировать текущий. Эту задачу он будет так же выполнять вместе с наставником, но цель - делать это максимально самостоятельно, обращаясь только по ключевым или архитектурным вопросам.

      так же middle должен хорошо знать свой текущий проект и уметь его лить в прод - эти навыки сотрудник получает на третьем этапе


  1. Eujene
    31.03.2022 10:00
    +1

    Наличие pet проектов? За десятки пройденных собесов у меня их попросили показать раза два, а обсудить их - нуль.


    1. SeekerOfTruth Автор
      31.03.2022 10:52

      Как правило pet проекты смотрятся не на собеседовании(иначе оно сильно растянется). Я смотрю до собеседования, верхнеуровнево смотрю логику и кодстайл, прикидываю будет ли такой проект понятен другим программистам из команды. Могу на самом собеседовании задать доп вопрос по пет проекту если что то заинтересовало или что то было непонятно