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

В MTС Web Services мы столкнулись с такой потребностью в масштабе сотен команд — и вместо очередной документации решили сделать внутренний практический курс с живыми инструментами, реальными процессами и выпускным проектом, который нужно собрать end-to-end. 

Меня зовут Елисей Захаров, я из центра практик DevOps в MTS Web Services. В этой статье расскажу, как мы вместе с командой Центра обучения и развития проектировали курс, почему он получился именно таким и какие результаты дает спустя несколько лет. Покажу, с какими трудностями столкнулись и на какие грабли наступили, — если будете разрабатывать курс для внутреннего обучения, вам это пригодится.

Зачем так заморачиваться

Все началось в 2020 году, когда в МТС стартовала масштабная программа по унификации внутренних процессов. Ее цель — превратить экосистему продуктов в действительно технологичную, быструю, управляемую и гибкую платформу. В рамках трансформации определили направления приоритетного развития. В их число вошел DevOps. После этого команда два года разрабатывала, тестировала и внедряла единые стандарты и практики для более 400 продуктов экосистемы. Подробнее об этом мы писали раньше.

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

Как понять, о чем рассказывать

Для начала нам с коллегами предстояло разработать учебную программу. Причем такую, которая даст необходимые комплексные знания DevOps-инженерам и аналитикам в сжатые сроки. Времени на обучение отводилось немного: всего 14 занятий в течение около трех с половиной месяцев. За это время нужно было рассказать и об инструментах, используемых в компании, и о том, как выстроить DevOps-процессы. Чтобы студент мог увидеть картину целиком и понимать, как они работают в жизни.

Совет: начните с портрета обучаемого

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

Пример: у вас в компании много крутых тестировщиков, но они не сильны в DevOps-процессах. Значит, упор нужно делать на CI/CD. Всегда ориентируйтесь на то, что происходит внутри компании и какие запросы из команд звучат.

Как выбрать тех, кто потянет, из всех желающих

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

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

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

Желающих было много! Поэтому конкурс достаточно высокий. На первый поток подали порядка 550 заявок, на последующие — каждый раз не меньше 250. Нам приходится отказывать многим, потому что формат предполагает плотную поддержку. Один преподаватель качественно не может вести больше 12 учеников. Преподавателей пятеро, поэтому в каждом новом потоке у нас около 60 новобранцев.

Отбирая, мы смотрим не только на уровень знаний, но и на текущую роль + выполняемые задачи. Кандидат должен не просто справиться с тестовым заданием. Главное — суметь объяснить, зачем ему эти навыки и как он планирует применять их в работе.

Что делать с большим разбросом в навыках и опыте

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

Совет: формируйте группы по уровню знаний. В одной более подготовленные, в другой — менее. Так преподавателю проще адаптировать материал, а студенты не будут сильно отставать друг от друга.

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

Задача со звездочкой: как обучить за несколько месяцев принципам DevOps 

Совет: соберите весь материал лекций и посчитайте, сколько времени займет их чтение.

Определив профиль учащихся и их потребности, мы подготовили черновик курса. Это был объемный лонгрид со всей теорией. Вместе с командой собрались, прочитали его вслух и засекли время. Добавили еще немного на демонстрацию, вопросы и ответы. Так поняли реальный тайминг и начали разбираться, что оставить, углубить или и вовсе выбросить из программы. Приемлемая цифра получилась не сразу, но появилась отправная точка отсчета, позволившая нам понять длительность курса.

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

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

На семинарах изучаем именно те области, которые используются в MWS. Конечно, курс не охватывает всю информацию по теме. Но дает точку входа, позволяющую ориентироваться в end-to-end-процессах. Поэтому часть занятий мы уделили базе: Linux Shell и инструменты командной строки. 

Базовый Shell выбрали сознательно, потому что DevOps-инженерам часто приходится работать с минимальными образами, где нет bash или привычного окружения. Обязательно разбираем базы данных, основы наблюдаемости, CI/CD-инструменты, инфраструктурные компоненты и ряд вспомогательных утилит, которые регулярно встречаются в работе. Часть инструментов объединили в обзорный блок — без углубления, но с пониманием, зачем они нужны и где применяются.

Корректируем процесс на ходу

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

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

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

Проверка знаний

Совет: домашние задания в течение всего потока обучения — обязательная часть. Так вы понимаете, насколько ученики усвоили материал, где у них пробелы, куда стоит углубиться и дать дополнительные объяснения.

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

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

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

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

Зачем нужна финальная работа

Совет: финальная работа позволяет ученику закрепить и систематизировать материал, а преподавателю — оценить, насколько программа усвоена.

По нашему опыту подход «теория + практика + постоянная связь с преподавателем» дает необходимые знания и навыки для осознанных решений в инфраструктурных задач. Но чтобы проверить, сложилась ли у обучающегося «единая картина» и понимание процессов, за две-три недели до окончания курса мы даем обязательное итоговое задание. Это обобщение всего пройденного материала. На выполнение отводится от двух недель до месяца. За это время нужно собрать на базе виртуальных машин единый end-to-end-процесс. Мы ждем, что студент сможет подготовить машины, собрать приложение и работающие контейнеры, разложить их по хостам и системам хранения, выстроить пайплайны и получить в конце рабочее приложение. 

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

Именно финальная работа играет ключевую роль в закреплении необходимых навыков. Выпускной проект моделирует работу с инфраструктурой в реальных условиях и позволяет оценить, насколько человек разобрался в процессах. Без ее сдачи сертификат о дополнительном обучении тоже не выдаем. У нас все строго, но и навыки по окончании — реальные и применимые.

Курс для людей без опыта непростой: в первых двух потоках до диплома дошли примерно 50% участников. Со временем ситуация улучшилась: в последних доля завершивших выросла до 60–70%.

За три года у нас состоялось четыре потока — по одному примерно раз в полгода. В сумме мы обучили около 240 человек и не собираемся на этом останавливаться. 

Что дает внутреннее обучение

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

Взращивание квалифицированных сильных кадров внутри компании. Для некоторых курс становится трамплином в новую роль — при должном усердии и глубоком погружении. У нас есть показательные кейсы. Например, один из выпускников первого потока пришел на курс из роли аналитика. А уже через пару месяцев после обучения занял позицию мидла, а затем вырос до сеньора и стал техлидом. Таких позитивных историй у нас много. После курса у сотрудника появляется рабочий инструментарий и базовое понимание процессов, навык закрывать простые инфраструктурные задачи. А предела совершенству нет — все зависит от желания и амбиций. От 10 до 30% выпускников после курса переходят на новые роли или берут на себя расширенные инженерные задачи.

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

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

  2. Определите, сколько времени займет курс, — это важно как для преподавателей, так и для студентов. Выясните, какой временной ресурс вам готова выделить компания, и ориентируйтесь на этот срок при подготовке программы.

  3. Определите точку входа: какой минимум навыков должен быть, чтобы обучение было эффективным. Отсеивайте как неподходящих кандидатов, так и слишком квалифицированных.

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

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

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

  7. Один преподаватель не сможет эффективно обучать более 12 человек, учитывайте это.

  8. Теория должна сопровождаться практикой, демонстрациями, обязательны сессии ответов на вопросы и разборы ошибок.

  9. Помните, что обучение — живой процесс. Ориентируйтесь на изменения в компании и обратную связь. Курс постоянно придется немного адаптировать под новые реалии — это нормально.

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

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