В сентябре 2022 года Слёрм запустил первый поток «CI/CD с Jenkins», а уже 15 февраля стартует второй. В преддверии начала обучения мы провели интервью с автором курса и старшим инженером-программистом VK, Кириллом Борисовым. В статье все подробности: кому будет полезно и каких результатов удастся достичь, с какими вопросами можно приходить в учебный чат даже ночью и почему так важно пропускать лекции и домашние задания сквозь призму личного опыта.
Почему решил сделать курс по Jenkins
В каком‑то смысле на создание курса меня вдохновила конференция DevOps Conf. Я не был в числе выступающих, но с интересом наблюдал за ними и вдруг подумал: «А почему бы не попробовать себя в роли спикера?«.
Слёрм тоже был на этой конференции. Я много слышал про его интенсивы и знал, что на них периодически требуются спикеры. Недолго думая, зашёл на сайт и написал в чате что‑то вроде: «Привет! Как стать у вас спикером?».
Со мной связались и назначили встречу в Zoom, чтобы познакомиться и узнать о моём опыте в IT. После этой встречи мне написал Женя Бутырин — руководитель одной из учебных команд. С ним мы уже предметно обсудили темы, в которых я мог бы выступить экспертом. Я рассказал, что давно работаю с Jenkins, и Женя такой: «О, класс! А мы как раз решили делать курс по нему«.
Про подготовку учебной программы
У Жени был готов драфт учебной программы, с которым я продолжил работать. Изначально мы договорились, что это будет курс для людей, которые что‑то слышали про Jenkins, но серьёзно с ним не работали. Соответственно, начинать нужно было с базовых вещей. Первые две‑три лекции посвящены основам CI/CD и Jenkins, дальше сложность постепенно нарастает, и мы идём в более интересные темы.
Поначалу проработка лекций казалась мне чем‑то очень простым: берёшь и рассказываешь всё, что знаешь. Что в этом такого? Но в ходе работы с методистом я понял, насколько ошибался. Сейчас могу сказать, что создание курса — сложный и трудоемкий процесс, в котором нужно выкладываться на полную. Приходится постоянно структурировать информацию в голове и думать, как подать её максимально просто и понятно. Мало знать материал, его ещё нужно уметь объяснить, а это совсем другой скилл.
Кому будет полезен курс
В большей степени мы создавали этот курс для Junior DevOps‑инженеров и системных администраторов. Однако во второй половине разбираем более хардовые темы, которые полезны не только джунам, но и мидлам. Например, рассказываем, как улучшить пайплайн или сделать процесс доставки приложения более прозрачным и автоматизированным, объясняем, как работать с Jenkins Shared Libraries и Templating Engine и др.
На первый поток пришли совершенно разные люди: и те, кто вообще не знал, что такое Jenkins, и те, кто уже использовал инструмент в работе. Последних интересовала возможность получить более глубокую экспертизу, пообщаться с единомышленниками и задать вопросы. Мы очень часто переписывались в чате, решая какие‑то вопросы. Те, кто поопытнее, активно включались в обсуждения и делились своим видением. Вовлеченность была на максимальном уровне, и это здорово.
Про подход: «Старался пропустить всё через призму опыта и ошибок»
Я тоже учился на разных курсах. И вот, что вынес из большинства: зачастую люди, читающие лекции, хорошо знают теорию, но практически не знакомят студентов с реальными сценариями использования. Условно, рассказывают, что есть инструмент, но не объясняют, что с ним делать. Как раз этого я хотел избежать в «CI/CD c Jenkins».
Я старался делать акцент на практической составляющей. На уроках не просто разбирал что‑то абстрактное, а показывал, как это работает на примере конкретных кейсов из жизни. Все лекции и домашние задания я пропустил через призму своего опыта и своих ошибок.
Из работы с методистом я понял, что при создании курса в первую очередь нужно установить учебную цель, а затем на основе неё прорабатывать программу. Примерно по такому алгоритму и двигался. Брал тему, например, основы Jenkins, спрашивал себя: «Какие знания должны остаться у студентов после прослушивания лекции?» и составлял план.
Каждый урок «CI/CD c Jenkins» я дополнял конспектом — краткой выжимкой того, о чём я говорю на протяжении полутора часов. За счёт этого студент в любой момент может вернуться к нужной теме и освежить знания. Это особенно полезно при выполнении практики: не нужно переслушивать мою «говорящую голову», достаточно просто пробежаться по структурированному тексту.
А что с домашними заданиями?
При составлении домашних заданий я тоже опирался на свой опыт. А ещё старался сделать так, чтобы студенты выполняли их осознанно и могли попробовать руками всё, что мы разбираем на лекциях. Цель домашек — закрепить материал, помочь лучше понять его.
Как это работает? Представим, что мы ничего не знаем про Jenkins, и на нашем проекте появилась задача сделать CI/CD для микросервиса. Мы начинаем выполнять её. Сначала создаём простенький пайплайн в четыре строчки, который что‑то делает, и по мере погружения в материал начинаем совершенствовать его. От урока к уроку пайплайн «обрастает мясом», в нём появляются новые фичи, добавляются интеграции. И в результате процесс доставки становится более надёжным.
В каждой домашке мы фактически работаем над одним и тем же репозиторием с кодом. А к концу обучения у нас получается сложный пайплайн, который не просто собирает проект, а отправляет нотификации, делает сканирование, выкладывает артефакты и т. д.
Коротко о главном: какие проблемы решит курс
Курс даёт комплексное понимание, что такое Jenkins. Прослушав все лекции и выполнив домашние задания, вы:
поймёте, что Jenkins — не просто инструмент CI/CD‑, а полноценный фреймворк;
научитесь настраивать CI/CD для любого приложения с помощью Jenkins;
разберётесь в сложных сценариях использования вроде настройки нотификаций, сканирования SonarQube и др.
У вас появятся структурированные знания для работы с Jenkins — вы сможете внедрить его в своей компании и сделать автоматизацию, которая позволит сервисам быстрее обновляться. О таких образовательных результатах я сужу, в первую очередь, по отзывам тех, кто был на первом потоке.
Кстати о первом потоке: у нас был чат в Telegram, где мы общались практически 24/7. Что мне особенно понравилось — большая часть студентов приходили с конкретными запросами и задавали вопросы в духе: «А можно ли то, о чём ты рассказал, применить в нашем кейсе?«.
На втором потоке хочется ещё больше интересного общения и сложных вопросов. Поэтому 15 февраля жду всех, кто хочет разобраться с Jenkins.