Методология DevOps сейчас активно используется при создании, внедрении и сопровождении различных ИТ решений. Для того, чтобы эффективно работать с ИТ системами нужна команда, состоящая из множества разных специалистов разработчиков, тестировщиков, инженеров сопровождения и т. д. А у любой команды, как известно, должен быть лидер.
В этой статье мы поговорим о том, кто такой DevOps lead, какие навыки ему требуются и какие проблемы должен уметь решать данный специалист.
Начнем мы с рассмотрения основных обязанностей, которые он выполняет.
Итак, руководство командой задача непростая. DevOps сочетает в себе как разработку и тестирование, так и сопровождение решения в продуктивной среде.
Соответственно, DevOps lead должен иметь экспертизу во всех этих областях, для того чтобы понимать их специфику. Да конечно, лидер команды не должен (хотя бы в идеальном мире) все делать сам, но понимать как что функционирует ему необходимо. Именно поэтому почти всегда DevOps lead это практически всегда инженер, который «дорос» до лидера.
Но помимо этого DevOps lead должен выстраивать процессы взаимодействия между все теми же командами разработки, тестирования и эксплуатации. Учитывая различные специфики работы этих подразделений, данная задача не всегда является простой.
Основной целью лидера команды является обеспечение стабильности работы, автоматизации и масштабируемости на всех этапах разработки, от написания кода до выпуска приложения в продуктив и последующего сопровождения.
По сути, DevOps lead это не просто один из инженеров, а это технический специалист, отвечающий за принятие ключевых архитектурных решений, внедрение передовых практик и развитие команды в целом.
В зависимости от масштабов компании и соответственно размеров команды, DevOps lead может совмещать роли архитектора и менеджера, хотя здесь стоит отметить, что в целом, совмещение ролей это не очень хорошая практика, и лучше постараться ее избегать.
Таким образом, DevOps lead должен держать все под контролем, обеспечивая эффективную работу различных специалистов для достижения общей цели.
Как стать Devops lead
Итак, мы разобрались с тем, что должен уметь DevOps lead, теперь давайте поговорим о том, что нужно знать и уметь для того, чтобы им стать.
Прежде всего, как уже упоминалось выше — это наличие глубокой технической экспертизы. Да, во многих публикациях посвященных этой профессии на первое место ставят так называемые soft skills, о которых мы тоже еще поговорим далее, но все же я считаю, что DevOps lead без технического бэкграунда это просто менеджер. Поэтому, DevOps lead это прежде всего квалифицированный инженер с большим опытом работы.
Но, для того, чтобы эффективно руководить командой необходимы также лидерские качества и здесь у многих технических специалистов часто возникают проблемы. Так, например, человек может быть прекрасным инженером, отлично разбираться в технологиях, но при этом быть совершенно не способен организовывать работу команды.
Например, руководитель команды должен уметь не только назначать своим инженерам задачи, но и контролировать их своевременное выполнение. В случае трудностей нужно уметь быстро эскалировать задачу для того, чтобы не допустить потери времени. Многие начинающие DevOps lead в таких ситуациях часто пытаются решать возникшие проблемы самостоятельно и в результате напрасно тратят драгоценное время.
Стоит отметить, что подобные ситуации можно встретить достаточно часто, когда опытного инженера выдвигают на лидерские позиции, но в итоге он вынужден уйти, так как не справляется с возложенными задачами в том числе и из‑за отсутствия лидерских качеств. В результате компания лишается и хорошего инженера, и DevOps lead.
Коммуникабельность
Культура DevOps предполагает помимо прочего взаимодействие различных команд, и здесь без умения договариваться никак не обойтись. А для того, чтобы эффективно находить общий язык с другими людьми нужно обладать достаточно высоким уровнем коммуникабельности.
Сюда входит как в принципе умение общаться с другими людьми, так и умение убеждать, при необходимости отстаивать свою точку зрения в споре. Зачастую при решении различных проблем у разных специалистов могут быть различные точки зрения. Например, в случае проблем с производительностью у специалистов по сопровождению может быть свои предложения по решению а у разработчиков свои и DevOps lead должен во‑первых, уметь выслушать каждую из сторон, затем принять правильное решение (об аналитическом мышлении мы поговорим чуть дальше) и после этого убедить в необходимости сделать именно так всех участников.
Так что здесь требуется не только искусство общения но и искусство ведения диалога и убеждения.
Аналитическое мышление
Умение анализировать проблемы и принимать правильное решение важно для любого специалиста, но для DevOps lead это особенно важно так как от его решений на проекте зависит очень многое. Поэтому способность анализировать процессы и находить узкие места — важный навык, то есть лидер должен уметь собирать данные, анализировать их и на основе полученной информации оптимизировать рабочие процессы. Это включает в себя мониторинг производительности, анализ инцидентов и оценку рисков.
Важно не допускать ситуаций, когда проблема уже случилась и необходимо ее срочно решать. Гораздо лучше, когда DevOps lead заранее проанализирует ситуацию, определит возможные узкие места в системе и примет необходимые меры.
Но здесь тоже не все так просто. Очень часто для решения возможной проблемы могут предлагаться несколько решений. Так, разработчики могут предложить несколько вариантов изменений для оптимизации работы системы. И здесь лидер должен проанализировать каждое из предлагаемых решений и выбрать наиболее подходящий вариант. При этом зачастую «плохой вариант» может быть представлен в «хорошей упаковке». То есть специалист, который предлагает этот вариант обладает искусством убеждения (все те же soft skills) и предлагаемое решение вроде как выглядит наилучшим вариантом, но на практике он не учитывает возможные подводные камни, которые могут возникнуть при реализации его предложения. В результате DevOps lead поддаваясь на его убеждения принимает этот вариант без должного анализа, что затем приводит к проблемам.
Поэтому, при анализе различных способов решения проблем лидер должен взвешенно оценивать каждый вариант, не обращая внимания на «обертку».
Гибкость и готовность к изменениям
Это качество логично вытекает из предыдущего. DevOps предполагает постоянное движение вперед, использование новых технологий и решений. DevOps lead должен уметь быстро адаптировать решение к изменениям среды, появлениям новых требований от заказчика и прочим проблемам, требующим гибких решений.
Какими технологиями должен владеть DevOps lead
Продолжая тему технического бекграунда, без которого DevOps просто никуда, давайте рассмотрим основной стек технологий, с которым ему придется иметь дело.
Прежде всего, лидеру необходимо хорошо ориентироваться в средствах автоматизации процессов CI/CD. В зависимости от используемых в компании средств разработки, DevOps lead должен хорошо знать Jenkins, GitLab, Argo CD и аналогичные инструменты.
Также необходимо владеть средствами для создания инфраструктуры как код (IaC) и средств контейнеризации. Так что Terraform, Docker и Kubernetes также необходимы лидеру команды.
Также желательно разбираться в инструментах, используемых для автоматизации тестирования.
И наконец, DevOps lead должен уметь работать с средствами мониторинга и управления инцидентами. Так что стек ELK, и другие средства, предназначенные для мониторинга работы системы обязательны для DevOps lead.
С какими проблемами может столкнуться лидер команды?
Одной из основных проблем, с которой постоянно придется бороться DevOps lead является сопротивление изменениям. Многие люди по своей натуре достаточно консервативны и предпочитают всегда следовать принципу «работает — не трогай», даже если «работает» не всегда хорошо.
Поэтому внедрение средств CI/CD, инфраструктуры как код и других средств автоматизации может встретить пассивное сопротивление от команд, привыкших к «ручной» работе. И здесь лидеру придется сначала убеждать, затем обучать и выстраивать доверие к новым решениям.
Еще одной проблемой является отсутствие общих стандартов в работе между отделами разработки, тестирования и сопровождения. DevOps должен уметь систематизировать и стандартизировать подходы.
Также часто, особенно в больших командах можно столкнуться с неравномерным уровнем знаний, когда есть как опытные специалисты, так и начинающие.
Здесь лидеру важно построить работу таким образом, чтобы «старички» могли поделиться знаниями с «молодежью» при этом без ущерба для работы систем.
Также дежурными проблемами является пресловутое легаси, унаследованные решения от которых невозможно избавиться и ограниченность ресурсов.
Для работы с первыми как правило приходится придумывать различные костыли в виде скриптов и другого самописного ПО, ну а для выбивания ресурсов зачастую требуется все тот же soft skills и искусство убеждения.
Заключение
DevOps lead это важный человек на проекте. От него зависит насколько эффективно будет работать система, насколько быстро будут решаться возникающие проблемы. Поэтому, лидер должен хорошо разбираться в технических вопросах, связанных с функционированием систем, а также уметь взаимодействовать как со своей командой, так и с другими подразделениями и при необходимости, с заказчиком для достижения целей проекта. Стоит без преувеличения сказать, что каждый хороший DevOps инженер должен стараться развиваться для того, чтобы со временем стать DevOps lead.
Понимание роли DevOps lead — лишь первый шаг. Чтобы глубже изучить, как выстраивать работу команды, оценивать компетенции специалистов и адаптироваться к изменениям в реальных проектах, приглашаем вас на бесплатные открытые уроки курса DevOps Lead.
25 августа в 20:00 — «Просеивание рынка: самозванцы, эффект Даннинга‑Крюгера и другие несказочные персонажи». Разберём, как правильно оценивать навыки специалистов и избегать ошибок при формировании команды.
10 сентября в 20:00 — «DevOps‑команда мечты — супергерои или обычные люди?». Обсудим, как создавать слаженные команды и эффективно взаимодействовать с разными специалистами.
Кроме того, рекомендуем пройти бесплатное вступительное тестирование, которое позволяет объективно оценить свои знания и навыки.