Обучение для backend-разработчиков
Обучение для backend-разработчиков

Всем добра! Я руковожу агентством web/mobile разработки, поэтому заинтересован, чтобы моя команда росла в скиллах. Тем временем рынок меняется, постоянно выкатываются обновления, а найти действительно сильных специалистов все сложнее.

У нас есть запросы на PHP-бэкендеров, фронтендеров, проджектов и дизайнеров. На первых – самый большой, так как изначально костяк команды занимался созданием программных продуктов на Yii, Laravel и Symfony.

Сейчас из 300 кандидатов на вакансию Мидла откликаются лишь 1-2 человека, которые действительно им являются. Что уж, разработчики, претендующие на позицию Джуна, не знают даже базы. И как быть?

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

  • Можно отправить их на сторонние распиаренные IT-курсы. Но мы же понимаем, насколько общее представление в них дается. И часто оно не бьется с реалиями, особенно в разработке. В итоге – обучение пройдено, оплачено, а снова возвращаемся к неспособности закрывать боевые задачи.

  • Можно никого не нанимать и сидеть на месте, отказываясь от крупных проектов. Однако довольствоваться малым и не желать расти – это не про бизнес. Рано или поздно тебя просто съедят.

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

Рассказываю, как выглядит создание курса изнутри и во сколько он нам обошелся.‎

Как разрабатывалась обучающая программа для бэкендеров

Разработка курса для backend
Разработка курса для backend

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

Дмитрия поддержали руководители отделов разработки (РОРы). Они распределили программу по блокам, чтобы каждый подготовил для слушателей то, в чем более силен.

Откуда взяли темы для обучения

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

  1. Анализировали скиллы команды и выявляли, что требует более глубокого изучения.

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

  1. Исходили из опыта на проектах старших специалистов.

«Чтобы определиться с направлениями курса, я открыл гугл док и начал записывать все, что хотел передать ребятам. Был момент, когда я без конца дополнял этот список – пришлось самого себя останавливать. Иначе мы бы не смогли закончить обучение в адекватные сроки. К тому же это наш дебютный курс, поэтому решил дать те знания, которые наиболее актуальны для рабочих реалий и востребованы на рынке.»‎

Дмитрий

IT-директор

Как работали над структурой корпоративного курса

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

Создатели курса поставили себе цель – не день без слайда, чтобы ускорить его подготовку. Понятно, что были загруженные дни, когда заняться «творчеством» не получалось. Но благодаря такому девизу процесс практически не останавливался.

На выходе получилось 5 модулей, которые включают 47 занятий:

  • PHP

  • ООП

  • Архитектура

  • Базы данных

  • Автоматические тесты / CI/CD

Какими информационными источниками пользовались

Наша база знаний формировалась из реальных кейсов специалистов компании и материалов авторитетных разработчиков. Помимо конвертации практики от боевых задач, мы анализировали статьи, печатные и электронные издания. 

Для модуля «Архитектура‎» Дмитрий не ограничивался окружением PHP, а взял данные, что связаны с Java и C#. В них лучше описаны базовые принципы структуры кода, которые присущи всем высокоуровневым языкам.

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

  • «Мастер-класс. Совершенный код», Стив Макконнелл;

  • «Рефакторинг: улучшение существующего кода», Мартин Фаулер;

  • «Принципы, паттерны и методики гибкой разработки на языке C#», Роберт Мартин и Мика Мартин;

  • «Идеальный программист. Как стать профессионалом разработки ПО», Роберт Мартин;

  • «Чистый код: создание, анализ и рефакторинг», Роберт К. Мартин;

  • Implementing Domain-Driven Design и Domain-Driven Design Distilled, Вон Вернон;

  • Domain-Driven Design: Tackling Complexity in the Heart of Software, Эрик Эванс;

  • «Паттерны объектно-ориентированного проектирования”, Эрих Гамм, Ричард Хелм, Ральф Джонсон и Джон Влиссидес.

Каждый сторонний аспект, который хотели донести спикеры, трижды проверялся.

Как проходило обучение

Официально курс стартовал 18 марта 2024 года. Формат занятий выбрали классический – оффлайн-лекции два раза в неделю с возможностью подключения онлайн. В среднем урок длился в рамках академического часа – 45-50 минут.

Слайд из видеоурока
Слайд из видеоурока

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

Спикерами стали сами создатели курса: IT-директор Дмитрий и руководители отделов разработки Даниил и Михаил. Каждый рассказывал ту тему, которую готовил.

«‎Изначально я планировал вести лекции с планшета, но в итоге от такого формата отказался – было не очень удобно. Поэтому выбрал другой вариант – перечитывать материал перед занятием и повторять ключевые моменты. Конечно, был определенный страх перед выступлениями, например, если что-то забуду или растеряюсь при ответе на вопрос. Моей мотивацией стало повышение квалификации не только других разработчиков, но и своей собственной, личностностной.»

Даниил

РОР

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

Отрывок из ДЗ
Отрывок из ДЗ

