Работа DevOps-инженера в крупной компании: ответы на частые вопросы

69fac10b91f65cfabe5be7330de2ba7b.png

Привет, Хабр! DevOps-инженеры нужны везде, но чаще всего их пока ищут крупные компании. Мы поговорили с Павлом Селивановым — сейчас он архитектор Yandex Cloud, а в прошлом долго и много работал в качестве DevOps-инженера. Павел ответил на вопросы о том, где и как ищут DevOps-инженеров, что с них спрашивают на собеседовании и чего ждать от работы непосредственно в крупной компании.

Где крупные компании обычно ищут себе DevOps-инженеров?

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

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

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

Чтобы вас находили, надо просто хоть где-то присутствовать публично — завести аккаунт на LinkedIn, резюме на hh, на личной странице в соцсетях написать, что вы DevOps. Обычно этого уже достаточно, чтобы получать предложения, причем даже начинающим специалистам.

Как проходит собеседование на должность девопса?

Под DevOps-инженером понимают сильно разное: от продвинутого эникейщика, который и принтеры починит, и контейнеры настроит, до специфического специалиста по SRE или чему-то такому. Поэтому собеседование сильно будет зависеть от вакансии.

Скорее всего вас будут спрашивать про:

  • Linux;

  • контейнеры, Docker, Kubernetes;

  • глубокие познания в Git;

  • CI/CD-системы: GitLab, Jenkins и другие;

  • облачные технологии;

  • программирование — если этого у вас не спрашивают, значит, не девопса здесь ищут.

  • софт скилы — общая логика, умение договариваться, навыки общения. 

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

Стоит также ждать тестирования на знание архитектурных подходов. Как всё работает с БД, что такое SOLID, CAP-теорема, Gateway API и т.п.

Скорее всего, будут вопросы про устройство Linux, особенно в связке с Docker и Kubernetes: про неймспейсы или оверлейные сети. Но могут быть и абстрактные вопросы про что-то вроде Inode, что на практике девопсу совсем не нужно.

У меня был интересный опыт собеседования — дали скомпилированный бинарник без исходников и попросили запустить и понять, что с ним не так. Это как раз то, с чем SRE-инженеры и DevOps-инженеры сталкиваются регулярно в рабочей практике.

А когда я собеседовал DevOps-инженеров, я их просил: «Давайте представим, что есть код, который разработчик положил в Git-репозиторий. Нам его нужно доставить на production — давайте себе представим идеальный пайплайн». К такому вопросу стоит быть готовым.

Насколько важно высшее образование и сертификаты?

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

На какую зарплату стоит рассчитывать?

Рынок очень разнородный. Где-то ищут DevOps-инженера, а по факту сисадмина, за 35 000 ₽ в месяц, хотя для крупных компаний такое нехарактерно. А где-то Senior DevOps-инженерам предлагают 500 000 ₽ и выше. Так что вакансии надо смотреть и сравнивать. 

Ну и, конечно, в вакансиях крупных компаний есть всяческие бонусы: ДМС, спортзалы, питание, обучение и прочее.

Как «иерархия» есть в DevOps?

В принципе здесь всё так же, как в остальном IT и касается скорее софт, чем хард скилов:

  • Junior — человек, которому нужно поставить задачу, проконтролировать ее выполнение и где-то помочь.

  • Middle — человек, которому ставишь задачу, и он самостоятельно её выполняет. Плюс какие-то дела себе находит и ставит самостоятельно.

  • Senior — человек, который берёт проект, разбирает его на задачи и выполняет сам от начала до конца.

  • Principal или техлид — архитектор, который планирует несколько проектов, связывает между собой и раздаёт задачи.

Вот такая «табель о рангах», вполне стандартная и понятная любому, кто работает в IT.

Насколько много DevOps программирует? Какие стоит знать языки, сильно ли в них углубляться?

Когда я трудился на позиции DevOps-инженера, большая часть работы у меня заключалась именно в программировании. Я писал либо код, либо YAML-файлы, либо код, который за меня собирал YAML-файлы.

Язык не принципиален. Если это конечно не PHP или не Perl =) Самые популярные и удобные варианты — это Python и Go.

Какая в среднем нагрузка приходится на DevOps-инженера?

Я считаю, что DevOps-ы не должны заниматься «тупой» и одинаковой работой. То есть если они берут проекты разработчиков, пишут Docker-файлы, складывают всё в CI/CD и пишут манифесты Kubernetes, то никакой автоматизации тут нет, и они просто разгружают от этих действий разработчиков. Куда лучше, если они сделают какие-то шаблоны, которые позволят разработчикам быстро и автоматически генерить Docker-файлы и запускать конвейеры.

Например, в GitLab есть возможность Include, которая позволяет написать общие библиотечные шаги. И потом сказать разработчикам: «Берите GitLab CI-файл, делайте include нашего Docker Build, вставляйте две переменные — и все само соберётся и подключится». И не придётся каждый раз по запросу разработчиков идти и что-то делать руками. То же самое с другими инструментами, например, с Kubernetes.

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

Нужен ли девпосу Istio?

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

Как стать DevOps-инженером

Мы в Слёрме сейчас запустили курс DevOps Upgrade. На нём мы рассказываем про все инструменты, нужные DevOps-инженеру для работы, и, конечно, учим ими пользоваться. Плюс обсуждаем софт скилы и смотрим, как сменить IT-профессию вроде разработчика или сисадмина на DevOps-инженера. Курс помогает расширить стек технологий, систематизировать знания и составить более общую картину DevOps-а в целом. Так что если интересуетесь этой темой, приходите к нам учиться. 

© Habrahabr.ru