Закончил большой девятимесячный курс про технологии DevOps в Практикуме.
Ещё лучше понял , что творится под крышечкой в головах у всех этих йуных смузихлёбов-манифестофилов кухню производства веб-приложений. Но это если продолжать юмористически хейтить эту тему, а если серьёзно — сейчас расскажу.
Первое и главное — это колоссальный практический опыт. Курс построен в виде квеста-приключения от лица специалиста, который проходит все этапы развития технологического стека в области разработки и эксплуатации веб-приложения. Это особо ценно, потому что ты постепенно погружаешься и получаешь возможность побывать в разных состояниях реализации подобного проекта, а ещё буквально на себе проходишь эволюцию технологии.
С позиции стека технологий — в одной точке курса ты побываешь в слабо развитой компании с минимумом инструментов (которая тем не менее уже выдаёт продукт, и с похожей на которую ты вполне можешь столкнуться на реальном рынке), в другой точке — в компании покруче, и так далее. Очень напоминает курсы по программированию и операционкам в институте, где я и память на ферритовых кольцах пощупал, и собственный менеджер памяти для учебной ОС на ассемблере писал. Уже тогда это были неактуальные и скрытые под вареньем прогресса кирпичики технологий — но именно через понимание и буквально трогание руками деталек под капотом формируется комплексный взгляд. Не знаю, насколько такая парадигма ещё актуальна в турбореактивном 21 веке, но моим мозгам так лучше понимается.
Итоговый перечень попробованных лично на курсе решений довольно обширен, про некоторые я слышал и раньше но руки не дотягивались по ходу работы, а про некоторые — был приятно удивлён существованию таких инструментов. Это тоже плюс: получаешь возможность поэксплуатировать сервисы и решения, которые самостоятельно развернуть было бы отдельной сложной задачей, а тут тебе и из пушки пострелять дали и космолёт поводить, без необходимости собирать их из исходников.
Второй плюс (хотя иногда он казался минусом) — качество материалов курса. Студента вовлекают историей, погружают в контекст «как-бы-работы» в команде, за время курса у тебя появляется несколько виртуальных героев-коллег со своими характерами и особенностями. Практические задания вплетены в ткань повествования — например, ты не просто в какой-то момент чинишь систему, а чинишь потому что «дежурный» ночью что-то сделал не то, а смог он сделать это из-за архитектурного просчёта, и дальше этот прогал в процессах и инструментах ты тоже устранишь. Но вместе с этим, на таком красивом обмазанном сторителлингом и инструкциями пути, регулярно возникают затыки. Тут команда не работает, там флаг в примере неправильный, здесь ключ в предоставленном шаблоне не тот. Поначалу бесишься, и принимаешь это за непроработанность и несистемность подхода (и возможно так оно и есть) — но в итоге, каждый такой затык оборачивается дебагом-до-утра, изучением информации, и более глубоким погружением в тему. Относиться к этому можно по-разному, но моё личное мнение — в результате тут больше пользы для обучения чем вреда, хотя деморализует местами сильно.
Третий плюс — дополнительные сопутствующие темы. Кроме технологий, в курсе много классной инфы о подходах к архитектуре и разработке приложений, даются базисные и системные вещи вроде The Twelve-Factor App, концепции бережливого производства и muda, и даже всякое рядом лежащее типа основ логики и микротем по взаимодействию в команде и софт-скиллам. Было интересно и полезно.
С точки зрения декларируемого подхода — на мою любовь к программированию, автоматизации и контролю роботами всего, где чилавеки могут накосячить, это ложится безупречно. Я ещё и кэнк-фишками всё обмазал, создавая для преподавателя автоматизированные скрипты разворачивания-настройки и проверки чеклистов по домашкам. От практической части курса получил много удовольствия.
Теперь про минусы. Объём большой, сил и времени на прохождение нужно потратить много, у курса есть более сжатая по времени версия и проходить её одновременно с работой и другими бытовыми делами было бы совсем тяжело. Местами кривая обучения очень крутая, и в некоторые темы приходится вгрызаться как в отвесную гранитную скалу (плюс нюансики материалов курса, о которых говорил выше). А в паре мест курс повторно касается некоторых тем, как будто его составили из нескольких более мелких и не очень аккуратно сшили.
Очень большая переменная — наставник, который должен выступать человеческим проводником между учебником и учениками на курсе. Здесь всё зависит от того, кто вам попадётся — и вполне может быть что это будет человек так себе квалификации и софт-скиллов, от которого нечего взять по знаниям, у которого нельзя получить помощи при затыках, и с которым сложно выстроить коммуникацию в части выполнения и защиты множества практических работ (и от этого аспекта уйти уже не получится никак). В случае если выпал именно такой наставник, можно попробовать перевестись на следующий поток, ну и конечно же функции помощи при попадании в капкан и обмена опытом отлично выполняют другие ребята на курсе — большинство своих сложностей я решил именно при поддержке одноклассников, разгребая проблемы вместе с ними или изучая уже заданные вопросы и ответы в тредах чятика.
Дипломная работа — опубликованный в интернете магазин пельменей, развёрнутый по принципам IaC
В части дипломной работы, если делать всё по-максимуму, придётся самостоятельно изучить несколько технологий, о которых в курсе нет информации (и инструменты для которых во время учёбы предоставляются уже развёрнутыми и настроенными). С другой стороны, очень жёстких критериев на объём выполненной дипломной работы нет, так что острые и непонятные углы при необходимости можно обойти. Но фишка, когда в дипломной работе ты в сжатые сроки ещё раз проходишь все темы курса с другим приложением и в чуть другой инфраструктуре — мегаполезная для закрепления, хотя интенсивность работы в эти недели выходит жестковатой. Знаю примеры, когда люди брали отпуска на работе чтобы сделать диплом.
Так как существенная часть курса проходит в облаке яндекса, которое некоторыми деталями реализации отличается от стандартов того же AWS, иногда бывают затыки от того что типовые примеры и решения в интернетах используют как раз эти стандарты.
Ещё мне не очень понятно позиционирование курса — изначально наш герой переходит в девопс из программирования (что само по себе фантастический на мой взгляд сценарий), но дальше по ходу курса лично я много опирался на уже имеющиеся знания во множестве областей — от операционок и программирования до тех же ранее встреченных девопс инструментов. Как было бы оказаться на курсе без этой базы — например, чистому незамутнённому посторонними знаниями фронтендеру, сисадмину, или как одна моя знакомая, ручному тестировщику — не знаю. Но кажется, что курс точно не для новичков.
AI как помощник
Проверяем отступы в yaml с помощью правильных tools
Часть курса я проходил при поддержке агента Cursor и браузерных чатботов, оттестировав при этом приёмы работы с ними. Как и в случае вайб-кодинга, совсем в самостоятельное плавание иишечки пока ходить не готовы, а вот как учителя и как скилластые, но отвлекающиеся джуны-исполнители (девопсята) вполне себе годятся.
AI очень хорошо объясняет моменты, недостаточно раскрытые в курсе, и вообще классно работает как тьютор. Причем на текущий момент оно прекрасно пережёвывает всё — от кусков манифестов, до скриншотов с лекций. Просишь обьяснить — и обьясняет.
А вот то, что касается использования как справочник или как создателя (кода, конфига итп) — работает хуже. Чатбот может на голубом глазу выдумать несуществующие опции у команд или набредить свои эндпоинты в известном всем API. Здесь я придумал приём, который очень помогает — сохранить в проект документацию и примеры из систем (того же Яндекс облака как вариант) и дать в промте задачу формировать конфиги и команды исходя из них.
Хорошо себя показал плагин SpecStory, который включает журналирование всех действий и диалогов, и помогает документировать работу и разбираться в истории изменений. Ещё в разрезе курса классно работает приём, когда по итогам выполненной практики просишь агента сформировать скрипт, который инструментально проверяет работу по чек-листу (который обычно есть в задании) и резюмирует проведённую работу.
Кстати ещё, не знаю когда это появилось, но на днях узнал что оплачивать подписку на Cursor теперь можно рублями через сервис оплаты МТС, так что скайнетик для нас становится всё доступнее.
За время использования сам Cursor многократно обновлялся и менялся, на ходу перекраивая паттерны работы, и иногда эту работу просто ломая. Так что тут тоже опыт: внутри спринта инструмент лучше не обновлять (ровно так же как не стоит например в такой момент отпускать джуна в недельный отпуск). Всё как у людей )
Итоги
Сильно расширил кругозор, хорошо прокачал системную часть в Linux и автоматизацию, уже заметил сдвиги в сознании и подходе к работе — собственно там уже во время курса часть рутины стал мыслить в парадигме SecOps, IaC и SaC. Скоро всё запрограммируем, загитируем, заманифестируем и отдадим, наконец роботам делать всю рутину. Ура!