Привет! Меня зовут Александр Шутай, я руководитель отдела PHP в AGIMA. Среди моих задач важное место занимают кадровые вопросы. Мы вынуждены постоянно искать новых специалистов, притом что на рынке их всегда не хватает. Пару лет назад мы поняли, что устали и что хотим оптимизировать процесс подбора. И вскоре начали готовить разработчиков самостоятельно.
По сути, мы открыли свой маленький заводик, на котором из зеленых стажеров делаем IT-специалистов уровня Junior. За последние пару лет мы запустили уже 9 направлений стажировок, подготовили 36 менторов и выпустили в мир более 100 новый специалистов. Почти все из них успешно трудятся у нас и у наших партнеров.
В этой статье я рассказываю, как мы привлекаем стажеров, сколько времени тратим на их подготовку, как применяем их на живых проектах. Если управляете разработкой или работаете в рекрутинге, наш опыт может быть вам полезен. Полную версию гайда найдете на GitHub. Делитесь в комментариях своим опытом и идеями — будем вместе дополнять гайд.
![](https://habrastorage.org/getpro/habr/upload_files/970/1a3/705/9701a3705c0d2c2f2c089400c60c4371.png)
Зачем нужны стажеры
Подробные и развернутые ответы на эти вопросы мои коллеги уже давали в отдельных статьях. Вот здесь мы объясняем важность стажировок с точки зрения разработки, а вот здесь — с точки зрения управления командой.
Но если совсем в двух словах, то:
стажеры потенциально закрывают кадровый вопрос;
стажеры более лояльны к компании — у нас они работают не менее 2–3 лет;
стажеры освобождают время более опытных сотрудников для более сложных задач;
стажеры зачастую молоды, а значит, принесут в компанию свои ценности — они не боятся пробовать новое и не сдадут на ревью древнее легаси.
Ну и еще один неочевидный плюс: менторы, которые занимаются обучением и наставничеством, хорошо развивают свои лидерские и управленческие навыки. И это способствует их быстрому карьерному росту.
Если суммировать, мы убеждены, что стажеры — это не лишняя социальная нагрузка для компании, а разумная инвестиция в будущее. Но работать с ними надо уметь, чтобы деньги не улетали в трубу. А любой стажер — это затраты.
Сколько стоит один стажер
Ниже привожу трудочасы, которые уйдут на создание одного нового IT-специалиста. Понимаю, что затраты могут отличаться в зависимости от корпоративных процессов, но предлагаю отталкиваться от этих данных.
Нам потребуются часы нескольких сотрудников:
Этап | Роль | Часы |
Поиск стажеров | Рекрутер | 4 |
Отбор кандидатов, собеседования | Ментор | 4 |
Онбординг, мотивационные встречи | HR | 4 |
Процесс обучения | Ментор | 36 |
Онбординг в рабочую команду | Тимлид | 4 |
Экзамены | Ментор | 3 |
Также перед открытием направления стажировки вам потребуется такое время:
Этап | Роль | Часы |
Разработка программы обучения | Эксперт направления | 40 |
Отбор менторов | Руководитель | 4 |
Подготовка менторов | Руководитель | 12 |
Кроме того, не будем забывать про стипендию. Про ее размер я порассуждаю в главе о мотивации.
Возможно, вам покажется, что часы местами занижены. Например, работа ментора непосредственно над процессом обучения одного человека — это всего 36 часов. Но я привожу часы уже после оптимизации процессов. Всё-таки наша цель — наладить промышленный выпуск стажеров. Поэтому посмотрим, как вы можете сократить трудозатраты на новичка.
Портрет кандидата
Перед открытием позиции, нужно сформировать портрет кандидата.
Если говорить общими словами, то советую искать человека с базовыми навыками в программировании, желанием учиться и развиваться, ответственностью и способностью работать в команде.
А если вдаваться в детали, то, скорее всего, мы ищем студента последнего курса или выпускника онлайн-школы. Лучше ориентироваться либо на людей до 25 лет, либо на людей без странного бэкграунда. Конечно, вы можете поверить в 50-летнего сотрудника охранного предприятия, который решил круто изменить жизнь, но, по нашему опыту, шансов на успех в этом случае меньше.
Обращайте внимание на опыт: знание университетского курса по программированию, алгоритмам, базам. Классно, если он может показать учебные или собственные пет-проекты.
Стратегии поиска
Карьерные сайты
После размещения вакансии о стажировке вы за пару дней получите ~300 откликов. Круто, но радоваться рано. Только пара процентов из них будет валидна. А ваши рекрутеры будут часами фильтровать резюмешки. Но даже этот способ можно улучшить:
Используйте авторазбор откликов. На каждом карьерном сайте есть такой инструмент. Он поможет сократить воронку на основе фильтров по возрасту, опыту и т. д.
Перед отправкой отклика добавьте обязательным полем простое задание. Это не тестовое, а фильтр для отсеивания людей не из IT. Например — что такое IP-адрес?
Профильные телеграм-каналы
Попросите рекрутера составить подборку открытых каналов и групп профильных вузов. Поищите нишевые чаты по разработке — например, по фреймворку Laravel. Познакомьтесь с их админами. И если они не против, отправьте туда приглашение на стажировку или, например, ссылку на лендинг про карьеру в компании.
Платформы онлайн-образования
Все популярные платформы онлайн-образования рады партнерам, которые готовы трудоустраивать выпускников. Вы получите довольно хорошую воронку из подготовленных джунов. При этом, по нашим срезам, джун после курсов будет просить 60–80 тысяч. Это дорого и подходит не всем. Но если бюджеты позволяют, то выпускники курсов — надежный вариант. У этих людей высокая мотивация — они реально хотят влиться в IT.
Привлечь их в свою компанию вам опять же поможет хороший лендинг. Он должен рассказывать про направления стажировки и программу обучения, а также подчеркивать лучшие стороны вашей компании и офиса. Ссылка на такой лендинг в вакансии дала нам ощутимый прирост в количестве качественных откликов.
Как отбирать
Наш подход предполагает отбор стажеров с помощью тестового задания. Уверен, что вы по-разному относитесь к этому инструменту, а многие откровенно его не любят. Я как раз из тех, кто считает, что тестовое не подходит для поиска квалифицированного специалиста. Но в случае со стажерами это хороший инструмент для оценки его знаний.
Тестовое задание
Наше тестовое состоит из двух частей. Первая — это вопросы и задачки в виде опросника, время на ответы ограничено. Для удобства можно использовать Google Forms с дополнением Form Timer.
Составьте нескольких теоретических задач по языку программирования:
Каковы отличия между одинарными (' ') и двойными (" ") кавычками при работе с строками в PHP?
Что такое сессии в PHP? Как они работают и зачем используются?
Мы хотим, чтобы потенциальный стажер знал теорию ООП:
Что такое конструктор класса? Какие задачи он выполняет?
Что такое инкапсуляция в ООП? Какие преимущества она предоставляет?
Также оцениваем навыки работы с БД. Здесь не рекомендуем давать сложные задачки с агрегациями и объединениями, потому что это всё проходится в универах на средних курсах и выветривается к концу обучения. Если человек умеет делать средние запросы, то точно вспомнит, как работать с джойнами, в процессе стажировки.
Пример задач на составление SELECT-запроса:
Выберите из таблицы “users” всех пользователей старше 10 лет и проживающих в Berlin.
Выведите общую сумму всех заказов для каждого пользователя из таблицы “orders”.
Если ваше тестовое задание содержит фрагмент кода, который нужно исправить, дополнить либо объяснить — рекомендую предоставлять код в виде изображения, чтобы было сложнее его скопировать и прогнать через ChatGPT. Правда, сейчас нейросети классно распознают и содержание картинок. Так что делитесь в комментариях другими способами, которые затрудняют использование ИИ.
Вторая часть задания — практическая задача на разработку формы обратной связи с валидацией по полям и сохранением в файл. Еще можно предложить разработать простую систему бронирования билетов в кинотеатре.
Также рекомендую попросить соискателя расположить код в репозитории. Это дает ему бонусные очки, так как показывает, что человек знаком с системами контроля версий. Ну или хотя бы прочитал про GitHub перед отправкой тестового.
И снова совет. Попросите проверяющего прогнать все вопросы и практические задачи через ИИ. Так он сразу поймет, как отличить решение человека от ИИ.
Собеседование
И финальный этап отбора — личное знакомство. При выборе стажера результат тестового важен не так сильно, как огонь в глазах. Поэтому оценивайте энтузиазм, целеустремленность и эмоциональную вовлеченность на интервью. И обязательно попросите рассказать, как человек решал тестовое и с какими сложностями столкнулся.
Если вам всё нравится и вы видите перед собой заряженного человека — берите его под крыло.
Кто будет учить
Менторы — это тимлиды или старшие разработчики. Для них это, конечно, дополнительная нагрузка, но дело добровольное. Зачастую обучение стажеров привязано к мотивационной системе компании. Например, каждый выпущенный стажер может конвертироваться в премию, дни отпуска и т. п.
Какие качества важны для ментора:
Способность объяснять сложные вещи простым языком. Например, я прошу потенциального ментора рассказать, что такое замыкание, человеку, который мало знаком с программированием. Пока он рассказывает, я задаю глупые вопросы, чтобы понять, как потенциальный ментор будет на это реагировать.
Склонность к эмпатии и наличие терпения при работе с новичками. Некоторые вещи невозможно запомнить с первого раза, приходится повторять по несколько раз, но при этом сохранять спокойствие.
Некоторые компании нанимают специального преподавателя на полный рабочий день. И у этого решения есть большой плюс: не нужно отвлекать команду от работы. При этом трудозатраты на штатного наставника и четырех менторов из команды сопоставимы.
Как будем учить
Вот те принципы, которых мы придерживаемся при составлении программы:
Вы предоставляете знания и инструменты, но студент осваивает их самостоятельно.
У каждого раздела есть нормативный срок изучения.
Теоретические блоки завершаются онлайн-тестом.
Практические блоки — домашним заданием на выполнение схожего функционала.
Стажер три раза в неделю встречается с ментором для обсуждения вопросов и проверки домашних заданий.
Ментор старается не давать готовых ответов, а только направлять стажера по правильному пути. Если вопрос сложный — предлагает порассуждать. Если простой — дает перечитать материал.
Нормативная длительность стажировки — 4 месяца. Этого достаточно, чтобы научиться работать с фреймворком, основными инструментами, а также чтобы начать приносить пользу проектной команде. Через 4 месяца вы получаете специалиста с хорошей базой, умением работать в команде и с твердым намерением вырасти за ближайший год в полноценного разработчика.
Вот какую структуру программы для самостоятельного обучения мы предлагаем:
![](https://habrastorage.org/getpro/habr/upload_files/6e4/81f/0e4/6e481f0e462d0f30a6bb889f2673130e.png)
Подробная программа с примерами и необходимыми пояснениями — в полном тексте гайда.
Как интегрировать стажера в команду
Уже после второго экзамена стажер точно готов применять новые знания на практике. Поэтому внедряем его в проектную команду.
После онбординга в проект и документацию назначьте стажеру наставника. Им может стать разработчик уровня Middle+, который будет помогать новичку с решением задач. Его цель — направлять стажера в правильную сторону, валидировать декомпозицию и решение задач. Такого человека иногда называют бадди, и он не занимается обучением, а адаптирует нового коллегу.
Middle+ подходит для этой роли больше всего. Он хорошо разбирается в предметной области, умеет самостоятельно делать задачи и принимать решения. К тому же для него наставничество — хорошая возможность прокачаться.
Хороший вариант — использовать технику парного программирования, когда бадди решает свою задачу вместе со стажером, параллельно комментируя действия.
Обязательно пригласите стажера на все дейлики, стендапы, ретроспективы и другие командные мероприятия, чтобы он мог быстрее войти в рабочий процесс и погрузился в командную работу. Следите за дисциплиной посещения.
Как мотивировать стажера
Учиться бывает сложно — всегда есть шанс споткнуться или потеряться. Поэтому нам важно следить за мотивацией наших студентов. В конце концов мы не хотим, чтобы они выгорели и сбежали из IT, так ничего и не поняв об этой сфере. Вот какие инструменты мотивации мы используем:
Стипендия. Давно прошла пора, когда стажеров насильно сгоняли на предприятия и бесплатно эксплуатировали для производственных нужд. Сейчас все понимают, что любая работа (а учеба — тоже работа) должна предполагать вознаграждение.
Поэтому каждому стажеру мы предлагаем зарплату в размере одного прожиточного минимума. Да, это небольшие деньги. Но мы показываем стажеру, что действительно заинтересованы в нем. И стажер, начиная получать деньги за учебу, понимает, что всё серьезно и стоит к этому относиться ответственно.
После успешного прохождения первого экзамена мы, как правило, повышаем стипендию до 50% от ставки джуна. А после второго экзамена и выхода в проектную команду — до 75% ставки джуна.1-to-1. HR-специалисты в нашей компании раз в две недели встречаются не только с менторами, но и со стажером. Так мы своевременно выявляем проблемы и неудобства, о которых стажер стесняется сказать ментору. Еще это позволяет узнать о трудностях в обучении — софт-скиллы HR-ов, как правило, помогают настроить человека на искренний разговор.
Кроме того, нам важно следить, как развивается личный интерес стажера к осваиваемому предмету. Человек мог посетить наш митап по аналитике, поговорить с аналитиками в курилке и понять, что аналитика ему интереснее разработки. Нужно донести до него, что он может поменять направление обучения, и это нормально на старте карьеры.Полная интеграция в компанию. Стажер с первого дня должен чувствовать себя членом классной компании и иметь доступ ко всем активностям: митапы, корпоративы, клубы, обучающие материалы, поддержка.
И не жалейте печенек на кухне! Стажеры это любят.
После обучения
После основной программ обучения полезно провести несколько важных действий:
Рекомендую проводить ретроспективы с каждым выпуском, чтобы понимать, что было хорошо, а что стоит улучшить. Обратная связь помогает доработать программу обучения и лучше раскрыть сложные моменты.
Выдавайте именные сертификаты, подтверждающие квалификацию по изученным материалам.
Теперь всё, вы выпустили в жизнь нового классного IT-специалиста.
Насущные вопросы
Что, если джун со временем уйдет из вашей компании, а вы вложили в него столько сил?
Это не страшно. Он был с вами как минимум два года. И скорее всего, за это время он успел окупиться. Кроме того, вы вывели его в IT, многому научили — у него от работы с вами останутся только хорошие впечатления. А значит, он посоветует вас друзьям и коллегам. В общем, одни плюсы.
Набирать толпу стажеров или под гарантированные проекты?
Мы набираем стажеров постоянно, но в адекватном объеме — по 4–5 человек в квартал по каждому направлению. Этого хватает. Через год-полтора новички компенсируют естественную текучку кадров.
Знакомые на рынке действуют иначе. Они набирают толпу стажеров, дают им материалы и учат. Но в итоге выбирают только 1–2 человек, которым предлагают работу. Остальные просто получают сертификаты.
Как монетизировать стажера в заказной разработке?
В заказной разработке за количество разработчиков в команде платит заказчик. Будет нехорошо, если кто-то продаст ему стажера под видом разработчика. Поэтому обычно мы предлагаем джунов как бесплатное дополнение к Middle-разработчикам. Когда джун окрепнет и станет приносить настоящую пользу, то аргументировано защищаем перед заказчиком его труд и предлагаем официально оплачивать его работу.
Закрепляем
Итак, вы, как и мы, созрели масштабировать команду не только за счет опытных ребят с рынка, но и за счет молодых и перспективных. Алгоритм ваших действий прост:
Первым делом определяете, кто вам нужен: где этот человек учится или учился, сколько ему лет, какие навыки и качества вам важнее всего. Думайте на перспективу, прогнозируйте свои потребности в будущем.
Начинайте искать стажеров: тут лучше использовать не только работные и карьерные сайты, но и целевые площадки вроде социальных сообществ вузов, и сообщества онлайн-школ.
Подготовьте не очень сложное тестовое, чтобы отсеять нерелевантных соискателей. Но самый важный этап — собеседование. Нам нужны люди, которые очень-очень-очень хотят учиться.
Подберите в своей команде ментора — тимлида или старшего разработчика. Лучше, если это будет человек, который умеет объяснять сложные вещи просто и не будет злиться на новичка, когда тот будет что-то не понимать.
Составьте программу обучения таким образом, чтобы стажер получал как теоретические знания, так и практические. Проверяйте, как он усваивает информацию, на экзаменах.
Когда чувствуете, что падаван готов, интегрируйте его в команду реального проекта. Но не бросайте одного, а назначьте бадди — это не ментор, но более опытный товарищ, к которому можно обратиться со сложным вопросом.
Не забывайте о мотивации. Любая работа должна оплачиваться, а учеба — та же работа. Это инвестиция в будущее, стажер должен чувствовать, что компания в нем заинтересована.
Желаю всем толковых стажеров и четких процессов. Готов ответить на любые вопросы в комментариях. Развернутая версия гайда — в GitHub. Также веду отдельный телеграм-канал про управление командой разработки — приходите читать.