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

Привет, я Андрей Степанов, CTO fuse8. Этим летом у нас в компании прошла стажировка для начинающих бекенд-разработчиков. Решили нанять лучшего джуна и выделить перспективных ребят для ближайших проектов. Когда идея стажировки пришла мне в голову, предприятие казалось сильно проще, чем получилось на практике. В статье поделюсь хорошими и не очень решениями и процессом в целом.

Такие материалы распространяли в университеты и соцсети, чтобы привлечь внимание к стажировке
Такие материалы распространяли в университеты и соцсети, чтобы привлечь внимание к стажировке

Как появилась идея

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

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

Как готовились

Летней стажировкой занялись 3 наших бекенд-разработчика, а рулил процессом HR Generalist. На первых порах эта команда подготовила план лекций с разбивкой на двух спикеров: 10 уроков по 2 часа каждый. 

Разработчики спланировали домашние задания, которые по итогам курса собрались в петпроект. Выполняли их ребята в GitHub. С каждым новым заданием стажеры накручивали логику в уже существующем проекте и расширяли его функциональность. Суть проекта – приложение для получения курсов валют, состоящее из двух сервисов. Один отвечает за получение, хранение и кэширование курсов валют. Второй – web API. Если интересно, можете ознакомиться с заданиями.

Когда планы были готовы, сделали гугл-форму для заявок и раскидали ее по нескольким каналам: наши соцсети, grintern[ссылка удалена модератором] и ЧелГУ. 

План и факт 

Курс рассчитывали на 2 месяца и 9 занятий, к 6 из которых прилагались домашние задания, формирующие пет-проект. Старт планировали 3 июля. Ожидали, что соберем желающих поучаствовать человек 40, и возьмем на курс где-то 15. Подведение итогов и интервью с лучшими учениками должны были случиться примерно на первой неделе сентября. За это время мы думали не только провести занятия и проверить домашние задания стажеров, но и подготовить эти самые занятия и задания в процессе. Спойлер: план немного провалился. 

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

Относительно проведения занятий в сроки мы уложились. Последняя лекция курса состоялась 24 августа – на восьмой неделе со старта стажировки. А вот с подведением итогов затянули. На проверку итоговых проектов ушло много времени, да и организовать интервью с лидерами курса получилось не сразу. В итоге оффер лучшему кандидату на место в команде выслали только в октябре. О том, почему такая временная пропасть образовалась, расскажу далее.

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

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

Как общались со стажерами и улучшали курс в моменте

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

Выдержки из нашего чатика в телеге
Выдержки из нашего чатика в телеге

Три раза за курс собирали обратную связь со стажеров через гугл-формы – после первого занятия, в середине и конце курса. Старались учитывать просьбы и пожелания.

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

Вопросы к формату

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

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

Чего точно не стоит делать – пренебрегать домашними заданиями на таком курсе. Это ценная штука для стажеров и для нас, как нанимателей – можно уже после первых проверок понять, как человек думает и решает задачи. Однако цена проверки этих заданий не менее высока – одновременно отсматривать задания и готовиться к лекциям оказалось непросто.

Временные и финансовые затраты

Мы действительно переоценили себя, предположив, что готовить курс и проводить его одновременно будет посильной ношей. Весь проект стажировки занял у нас порядка 500 часов разработчиков, PR и HR. В денежном эквиваленте это около 1.5 млн рублей, что сравнимо со стоимостью небольшого заказного проекта.

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

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

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

Если вы тоже хотите сделать стажировку или курс для разработчиков

Пишите вводные, максимально объясняя все подряд – даже те моменты, которые вам кажутся очевидными. У нас на этапе тестовых заданий в самом начале случалось, что кто-то решал задания на java, хотя курс у нас по C#. Кто-то присылал ответы в нечитаемых форматах, кто-то писал тему письма как попало, поэтому мы такие ответы просто теряли.

Google Meet не подходит для проведения курса. Стажеры жаловались, что нельзя отмотать видео назад, если опоздал на занятие (в случае трансляции на ютубе можно). Также были жалобы на качество записанных уроков – даже если выставлять 720р, не видны фрагменты кода на презентациях. Отчасти эта проблема решалась пересылкой презентаций стажерам, но на будущее нужно будет искать все-же другие способы.

