В активном поиске: как бизнесменам и IT-специалистам найти друг друга
По состоянию на начало 2022 года рост спроса на программистов в России увеличился на 190%, в особом дефиците были Senior backend (ведущие) разработчики и DevOps-инженеры (англ. Development & Operations — «разработка и эксплуатация»). Обострение геополитики усугубило ситуацию: в марте текущего года Россию покинуло около 50-70 тысяч IT-специалистов. Несмотря на то, что 85% из них вернулись, российский бизнес по-прежнему ощущает кадровый дефицит разработчиков, специалистов по тестированию и DevOps.
Где искать кадры по этим специальностям и как привлечь их в свою компанию, рассказал Дмитрий Бахтин, директор по разработке ООО «ДМ-тех» (дочернего предприятия ПАО «Детский мир»), эксперт в разработке онлайн-сервисов и архитектуры высоконагруженных систем — специально для Daily Moscow.
Профессиональные навыки и личные качества DevOps-инженеров
DevOps это не название профессии, а методология и набор практик, направленных на изменение философии и культуры инженерных команд для повышения гибкости (agility) цифровых бизнесов.
Сильный devops-инженер имеет возможность влиять и изменять процессы разработки.
Он участвует в devops-трансформации инженерных команд, как правило — в составе инженерной платформенной команды внедряет лучшие практики DevOps и SRE (набор принципов и практик, который включает аспекты разработки программного обеспечения) и применяет их к ИТ-инфраструктуре и операциям. Основными задачами являются создание высоконадежных и масштабируемых программных систем.
Для старта карьеры devops-инженера нужен как минимум средний уровень системного администратора. Важными являются следующие навыки:
1. Подготовка и эксплуатация программного компонента в промышленной среде.
2. Анализ логов программных компонентов.
3. Создание отказоустойчивости для сервисов.
4. Аварийное восстановление.
5. Программирование сценариев и автоматизации.
6. Управление конфигурацией.
Для того, чтобы карьера devops-инженера складывалась успешно, нужно обладать следующими навыками:
Иметь фундаментальные знания устройства операционных систем — так как в большинстве случаев в промышленной разработке сервисы хостятся на операционной системе Linux, то речь в первую очередь про него.
А именно:
— процессы, устройства, разделы диска, файловые системы, пространства имен;
— загрузчики, стартовые процессы запуска, модули;
— базовые навыки устранения неполадок уровня операционных систем;
— базовые навыки программирования на Bash/Python.
Понимать концепцию контейнеризации Docker, а именно:
— понимать разницу между понятием контейнеризации и виртуализации;
— знать, какие компоненты Linux нужны для запуска контейнеров в рабочее состояние;
— уметь описывать DockerFiles используя лучшие практики;
— знать как работает сеть в Docker;
— понимать основы безопасности для Docker и докеризированных приложений, а также уметь готовить docker-compose файлы для ускорения и упрощения локальной разработки;
Понимать подход «инфраструктура как Код (IaC)» и знать сопутствующие инструменты (Terraform, Ansible, Puppet). Понимать и уметь внедрять лучшие практики непрерывной интеграции, доставки ПО и развертывания, а именно:
— знать основные инструменты развертывания CI/CD Jenkins, Gitlab CI и подобных систем, писать простые и понятные пайплайны;
— понимать концепции GitOps и инструменты внедрения этой концепции (ArgoCD/Flux и др.), принципы прогрессивного развертывания кода, разных стратегий раскатки и умение внедрять это на практике.
Уметь работать с облачными технологиями AWS/Azure и др. Знать инструменты Kubernetes и Helm, а именно:
— понимать базово архитектуру Kubernetes, знать компоненты из её состава;
— уметь настраивать автоскейлинг кластера, использовать различные типы узлов и пулов для оптимизации расходов на содержание/использование железа;
— понимать и настраивать RBAC и сетевые политики;
— уметь работать с конфигмапами, секретами, ингресами и т.д.
Уметь работать с Observability стеком — набором программных инструментов и методик, которые помогают командам DevOps регистрировать, собирать, сопоставлять и анализировать огромные объемы данных о производительности из распределенного приложения и получать ценную информацию в режиме реального времени.
— наличие опыта в работе с Prometheus, VictoriaMetrics, Graphite, Influx и аналогичных системах сбора метрик;
— понимание стека ELK (Elastic, Kibana, Logstash);
— наличие опыта работы с системами динамического трейсинга Jaeger, Zipkin, библиотека OpenTelemetry, с APM tool (NewRelic, DynaTrace);
— умение настраивать кастомные борды в Grafana, парсить и фильтровать большой объем логов из различных сервисов.
Знать базовые основы информационной безопасности:
— типы возможных угроз в интернете;
— основные эксплуатируемые уязвимости операционных систем;
— «узкие» места в протоколах передачи данных.
Иметь опыт разработки в одном из популярных языков программирования, а также базовые знания принципов проектирования высоконагруженных приложений.
Не менее важен в кандидате на должность DevOps-инженера набор soft скиллов (личных качеств): способность к самообучению и коммуникационные навыки.
В наше время, когда мир постоянно меняется, невозможно опираться только на знания, полученные 5-10 лет назад. Необходимо постоянно совершенствоваться и узнавать новое. Без самообучения сложно улучшать свои hard-скиллы (профессиональные навыки - прим. ред.).
Коммуникативные навыки важны потому, что работа devops в основном базируется на командной работе, общении с большим кругом инженеров, поэтому очень важно ясно и четко выражать свои мысли.
Плюсами при трудоустройстве станут такие качества, как самоорганизация, способность обучать других (чтобы впоследствии стать ментором), умение достигать своих целей и иметь проактивный подход к работе.
Где бизнесу искать ценные кадры?
DevOps-инженеры — универсальные специалисты, которые автоматизируют процессы и контролируют работу разработчиков цифровых продуктов, QA и менеджеров. Они обладают навыками программирования, быстро осваивают сложные инструменты и эффективно решают незнакомые задачи.
За таких специалистов бизнес готов платить свыше 400 тысяч рублей (в зависимости от уровня), но даже с такими зарплатными ожиданиями спрос превышает предложение.
Поэтому бессмысленно искать DevOps только на площадках для размещения резюме. Участие в конференциях (например, DevOps Conf и CEO Summit), митапах, размещение вакансии в специализированных телеграм-каналах (DevOps Jobs - работа и аналитика, Вакансии DevOps и системных администраторов, IT Вакансии {Разработка | QA | DevOps | Management}), рекомендации других представителей бизнеса будут более эффективными каналами поиска.
Некоторые компании предпочитают брать в штат junior-инженеров (начинающих специалистов) и в дальнейшем обучать их с акцентом на потребности конкретного бизнеса. Это грамотное решение: несмотря на то, что изначально они не дадут вау-эффекта, их услуги стоят дешевле (100 000 - 150 000 рублей), чем у senior (ведущий специалист — 300 000 - 400 000 рублей), и при правильном развитии будут гораздо перспективнее для компании.
Еще один выход — делегировать обязанности DevOps-инженера на аутсорс, особенно, когда нужен качественный продукт в сжатые сроки или необходимо выполнить краткосрочные цели.
Тем компаниям, которые планируют занять лидирующие позиции на рынке, не собираются отдавать уникальную бизнес-экспертизу во вне и хотят стать экспертами с использованием ноу-хау подходов, лучше принимать сотрудников в штат. Быструю обратную связь и непрерывное тестирование гипотез обеспечит inhouse разработка (создание программного обеспечения с привлечением экспертов своей компании - прим. ред.).
Как ускорить возвращение специалистов?
К концу 2022 года российская IT-отрасль ждет возвращения в страну примерно 10 000 специалистов. Беспрецедентные меры государственной поддержки и понимание того, что требуется соискателям в сфере IT ускорят процесс закрытия потребностей представителей бизнеса.
Для сильных DevOps-инженеров важно работать в стабильной компании, у которой есть перспективы роста, иметь возможность получать новые знания.
Помимо этого, большое количество проектов и продуктов, современный технологический стек, сильная команда инженеров, у которых можно поучиться новому — станут дополнительными бонусами для кандидатов, а если компания готова обеспечить возможность работы удаленно из любой точки России или с территории дружественных стран — считайте, что вакансия DevOps-инженера в компании закрыта.
Фото на обложке: Dasha Pears
Читайте похожие материалы на Daily Moscow: