Привет, меня зовут Валерий Антонов, я руковожу направлением Java в Уральском банке реконструкции и развития (УБРиР).
Осенью у нас окончилось обучение в двух школах Java. По итогам работы мы приняли в штат двух учеников школы Java, а несколько сотрудников банка сменили свои должности, став разработчиками на языке Java. В этой статье я расскажу, как мы запускали школу, кого учили, какая была программа и с какими сложностями мы столкнулись. Надеюсь, статья будет полезна тем, кто собирается запускать свое обучение, а также тем, кто стоит на распутье в изучении Java и не знает, с какой стороны подступиться.
Предпосылки
Вторая половина этого года для УБРиР ознаменовалась значительным ростом потребности в разработчиках разного уровня. При этом зарплатные ожидания кандидатов взлетели на такие высоты, откуда землю-матушку уже и не разглядеть. Как не разглядеть и собственных проблем в элементарных знаниях.
Рынок диктует, какие технологии востребованы, за что больше платят. Разработчики учат то, что чаще упоминается в вакансиях, оставляя нюансы на потом. Эдакий технический долг, который тянется до лучших времен. Не будем же их осуждать, в конце концов, мы не видели проектов без техдолга. Перед тем, как запустить школу, мы активно искали разработчиков на рынке и выделили два условных перекоса у разработчиков:
кандидаты, которые разбираются во фреймворках, могут пилить высокоуровневые задачи, но не знают основ. Так как наша цель - пересесть с иглы легаси на колеса микросервисов, нам нужны люди, которые могут копать глубоко и понимают суть задачи чуть глубже;
кандидаты слабо разбираются во фреймворках, что, впрочем, не мешает им писать что-то однотипное. Человеку дали функцию, а он по аналогии как-то сделал. Может он однотипные домики лепить, но у нас домиков нет, у нас здоровенный котлован. И вот с ним у кандидатов уже начинаются проблемы.
Итог: и те, и другие не подходили для наших масштабных работ. Большие мускулы, но тоненькие ножки. Таких специалистов можно нанять и переучить, но они просят большие деньги. И процесс обучения не стоит того. Так появилась идея самим подготовить себе кадры.
Когда учил только Spring, но пропускал лекции по Java Core
О сроках
Обучение в первой школе длилось 4 месяца, во второй - в 4 раза меньше. Почему мы решили сократить сроки обучения? Первая причина упирается в деньги: бюджет банка не резиновый. Лектор, проверка домашних работ – все это затраты, которые увеличиваются с продолжительностью курса. Вторая – время текущих сотрудников. Мы не хотели затягивать обучение, чтобы долго не отвлекать сотрудников с домашками и дополнительной нагрузкой.
Правда, потом мы очень пожалели, что сильно сократили сроки обучения во второй школе. Ребята не успевали сделать домашние задания, и в итоге - подготовиться к дипломной работе. Хотя в результате ребятам немного “свезло”: из-за больничного и отпуска лектора у студентов образовался зазор, во время которого они успели нагнать программу и закрыть свои “хвосты”.
Точно могу сказать. Закладывайте время на форс-мажоры, иначе можно потерять студентов под конец обучения. Они как загнанные лошадки: не смогут двигаться дальше под тяжестью невыполненных задач.
Воронка
Первое звено: 55 сотрудников + 7 внешних кандидатов
Первый отклик от сотрудников на открытие школы Java - 55 человек. Разработчики PHP/Oracle/АВAP, аналитики, ребята из техподдержки и сотрудники самого банка заполняли анкету, чтобы разобраться, зачем им школа и как они будут применять полученные знания в работе.
Кто-то хотел пересесть на Java, кому-то пришлось самому разбираться в ней для проекта и хотелось поднять свой уровень. Интересно, что среди аналитиков было большое количество желающих поучиться, при этом у них не стояла цель стать разработчиками на Java, они хотели расти в профессиональном плане - более грамотно ставить задачу. Если аналитик знает, как работает код, то он сможет точнее поставить задачу, заранее понимать, сработает ли всё так, как хочет заказчик, или нет, возможно-невозможно.
Аналитиков для обучения мы не взяли. Во-первых, им не был нужен тот уровень, который давали в школе. Во-вторых, все лекции и материалы презентаций обучения мы открыли для сотрудников банка. Лекций без практических заданий хватает, чтобы закрыть потребности в знаниях аналитиков.
Открывайте доступ на внешнее обучение своим сотрудникам. Это поможет сохранить те кадры, которые сейчас работают, страдают, но молчат.
Второе звено: 8 сотрудников + 7 внешних кандидатов.
За два потока школы прошли 21 человек. В первый поток мы включали только сотрудников, так как нам требовались погруженные в банковские процессы люди. Мы не были готовы обучать новичков, для них элементарно не нашлось бы менторов. Сотрудников выбирали по следующему принципу: у кого сейчас в проекте есть Java или кто мог бы мигрировать со своего проекта на Java-проект. К слову, часть сотрудников собиралась сменить компанию именно из-за стека, они хотели перейти на другую технологию, но у нас пока не было такой возможности. О планах некоторых сотрудников покинуть УБРиР мы узнали позже, и большой радостью стало, что школу мы уже запустили и взяли конкретных сильных людей, избежав затрат на подбор, адаптацию и закрытие кадровых дыр в проектах.
Второй поток мы разделили на две части: текущие сотрудники и кандидаты, когда-то не прошедшие собеседование в компанию. У нас сохранился список начинающих разработчиков, которые не смогли пройти техническую часть собеседования, но были потенциально перспективными и приятными людьми. Рекомендую: договаривайтесь о возможном сотрудничестве с потенциально подходящими приятными кандидатами заранее, когда у вас только появляются мысли об обучении. Это сократит время на подбор студентов.
Третье звено: джава-разработчики 5 сотрудников + 2 внешних кандидата
Стратегия брать в студенты сотрудников не дает 100% прохождения воронки. Три человека в первом потоке не стали менять проект и пересаживаться на Java, хотя прошли обучение до конца и защитили диплом. Мы связали это с тем, что человек не хотел уходить из конкретной команды и готов вернуться к коду на Java, когда мы будем добавлять технологии Java в его команде.
Из внешних кандидатов мы взяли двух лучших учащихся и определили в команды. Я не был удивлен этими результатами и даже не ожидал принять больше. Да и больше джунов мы бы просто не устроили в команды.
Не стоит ждать, что после обучения к вам придет большой поток сотрудников, мы, например, закладывали 20%. Если у вас был такой опыт - поделитесь, каким оказался процент трудоустройства с курсов или внешнего обучения. К слову, у онлайн-школ примерно 10% учеников находят работу.
Как строилось обучение
Мы не стали изобретать велосипед и пригласили специализированные учебные центры. Для первого потока программу выстраивал лектор исходя из собственного опыта, во второй школе мы верстали программу сами, учитывая также мнения команд.
Занятия проходили два раза в неделю по 3 часа. плюс домашние задания. Задания проверялись так: выполненное задание заливается в git-репозиторий, преподаватель проверяет и дает комментарий. Мы отказались от платформы для общения ученик-учитель, в пользу git-репозиториев и общих чатов. Так ученики получали ответы в чатах быстрее и могли помогать друг другу, а отправка заданий создавала привычку использования гита. Они показались нам слишком песочницами.
Основные сложности были с программой обучения, потому что аудитория курса оказалась слишком разношерстной. Семь человек на начинающем уровне Java, двое пишут на Java в компании из производственной необходимости, у них образовался разрыв между текущими задачами и фундаментальными знаниями, остальные сильные мидлы, которым не нужны прописные истины, но нужны тонкости языка.
Поэтому мы в банке адаптировали программу под себя, то есть добавили разделы, которые выходят за рамки стандартов обучения: многопоточность, тестирование и тому подобное.
Столкнулись мы и с другой проблемой – временные и финансовые ограничения отбросили часть программы. Ниже приведу программу месячного курса второго потока.
(скрываемый-раскрываемый раздел)
Основы объектно-ориентированного программирования
Реализация ООП в Java
SOLID принципы
Коллекции
Потоки
Исключения
Тестирование
В первом потоке дополнительно изучались Spring Boot и Hibernate
Когда строите школу, отвечайте на вопросы:
1. какой уровень знаний и опыта у аудитории;
2. что для них будет полезной информацией, а на что вы просто потратите ресурсы;
3. есть ли внутренние возможности самим давать эти знания или лучше привлечь партнера.
И что же в итоге?
Что в результате мы получили:
5 “официальных” джавистов и 10 амбассадоров, способных включаться в разработку на Java в случае необходимости;
2 новых сотрудника-джуна;
база знаний для аналитиков и всех желающих поднять свой уровень образования;
проект, мотивирующий сотрудников делиться знаниями
О последнем пункте расскажем подробнее. Школа получилась вовлекающей: несколько МР-ов выступили перед студентами и рассказали о своих командах. Кроме этого специалисты банка прочитали студентам лекции про использование системы контроля версий и использование системы багтрекинга, а аджайл-коучи организовали тренинг про жизнь в аджайл. Почему это было полезно? Во-первых, внешние ребята лучше узнали структуру команд. Во-вторых, такой формат обучения стал первыми шагами в построении комьюнити банка. Но это совсем другая история)
Отобрать новых сотрудников из числа студентов было просто - по итогам дипломных работ. Двое студентов защитили дипломные работы на высоком уровне без дополнительного времени на переделывание, и после знакомства команд с кандидатами мы забрали этих ребят в штат. На этом отбор закончился.
Собирайте лекции и дополнительные материалы в отдельную папку с удобной навигацией. Когда вас начнут расспрашивать “а где посмотреть можно?”, вы скажете себе спасибо)
Теперь раз в неделю я провожу консультации, на которых готов ответить на вопросы и подсказать, в каком направлении двигаться в Java. Я помогаю разобраться с языком, решать конкретные кейсы и сформировать путь развития.
Закладывайте время на дальнейшую поддержку своих студентов, обязательно выделяйте менторов и организуйте консультации, встречи для обсуждения проблем. “Варите” своих студентов в одном котле и помогайте им не выгореть после новых навыков.
Ну и о профите
Планируя обучение, мы рассматривали за основу принцип Парето, принцип 80/20. Превышение целевого показателя в 20% можно рассматривать как несомненный успех проведенных мероприятий. Первый поток: на входе 6 сотрудников, из них 3 стали разработчиками на Java
Второй поток: на входе 7 сотрудников, 2 разрабатывают на Java; на входе 8 внешних кандидатов, из них 2 приняты разработчиками в штат банка. Хочется добавить, что у нас оказалось более продуктивным внутреннее обучение, а не набор извне. Мы решили не брать на себя обучение новичков, но интегрировать с помощью стажировок тех, кто уже где-то учился и готов к развитию. Оставим внутренние школы, чтобы поднимать уровень знаний собственных сотрудников, этот вариант оказался самым благоприятным.