Можно сократить время на проверку ДЗ, если первые несколько ДЗ по основам дисциплин сделать автоматически проверяемыми – через тесты, которые были готовы вместе с проектом на этапе проектирования ДЗ. В таком случае проверяться будет работоспособность кода, а не его красота, но время на организацию процесса существенно сократится.

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

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

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

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

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


  1. Zara6502
    02.11.2023 10:52
    -2

    CTO fuse8

    Какой вариант ваш?


    1. andrey_stepanov1 Автор
      02.11.2023 10:52

      а вы юморист :)

      CTO (латиница): CTO (англ.) — Chief technical officer или Chief technology officer — технический директор


      1. Zara6502
        02.11.2023 10:52
        -3

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


        1. bromzh
          02.11.2023 10:52
          +2

          Такие же, причины, которые побуждают писать "баг" или "корутина", а не "ошибка" или "сопрограмма"


          1. Zara6502
            02.11.2023 10:52
            -3

            ну баг багом называют годов с конца 80-х, так же как и пришедшие "оттуда" дистрибутив, компилятор, пи-си и т.п. И это сленговые слова которые в литературу пробрались не сразу (если вообще пробрались), например гугловский Books Ngram Viewer на слово "баг" в русском находит много художественной литературы с таким именем, а так же некоторое количество профильной литературы но с другим словом "баг-трекер"/"баг-трекинг". Так что ваше объяснение не имеет под собой почвы.

            PS: мой опыт конечно малорепрезентативен, но я впервые слышу такие слова как "корутина" и "сопрограмма".


        1. ryanl
          02.11.2023 10:52

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


          1. Zara6502
            02.11.2023 10:52
            -4

            Те кто не поймут

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

            либо молча загуглят, либо спросят

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

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

            В обоих случаях узнают что-то новое для себя

            У меня претензия не к новизне, а к оформлению.

            Это общеизвестные сокращения

            Общеизвестные для кого и где? Я правильно понимаю что открывая MSDN и читая разделы по .NET я об этом прочитаю на первой же странице для программы "Hello world!"? Или это специфика "Управления персоналом"? Так я никакого отношения к кадровикам не имею чтобы знать об этом термине.


            1. andrey_stepanov1 Автор
              02.11.2023 10:52

              Печально, что мы не поняли друг друга с самого начала. Мне, честно, говоря, показалось, что вопрос про сокращение СТО был действительно саркастическим, и вы это ради шутки. Печально и то, что только лишь из-за незнания действительно общеизвестного (а особенно для Хабра, тут все-таки не про региональные новости пишем) термина вы как-то в негатив ушли. Радует, что другие авторы, статьи которых вы, вероятно, прочтете, избегут участи гневных комментариев, ведь теперь стало понятно, что стоит за сокращением СТО, когда человек себя через него представляет.
              Мне вот важнее другое - сам материал-то вам как?


              1. Zara6502
                02.11.2023 10:52
                -4

                Печально и то, что только лишь из-за незнания действительно общеизвестного (а особенно для Хабра

                Я Хабр читаю лет 15 и это сокращение вижу впервые. В ИТ я работаю с 1998 года и ни разу никогда не встречал людей которые бы себя именовали иностранными словами или сочетаниями, но с поправкой, я никогда не работал в компании как-то связанной с заграницей. Возможно там всё иначе. В этом смысл я никогда не видел живьем ни тимлидов ни кого-то еще. Я не говорю что это норма (скорее нет), но допуск на то, что есть люди с таким не сталкивающихся должен быть.

                тут все-таки не про региональные новости пишем

                Вы точно уверены что 99% людей на Хабре одной ногой сидят за пределами РФ?

                вы как-то в негатив ушли

                Ну я хочу читать статьи, а не гуглить через слово.

                Мне вот важнее другое - сам материал-то вам как?

                Не моя тема, я редко читаю плохо оформленный материал полностью.