Привет, меня зовут Валерий Антонов, я руковожу направлением 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 в компании из производственной необходимости, у них образовался разрыв между текущими задачами и фундаментальными знаниями, остальные сильные мидлы, которым не нужны прописные истины, но нужны тонкости языка. 

Поэтому мы в банке адаптировали программу под себя, то есть добавили разделы, которые выходят за рамки стандартов обучения: многопоточность, тестирование и тому подобное. 

Столкнулись мы и с другой проблемой – временные и финансовые ограничения отбросили часть программы. Ниже приведу программу месячного курса второго потока.

(скрываемый-раскрываемый раздел)

  1. Основы объектно-ориентированного программирования 

  2. Реализация ООП в Java

  3. SOLID принципы

  4. Коллекции

  5. Потоки

  6. Исключения

  7. Тестирование

В первом потоке дополнительно изучались Spring Boot и Hibernate

Когда строите школу, отвечайте на вопросы:

1. какой уровень знаний и опыта у аудитории; 

2. что для них будет полезной информацией, а на что вы просто потратите ресурсы;

3. есть ли внутренние возможности самим давать эти знания или лучше привлечь партнера.

И что же в итоге? 

Что в результате мы получили:

  • 5 “официальных” джавистов  и 10 амбассадоров, способных включаться в разработку на Java в случае необходимости; 

  • 2 новых сотрудника-джуна;

  • база знаний для аналитиков и всех желающих поднять свой уровень образования; 

  • проект, мотивирующий сотрудников делиться знаниями

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

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

Собирайте лекции и дополнительные материалы в отдельную папку с удобной навигацией. Когда вас начнут расспрашивать “а где посмотреть можно?”, вы скажете себе спасибо)

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

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

Ну и о профите

Планируя обучение, мы рассматривали за основу принцип Парето, принцип 80/20. Превышение целевого показателя в 20% можно рассматривать как несомненный успех проведенных мероприятий. Первый поток: на входе 6 сотрудников, из них 3 стали разработчиками на Java

