Кадровый голод — вечная проблема IT-компаний. Все решают её по-своему: кто-то прокачивает HR-бренд и хантит кандидатов в LinkedIn, кто-то воспитывает своих разработчиков с нуля. Мы в Lodoss Team выбрали второй путь. Я разработал тренинг для начинающих специалистов и курирую обучение стажёров в компании. Рассказываю, что из этого получилось и зачем нам это надо.
Зачем растить джунов
Наша цель — вырастить качественного джуниор-разработчика, такого человека, который по окончании курса мог бы самостоятельно работать над несложными задачами под надзором тимлида или ментора. За три месяца обучения он должен получить обширный опыт и понимание технологий, с которыми мы работаем, разобраться в процессах внутри компании.
Хороших специалистов в разработке мало, и часто те, кто приходят из других компаний, не соответствуют нашему портрету идеального программиста — приходится переучивать.
Зачастую в IT проще обучить сотрудников с нуля, чем переучивать человека с опытом.
Люди, которые приходят из других компаний, уже привыкли к определённому типу ведения проектов, стилистике кода и отношениям в команде. Им сложнее принимать новые корпоративные ценности, они постоянно сравнивают подходы к работе в предыдущей компании и в нынешней. Таким сотрудникам, как правило, сложнее развиваться и расти дальше. Это сильно тормозит скорость адаптации человека в команде.
Если с самого начала специалист растёт в стенах компании, то он развивается с нами, проще воспринимает наши корпоративные ценности и становится лоялен к компании. Плюс он будет знаком со стеком технологий, с которым мы работаем.
Когда мы окончательно определились, что нам нужно организовать обучение стажёров на постоянной основе, передо мной встали два главных вопроса:
- Как и откуда привлекать стажёров?
- Как составить план обучения и организовать курсы?
Организация обучения
Я долго не мог выбрать формат обучения, но в итоге решил, что это должны быть полноценные обучающие курсы с теорией и практическими заданиями.
Первую проблему помогло решить то, что у нас есть Технологический институт ЮФУ. Его выпускники и студенты старших курсов — наша потенциальная аудитория, многие планируют развиваться и работать в IT, а наша компания может предоставить такую возможность.
На разработку плана обучения я потратил две недели. За это время я продумал, что и как мы будем изучать, создал регламент процесса. Дальше мы сделали лендинг с детальным описанием курсов и их преимуществ.
Дальше рассказали о стажировке в соцсетях:
Эффект не заставил себя долго ждать — уже на следующий день на собеседование к нам записалось больше десяти человек.
На входе у нас было довольно жёсткое ограничение — мы не брали студентов младших курсов и людей, далёких от программирования. Я сделал порог вхождения на обучение достаточно серьёзным. У меня большая загруженность текущими рабочими проектами и я физически не смог бы уделять много времени, чтобы обучать основам программирования. Поэтому нашей целевой аудиторией были ребята, которые уже неплохо разбираются в разработке.
Наша идея была в том, чтобы выпускник курсов продолжил с нами работать после успешного окончания. Помимо этого, у нас есть фильтр по минимальным навыкам, которыми должны владеть стажёры. Это необходимо, чтобы они смогли освоить непростую и достаточно объёмную программу. Поэтому из 20 человек, которые пришли к нам в первом потоке, мы взяли всего двоих. Потом мы повторили набор и отобрали ещё троих кандидатов. Четыре из них сейчас проходят обучение, а одного стажёра мы уже отчислили — не справился с высоким темпом занятий.
Проведение курсов стало проверкой и для меня самого. Я понял, сколько стажёров смогу одновременно курировать со своей загрузкой. Сейчас я объективно понимаю, что пять — это уже много. Если на старте я нормально справлялся, то потом стало тяжеловато. Это логично: чем дальше мы двигаемся по плану, тем сложнее становятся темы и тем большего времени требует контроль.
Чему учить
Я специально разработал курс так, чтобы не проводить обучение в группах. Каждый может в любое время подключиться к обучению. Это удобно, не надо контролировать всех одномоментно. У нас был опыт, когда мы пошли по схеме академического обучения: собрали группу, подготовили помещение для занятий и выделяли по нескольку часов в неделю на обучение. Разбирали теорию и выполняли практические задания. К сожалению, такой подход себя не оправдал — из десяти человек, прошедших обучение, у нас остался работать только один. Так себе конверсия.
Составляя план занятий, я исходил из тех знаний и компетенций, которые необходимы специалисту в нашей компании. Я сам разработчик и у меня есть понимание, какого уровня должен быть программист, какие задачи он должен уметь решать.
Темы подбирал таким образом, чтобы каждая последующая строилась на материале предыдущей, а знания, полученные на одном занятии, стажёр мог использовать уже на следующем. Сначала просто собрал важные для нас вопросы в одну кучу: Git, JavaScript, CSS и HTML, современные фреймворки и работа с асинхронностью. Потом выстроил логическую последовательность от простого к сложному: от работы с консолью и git до фреймворков.
Здесь я учитывал картину, которую видел почти на каждом собеседовании. Соискатели, понимая, что требуются специалисты со знанием фреймворков, пытаются быстро изучить документацию и сделать пару туториалов. После этого они считают себя экспертами, хотя реальным опытом не обладают, а именно он нужен гораздо больше знаний синтаксиса и функций фреймворков.
Требования к стажёрам, тематический план, схему и правила обучения я прописал в специальном регламенте.
Потом стал продумывать способ контроля за ходом обучения. На втором занятии стажёры проходят управление проектами. После изучения этой темы они самостоятельно заносят свои обучающие проекты в Trello, ведут диаграмму Ганта:
Мне остаётся проводить только трекинг прогресса учеников, смотреть что сделано на данный момент, а что нет. Это позволяет сильно экономить моё время. Ученики же учатся давать оценки проектам и управлять процессом обучения. Это очень важно, потому что любой программист должен уметь корректно оценивать свою работу.
К каждому тематическому блоку я разработал контрольные вопросы. Вот как выглядит учебный план с темами и заданиями:
Блоки можно изучать в любое удобное время, но обязательно последовательно и все разделы ребята сдают мне устно.
Стажёры не просто должны воспроизвести информацию, а защитить темы, показать, что владеют материалом. Защита выглядит следующим образом: в первую очередь я проверяю обязательную практическую часть и решение задач. Задаю вопросы по коду и даю свои рекомендации по его улучшению. После этого переходим к теории и здесь для меня важно общее понимание темы стажёром. Каждому достаётся порция каверзных вопросов, когда нужно подумать и дать неочевидный на первый взгляд, но правильный ответ.
Кстати, если у стажёра задолженность более трёх тем, то его отчисляют. Это дополнительная мотивация для обучения.
- Soft skills — это надпрофессиональные навыки, которые помогают любым специалистам в любой отрасли быть востребованными
- Сможете прокачать навыки, чтобы быстро решать задачи, убедительно аргументировать свою позицию, грамотно выстраивать коммуникацию — без лишних эмоций и стресса ?
Как учить
Я не дипломированный преподаватель, мне сложно описать, какие подходы и методологии обучения лучше всего работают со стажёрами-программистами.
Но одно могу сказать точно — нужно уметь делиться своим опытом и быть к ним отзывчивым. Нужно проявить свою экспертность и заслужить уважение. Никогда не врать, когда ты пытаешься что-то скрыть — ученикам это прекрасно видно.
Невозможно знать всё, главное — не бояться в этом откровенно признаться. Когда мне задают вопрос на тему, в которой не очень хорошо ориентируюсь, я честно говорю, что не знаю ответа или что мне нужно проконсультироваться с коллегой-специалистом.
Продумывая схему обучения, я хотел создать мини-комьюнити стажёров и решил сделать это с помощью Slack. Ведь помимо получения профессиональных знаний, стажёры должны обучаться работе в команде, уметь находить ответы на вопросы и помогать своим коллегам. Все эти навыки необходимы и в повседневной работе программиста.
Очень часто разработчики — это типичные интроверты: для них общение с коллегами даётся очень тяжело. В реальных проектах бывают проблемы из-за плохой коммуникации в команде, поэтому мы решили прокачивать у ребят эти скилы на этапе тренировки.
Я создал в Slack два канала: News и Help. В первом транслируются новости, связанные с обучением. Второй я запланировал для неформального общения. В этом канале стажёры могут обсуждать рабочие вопросы и просить помощи у товарищей. Я наблюдаю, как ребята взаимодействуют друг с другом и оцениваю их навыки коммуникации, открытость и готовность помочь коллегам. Можно сказать, что здесь мы прокачиваем soft skills стажёров.
Заканчивается обучение итоговым заданием. Стажёр получает небольшой приближенный к настоящему проект — примерно на две недели разработки. Тут всё по-взрослому: нужно самостоятельно принимать решения, продумывать стратегию реализации, чтобы в итоге достигнуть целей проекта.
Уровень выпускных проектов оценивается комплексно. Я учитываю такие моменты, как время, потраченное на оценку и выполнение, и решения, которые применялись для достижения целей. Старший программист смотрит на качество кода, насколько он соответствует внутренним стандартам и правилам. После чего мы выставляем общую оценку.
Если стажёр успешно закончил обучение и пошёл работать к нам, мы не бросаем его на произвол судьбы. За каждым новым человеком закрепляем ментора — сотрудника, к которому можно официально обращаться за помощью. Ментор по мере возможности будет проверять код стажёра. Это при том, что мы ещё работаем по схеме кросс-ревью, то есть все в команде проверяют всех. Даже стажёры оценивают код своих старших коллег.
Сперва, скорее всего, новички будут работать как помощники на проектах. Их добавляют в команду, а тимлид или проджект-менеджер ставят конкретные задачи и следят за процессом. Пару раз в месяц IT-директор может поинтересоваться, как проходит адаптация новичка, может провести дополнительное тестирование нового сотрудника, если на это будут какие-то причины. После чего принимается решение — остаётся ли выпускник дальше работать в нашей компании.
Что мы получаем от программы корпоративного обучения
Поиск и наём качественных новых кадров.
Не нужно проводить подробное техническое собеседование и выяснять уровень кандидата. Все становится ясно в процессе обучения.
Максимально сокращается время на адаптацию сотрудника в компании.
После трудоустройства не нужно тщательно контролировать новичка.
Формируется понимание, какие по масштабу и сложности проекты можно отдавать бывшему стажёру.
Выпускник знаком со стеком всех технологий, с которыми работают в компании. Ему не нужно переучиваться.
Получаем постоянный поток новых людей, в среднем 1−2 человека в месяц.
В целом ресурсы, потраченные на обучение, окупаются. Если говорить о моём времени как времени руководителя, то пока я не сильно много его трачу. Когда мы поставим систему на поток и поймём, что у нас получилось — введём отдельного специалиста по корпоративному обучению.
Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.