Blog
Back

Here's how we knew we needed more interns

#Development 08 september 2022
  • Alexey Polovinkin

    Head of python development

Всем привет! Меня зовут Алексей Половинкин, я руковожу отделом Python в AGIMA. Последние пару лет мы набираем в команду больше стажеров. Это был наш эксперимент — хотели посмотреть, что из этого выйдет. Результат впечатлил: мы поняли, что нам нравится с ними работать. В этой статье я попробую разрушить несколько стереотипов о стажировках и объяснить, в чем плюсы работы с неопытными специалистами.

Предпосылки

Наша компания на рынке уже больше 15 лет. Мы занимаемся аутсорс-разработкой для крупных бизнесов и за это время реализовали огромное количество сложных проектов. Вместе с тем мы плотно работаем с подрядчиками, постоянно ищем людей как к себе в штат, так и в штат клиентов. Для примера, за прошлый год я провел больше 100 собеседований. В этом году уже 50.

Собеседований очень много: из 10 кандидатов мы берем 1. Большая часть из них не проходит по навыкам. Встречались разработчики, у которых 8–10 лет опыта, но которые практически не разбираются во внутренностях фреймворков, никогда не занимались оптимизацией ORM, плохо знакомы с SQL и т. п. Кандидаты просят высокую зарплату, но не дотягивают даже до Middle-грейда нашей компании.

И это, честно говоря, удручает. Зачастую поиски адекватного разработчика затягиваются на месяцы. В условиях нашего бизнеса это очень долго.

Подобная тенденция привела нас к мысли, что нужно все-таки открывать программу стажировки. Зачем? Мы решили, что уровень Junior+/Middle- вполне досягаем за полгода плотной работы над реальными проектами под менторством наших тимлидов.


В прошлом году мы взяли несколько стажеров «на пробу». Взяли активных ребят, с хорошим базовым пониманием Python, но без особого опыта в реальной разработке. Все они были разных возрастов — от 20 до 30 лет. Уровень навыков у них был «прошел курсы и работаю с Pet-проектами». Затем дали им несколько небольших внутренних проектов, чтобы посмотреть на скорость их обучения и навыки. После этого подключили их к реальным проектам и дали возможность расти.

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

Зачем же нужны стажеры?

В нашей компании качество на первом месте. Мы строим свою культуру разработки, ищем лучшие решения из нашего опыта, дорабатываем и переиспользуем их. У нас есть определенные требования к качеству ТЗ, реализованного кода, автотестам и безопасности. Эти требования и принципы приняты далеко не везде.

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

И мы сделали ставку на долгосрочный актив в виде стажировок.


Наша задача — найти хорошего начинающего разработчика, дать ему задачи и ментора и привить нашу культуру.

Культура разработки — одна из основных наших целей как компании. Мы хотим, чтобы за код, который мы передаем нашему клиенту, было не стыдно. А такая культура невозможна без «благотворительности». Ей нужно делиться — только так мы увидим, где мы ошибаемся, где есть недочеты. Стажеры помогают обкатывать наши процессы, помогают выявить недостаточность информации, а зачастую преподносят что-то новое.

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

Еще один хороший повод завести стажера (да простят они меня) — это прокачивание навыков коммуникации у наших Senior и тимлидов. Процесс обучения требует определенных навыков: терпения, структуризации знаний, декомпозиции сложного на простое, умения объяснять. Эти навыки полезны во многих аспектах работы тимлида. И процесс обучения стажеров поможет прокачать или развить эти навыки.

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

Где искать стажеров

1. Мы достаточно плотно работаем с обучающими платформами: SkillBox, SkillFactory, Coursera и др. Были даже кандидаты, которые проходили наши курсы на Нетологии и GeekBrains — они узнавали меня на собеседовании. На многих платформах дают неплохой теоретический материал, который стараются подтвердить практикой. И по опыту, люди, которые выходят с курсов, обладают достаточным набором навыков, чтобы быстро дойти до позиции Junior-разработчика.

2. Иногда берем людей и без курсов. Один из наших стажеров пришел в компанию в возрасте 30 лет из юридической области. Он плотно читал книги, пробовал онлайн-платформы с задачами по Python, делал свои небольшие приложения. В конце прошлого года он успешно прошел стажировку и до сих пор активно растет в нашей компании.