Второй поток: на входе 7 сотрудников, 2 разрабатывают на Java; на входе 8 внешних кандидатов, из них 2 приняты разработчиками в штат банка. Хочется добавить, что у нас оказалось более продуктивным внутреннее обучение, а не набор извне. Мы решили не брать на себя обучение новичков, но интегрировать с помощью стажировок тех, кто уже где-то учился и готов к развитию. Оставим внутренние школы, чтобы поднимать уровень знаний собственных сотрудников, этот вариант оказался самым благоприятным.

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


  1. gtbear
    17.01.2022 14:02
    +7

    А как вы закрывали риск, что эти обученные сотрудники ощутив свои силы уйдут в рынок на конские зарплаты?


    1. Zhbert
      17.01.2022 14:32
      +1

      Они же не сразу уйдут, а к тому времени можно и новых обучить =)


  1. xakepmega
    17.01.2022 14:15
    +7

    Почему банк не может себе позволить нанять себе синьйоров лидов и тд, профессоналов своего дела? Я бы не хотел доверять свои "деньги" джунам


    1. k-morozov
      17.01.2022 14:33
      +3

      топ-менеджмент не готов делится своими зп)


    1. wolfy_str
      17.01.2022 14:33
      +2

      Потому что лидов и мидлов на рынке нет от слова совсем. На 2 вакансии мидла по 1 разработчику. Потому сейчас курсы реально работают, что бы сразу закинуть человека на мидла, потому что среди джунов творится дикий трэш - во первых по 20 человек на место, во вторых джунов вакансий реально без преувеличения меньше чем мидлов. И это как то не правильно как и "конские" зарплаты по мнению некоторых. Никто обучать не хочет легче дать 250к сразу миддлу. А на зарплаты в 30-50к у джунов конкуренция не хилая. Если не доверяешь - тогда плати по четверть миллиона за миддла, который ещё не факт как себя проявит после собеседования.


      1. k-morozov
        17.01.2022 16:32
        +7

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


        1. andreykp
          17.01.2022 23:53
          +1

          Курсы - это про стажёров. Джуном надо паралельно кодить


        1. wolfy_str
          18.01.2022 21:32

          знаю что после курсов некоторые ребята становятся СТАРШИМИ программистами) а ты не бойся, есть места где учат. Хотя, да, миддл+ всё таки для этого опыт нужен


    1. nikit_ozz
      17.01.2022 14:38
      +1

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


      1. wolfy_str
        17.01.2022 14:56
        +1

        А не синьорам должно быть с стыдно писать резюме или они не люди? На рынке какая то дикость, просто зайдите и посмотрите число вакансий на миддлов и джунов. Мидлов будет больше, хотя понятно, что должно быть наоборот. Но джунов никто не хочет. Даже по своему опыту прохождения собесов могу сказать. Требования сильно повысились и теперь джун как бы должен дофига всего знать :) А знаете прочитать про микроархитектуру бывает не так уж сложно и не так уж объёмно по сравнению с "первоночальным" багажом знаний. Согласен что миддл должен уметь в микроархитектуру и фреймворки, а джун об этом знать только в теории. Но чёт по рынку не скажешь что джуны нужны. Всем нужны "линейные" специалисты (как линейные корабли) с уровнем миддл+ за 300к, но на которых можно сразу плыть. Чисто по моему субъективному опыту обзора рынка. Хотя если кто не знает про зарплаты в 300к можно урезать и предлагать уже 150к за ту же работу. Кстати лайфхак для работодателей - многие специалисты далеко не знают себе цену и тянут уровень миддл+ за 100-150к считая это нормой, сравнивания с другими нищенскими зарплатами у себя в регионе.


        1. nikit_ozz
          17.01.2022 15:42

          Ни в коем случае не спорю о ситуации на рынке) Бардак полнейший. Я писал с точки зрения процесса организации труда, про сферическую команду в вакууме и как я вижу ее эффективную компоновку. Куда движется процесс найма мне не очень понятно. Средняя продолжительность работы в одной компании сокращается. Чтобы стоять на месте бежать нужно все быстрее. И как следствие инвестиции в выращивание и обучение сотрудников становятся более рискованными. Компании решают не рисковать и брать готовых, только вот готовых больше не становится.


    1. andreyverbin
      17.01.2022 18:59
      +1

      Их ещё найти надо. Похоже хорошие специалисты работу не ищут, она их сама находит. Потому на hh остаются очень странные кадры. Это гипотеза, подтверждается только моими наблюдениями. Из ~10 спецов высокого класса, которых я знаю, ни один за последние 10 лет не публиковал резюме на hh.


      1. inkvizitor68sl
        17.01.2022 21:35

        Ну на HH почти никто не публикует, факт - все на linkedin есть. Но вот по статусу "ищу работу" даже там нет смысла искать людей.

        (а российские HR в основном тусят на habr-карьере, как ни странно. Разошлись по разным платформам, ага).


    1. JLavlinskaya
      19.01.2022 09:56

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


  1. ItsGreyDay
    17.01.2022 15:10

    1)Оцените, сколько из внешних кандидатов можно было бы брать без обучения, как стажеров на 2-3 дня в неделю ( а остальное время они учатся дома по заданным темам) - и учить в процессе работы с ментором? Хотя не понятно что затратнее - время менторов, которые бы давали темы обучения и иногда отвечали на вопросы, или же внешние обучающие.

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

    2)База знаний, сомнительный плюс: мало материалов в интернете ? зачем городить свой огород в который раз.


  1. KoteMilote
    17.01.2022 15:38
    +3

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

    Взяли и прокинули аналитиков, хотя они сами просились. То что вы материалы открыли ни чего им не даст, материалов и так много. Аналитикам нужен навык ковыряния в коде, вот его и надо прокачивать, откройте отдельную школу по Java для аналитиков или скажите им что они не в фокусе.


    1. jh7
      20.01.2022 08:22

      Если ковырять код, то есть codewars или русскоязычный аналог чисто для Java


  1. souls_arch
    17.01.2022 18:20
    +6

    Глубокие основы и фреймворки + куча того, что откладывают на потом, так и остается нетронутой, а это куча бывает на года от sql до алгоритмов и структур данных. И это вы решили давать за 4 месяца, а потом за 1? Ну-ну.

    "Эффективный" менеджмент и экономика во всей красе. А то люди годы тратят, дураки такие.


    1. elisoff
      18.01.2022 16:45

      +++ 4 месяца жавы для работающих сотрудников(некоторый без опыта в ИТ) это слишком мало.


  1. iiwabor
    18.01.2022 10:30

    Обучение сотрудников и повышение квалификации - это очень нужное и важное дело! Респект вам и уважуха!

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


  1. ivan_nesterov
    19.01.2022 09:57

    И все таки - Core был или нет?

    Длительность 4 мес по 6 часов в неделю - 96 часов. Помню в институте только основы ООП целый семестр шло.