Дмитрий сделал еще один способ проверки усвоения материала. Назвал его «‎Генерал знаний» – участники получали батончики Mars за правильные ответы по прошлому материалу и самый интересный вопрос в конце занятия. Возможно, этот формат кому-то покажется детским, но он работал: разработчики не боялись задавать любые вопросы и лучше запоминали сказанное.

Внутренние сертификаты о прохождении обучения
Внутренние сертификаты о прохождении обучения

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

Условия прохождения курса для сотрудников

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

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

Проблемы в создании собственного курса

При разработке любого решения возникают сложности, и корпоративное обучение – не исключение.

Где найти ресурсы?

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

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

Кто будет вести лекции?

Создать курс – одно дело, другое – грамотно его преподнести. 

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

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

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

Как мотивировать сотрудников?

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

Причины на это разные: 

  • удовлетворенность текущим уровнем навыков и отсутствие потребности в развитии;

  • страх неудач или неуверенность в своих способностях, опасение показать некомпетентность перед коллегами; 

  • недостаток ресурсов, времени или финансов для обучения; 

  • отсутствие поддержки со стороны руководства.

Способы мотивировать сотрудников на обучение
Способы мотивировать сотрудников на обучение

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

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

Что получили в итоге и сколько потратили

Официально курс завершился 20 сентября 2024 года. Мы сразу убедились в его пользе на наших разработчиках. Многие советы и моменты они ежедневно применяют в решении задач. И теперь смотрят на определенные участки кода под другим углом. ‎

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

При разработке занятий и изучении материалов прокачивались и сами РОРы. Как говорится: «Хочешь в чем-то разобраться – научи этому других‎»‎) На самом деле здесь речь про «освежить память» и набустить софт-скиллы.  

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

Итоговая себестоимость нашего курса – 485 000 рублей. Она рассчитана из часов руководителей, которые затрачены на подготовку. 

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

Сейчас размышляем над тем, выпустить или нет курс в общий доступ. Что думаете?

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


  1. lovaz
    21.01.2025 08:01

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


    1. ceomt Автор
      21.01.2025 08:01

      Думаю над этим, но курс в целом для PHP-разработчиков.


  1. magaffy
    21.01.2025 08:01

    Я понимаю ваш страх, что сотрудник пройдет обучение и уйдет в другую компанию, но ученический договор это худшее, с чем я сталкивался в работе

    Итоговая себестоимость нашего курса – 485 000 рублей ...
    Стоимость курса для одного разработчика мы оценили в 130 тысяч рублей

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


    1. ceomt Автор
      21.01.2025 08:01

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


      1. FurySeer
        21.01.2025 08:01

        Какая страховка у новоиспеченного сотрудника на случай, если на нем по этому договору начнут ездить полтора года?


        1. ceomt Автор
          21.01.2025 08:01

          У нас есть четко прописанные регламенты, которые работают в обе стороны. Ну и писать могу много, но все свои гарантии сотрудник понимает еще на собесе. Есть ребята, которые в агентстве уже 5 и более лет, с самого начала.


          1. FurySeer
            21.01.2025 08:01

            Ваша страховка - поставить человека на деньги, его страховка - ваши регламенты? Гарантии на собесе? Так потребуйте с сотрудника гарантий на собесе с его стороны и достаточно. Почему вы так не делаете?


            1. ceomt Автор
              21.01.2025 08:01

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


              1. FurySeer
                21.01.2025 08:01

                Повторяю вопрос - почему вы не ограничиваетесь честным словом соискателя при найме, если сами готовы предоставить в качестве гарантий лишь слова?


                1. ceomt Автор
                  21.01.2025 08:01

                  Если документы, оформленные по ТК, - лишь слова, то, получается, что и мы берем равноценное честное слово.


                  1. FurySeer
                    21.01.2025 08:01

                    Вы не ответили на вопрос. Вы честное слово, что не будете ездить, вам - что не уйдут. Никаких выставлений счетов. Если у вас так замечательно работается, то какие риски?


                    1. lovaz
                      21.01.2025 08:01

                      А почему они должны начать "ездить" на разработчиках? В чем проблема, если такое случится, оплатить курс? Или не проходить этот, а купить другой, если есть желание поучиться? У Скилфэктори, Нетологии и прочих все за деньги. Вполне адекватная страховка с учетом того, что спецов в IT постоянно хантят.


  1. FanatPHP
    21.01.2025 08:01

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


    1. ceomt Автор
      21.01.2025 08:01

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


      1. FanatPHP
        21.01.2025 08:01

        Я так и подумал, но тут есть нюанс: генераторы не имеют отношения к потреблению памяти. Собственно, данный пример это как раз прекрасно и иллюстрирует: память экономит написание осмысленного кода (вызывать функцию не 1 раз, а 80000), а не генератор.

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


        1. ceomt Автор
          21.01.2025 08:01

          Тут моя вина, я взял первое, что попалось из ДЗ для "галочки" - для вставки в текст. Благодарен за развернутый коммент, принял во внимание.