3. Я общался с некоторыми компаниями, которые ищут стажеров в университетах. У них этот подход систематизирован, и людей они ищут сразу после ЕГЭ. Стажеры проходят стажировку напрямую в подразделениях компании и с очень большой вероятностью остаются в компании на годы после завершения обучения.

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

Главное в поисках стажера — отсечь тех, кому неинтересно программирование. Мы ищем именно горящие глаза, ребят, которые готовы посвятить всё свободное время развитию.

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

Как работаем со стажерами

Как и говорил, мы не обучаем стажеров, а лишь направляем их. Это не значит, что мы с порога бросаем их в котел программирования. Мы начинаем с общих вводных в работу программиста. Учим гуглить, рассказываем про основные инструменты разработчика (многие, например, не умеют работать с дебаг-режимом PyCharm), объясняем устройство основных систем и ресурсов.

Для стажеров мы разработали Roadmap, в котором перечислены все основные технологии, которые он опробует и освоит. Он достаточно большой и охватывает все прикладные технологии нашей компании — так мы укрепляем основы Python и Web. Входят туда и софт-скиллы: коммуникация, тайм-менеджмент, работа с TaskTrackers и т. п. При завершении стажировки сотрудник должен быть готов к любой ситуации.


После мы даем небольшие задачи на изучение фреймворков Django и FastAPI. Ребята сразу делают независимые сервисы, где потребуется поработать с основными особенностями каждого фреймворка, поработать с БД, пооптимизировать запросы, поработать с nginx и Docker, настроить CI/CD, написать автотесты и т. д. Стажер должен, по сути, создать готовый микросервис, который мы потом интегрируем в инфраструктуру нашей компании.

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

Задачи ментора — отвечать на вопросы и контролировать результаты. Поэтому каждый день мы проводим Traction Meetings со стажерами, чтобы у них была возможность поговорить и решить вопросы в реальном времени. В этом процессе главное — открытый подход. Чем понятнее и открытее вы будете к стажеру, тем проще ему будет интегрироваться в команду и работать над задачами.

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

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


Ключевым моментом остаются дейлики, где стажер и тимлид должны прорабатывать сложные моменты. Это отличный бустер для стажера. Ведется и общий чат, где стажер в любое время может задать вопрос. В чате все менторы и стажеры, чтобы была возможность коммуницировать не только в черный ящик.

Какие результаты и текучка

За прошлый год я поработал с пятью стажерами. Среднее время стажировки составило три месяца. Из пятерых стажеров мы взяли четверых. Из них спустя год у нас осталось двое. Один из ушедших решил переключиться в ML и Data-аналитику. Ушел в Яндекс. Второй тоже решил уйти в Яндекс — изучать технологии, с которыми мы не работаем.

Оставшиеся двое успешно работают над нашими проектами, развиваются и в скором времени, я надеюсь, дорастут до грейда Senior.

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

Количество стажеров
Количество заявок

87

Взяли на стажировку

23

Прошли стажировку

15

Остались в штате

6


Тенденции в компании

Я заметил в нашей компании несколько трендов. Например, многие клиенты категорически отказываются иметь дело с начинающими разработчиками или разработчиками низких грейдов. Им интересны только специалисты грейдов Middle и выше.

При этом хороших «мидлов и выше» на рынке не так уж много. Начинающие специалисты оказываются за бортом. Даже умные и сильные ребята, но без реального опыта разработки, не могут попасть в среду для быстрого и эффективного роста. Это большой рынок кадров, к которому стоит присмотреться. Зачастую вырастить себе специалиста оказывается дешевле и эффективнее, чем тратить месяцы на поиск, а потом месяцы на дообучение человека «с опытом».

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

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


Если хотите стать стажером в AGIMA, присылайте резюме на hr@agima.ru. К резюме приложите небольшой рассказ о себе.

Комментарии и обсуждения статьи на habr.com.

  • Alexey Polovinkin

    Head of python development

Blog

0 / 0
+7 495 981-01-85 + Become a customer
Services Cases