Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Привет, Хабр! На связи Т1 Цифровая Академия из Холдинга Т1. Сегодня расскажем о
том, как мы помогали клиенту справиться с нехваткой data-инженеров и увеличить
темпы найма, дообучая кандидатов навыкам работы с Apache Spark на реальных
задачах компании.
Почему data-инженеров так часто ищут и так редко находят?
Не секрет, что Big Data сейчас используют повсеместно — и это не зависит от размера
бизнеса. В такой большой области нужны самые разные специалисты: аналитики,
инженеры, сайнтисты. И нужны они всем (или почти всем): госсектору, банкам,
промышленности, недвижимости, маркетплейсам, и так далее, далее, далее.
Потребность в Big Science за последние 10-15 лет кратно выросла.
Во-первых, потому что само количество данных, генерируемых человечеством,
примерно с 2010 года растет по экспоненте. Масштаб можно оценить, например, из
исследования Statista, но для общего понимания достаточно знать, что общий объем
данных в мире с того самого 2010 года измеряется зеттабайтами. Вторая причина —
повсеместное стремление к прогрессу, оптимизации и бизнес-эффективности.
В самом общем смысле Data Science нужна, чтобы автоматизировать процесс
принятия решений, основанный на данных. То есть оптимизировать более или менее
типовые задачи, заменив «ручной» труд «машинным». Но Data Science — это только
вершина айсберга. Яркая, «хайповая», но все же только вершина. Чтобы аналитикам
было с чем работать, компаниям нужны data-инженеры.
Это не столь популярная, но не менее востребованная роль. А иногда и более: из всех
ИТ-специальностей, спрос именно на data-инженеров растет быстрее всего — это
выяснили еще в 2020 году. Сейчас на HeadHunter размещено больше полутора тысяч
предложений по этой профессии, а Indeed, где публикуют вакансии со всего мира,
содержит около 14 000 объявлений. И это неудивительно, ведь они жизненно
необходимы очень многим компаниям.
Задачи data-инженеров связаны в первую очередь с доставкой, хранением и
обработкой данных. Как обеспечить поступление данных в базу, как построить
конвейер данных («пайплайн»), как наиболее эффективно очистить данные. Data-
инженеры занимаются строительством архитектуры данных или тем, что можно
собирательно назвать ETL-процессами: достать данные (Extract), обработать
(Transform), загрузить (Load).
Data-инженерам недостаточно быть экспертом в какой-то одной области: профессия
находится на стыке статистики, математики, системного анализа и машинного обучения. Вот примерный перечень того, что требуется от data-инженера (может
отличаться от компании к компании и от сферы к сфере):
Знание SQL
Опыт работы с реляционными и noSQL базами данных (чаще Oracle, PSQL)
Знания в области инструментов BigData (Hadoop, Spark, Hive/Impala)
Опыт разработки на Python, Scala
Понимание основных концепций DWH
Понимание базовых и основных команд Git
Знание планировщиков процессов (AirFlow, Oozie).
В ВУЗах всему этому не научишься — университеты предлагают несколько
магистерских программ и курсов ДПО, но без самообразования стать специалистом с
глубоким пониманием сферы практически невозможно.
Итак, data-инженеров мало где учат, а навыки у них довольно специфические. Так что
неудивительно, что поиск хорошего data-инженера — нетривиальная задача для
любой компании. Найти специалиста, который будет знать абсолютно все —
нереально. Как минимум это будет очень долго или очень дорого, или и то, и то.
Поэтому компании ищут специалистов с нужными именно их бизнесу навыками. Но и
это тоже непросто — из-за многообразия инструментов и фреймворков.
Так, один наш клиент столкнулся с необходимостью в два раза увеличить найм data-
инженеров — и не смог, потому что 90% соискателей на позицию data-инженеров не
проходили собеседование из-за слабых навыков работы с Apache Spark, Hadoop и
AirFlow. Из 200 соискателей только 10 дошли до собеседования и только 1 был нанят.
Почему Apache Spark двигает бизнес, но тормозит найм?
Пойдем по порядку: Apache Spark — это Big Data фреймворк с открытым исходным
кодом для распределенной пакетной и потоковой обработки неструктурированных и
слабоструктурированных данных, входящий в экосистему проектов Hadoop.
Он состоит из 5 основных компонентов:
Spark Core — основа фреймворка. Управляет памятью, хранит данные, планирует задачи и обработку данных;
Spark SQL — библиотека для структурированной обработки данных. Использует DataFrames и позволяет обрабатывать данные в распределенном хранилище Spark;
Spark Streaming — инструмент, чтобы эффективно передавать потоковые данные в реальном времени. Если быть совсем точным, не в реальном времени, а в режиме micro-batch, но производительность от этого особо не страдает;
Библиотека машинного обучения (MLlib) предоставляет несколько алгоритмов машинного обучения, которые можно применять к большим данным. Хороша тем, что сильно быстрее своего конкурента — библиотеки Apache Mahout;
GraphX — библиотека для визуализации и анализа данных с помощью графиков.
Возможности распределенной потоковой обработки данных делают Apache Spark
идеальным инструментом для использования в IoT-системах, а также в различных
бизнес-приложениях. Spark применяется для прогнозирования оттока клиентов,
оценки финансовых рисков, мониторинга производительности промышленного
оборудования в обрабатывающей промышленности, для прогнозирования задержек
рейсов поездов и самолетов. Его используют многие крупные компании: от Amazon и
eBay до Yahoo!.
Открытый исходный код делает Apache Spark все более и более популярным выбором
для российских компаний — по понятным причинам.
Еще одно преимущество Apache Spark — скорость. По целому ряду параметров
Apache Spark быстрее, чем Apache Hadoop. Например, он выигрывает у Hadoop
MapReduce, потому что выполняет обработку в оперативной памяти, что сокращает
операции чтения-записи. Если Hadoop на каждом этапе обработки записывает данные
обратно во внешнее хранилище, то Spark делает это только после выполнения
задачи. Скорость написания кода на Spark тоже выше, поскольку разработчикам
предлагается больше высокоуровневых операторов.
При этом многие специалисты машинного обучения и искусственного интеллекта все
еще не используют Spark или используют его только для инженерии данных, а не для
машинного обучения. Во многом это объясняется тем, что в некоторых аспектах Spark
довольно неочевиден и его глубокое освоение требует больших усилий.
Например, для выполнения распределенной обработки data-инженерам надо
детально понимать механику разбиения на разделы и управления ресурсами Spark.
Не так просто устроена оптимизация плана выполнения с помощью Spark Catalyst —
если не учитывать, что Spark выполняет преобразования на уровне раздела, а не
набора данных, легко растерять всю скорость и эффективность обработки данных.
Это, пожалуй, основная трудность: Spark очень сложен в настройке и обслуживании.
Так что при всей эффективности и многофункциональности Apache Spark, вовсе
неудивительно, что специалистов с глубокими навыками по нему на рынке не так
много.
Как мы помогли клиенту нанять 14 data-инженеров, дообучив кандидатов Apache Spark
Кратко напомним, в чем суть: из 200 кандидатов на позицию data-инженера у нашего
клиента до оффера доходил только 1 — то есть процент найма составлял 0,5%. Наша
цель была кратно и быстро его увеличить, «подтянув» тех соискателей, которым не
хватало только навыков работы с Apache Spark.
В первую очередь мы провели широкий скрининг резюме по открытым позициям
заказчика — отсмотрели порядка 1200 профилей — и выявили среди них 600
кандидатов, наиболее подходящих как для вакансий, так и для быстрого дообучения
Apache Spark. Мы выбирали тех, кто уже хорошо знаком с SQL, Python, знает основы
Data Lake/DWH — отбирали не вручную, а с помощью автоматизированного
тестирования. В нем кандидату предлагалось пройти тест с вариантами ответов, по
итогам которого он сразу видел свои баллы по всем требуемым для найма
компетенциям. Если тестируемый не достигал проходного уровня по всем
компетенциям, система показывала его уровень и рекомендации по улучшению
проседающих навыков, а если тест был пройден достаточно хорошо, то открылось
второе задание — уже без вариантов решений. Эти задания мы уже изучали вручную:
кого-то приглашали в школу, а если у кандидата хватало всех компетенций, в том
числе Apache Spark — могли сразу передать его контакты клиенту для приглашения на
собеседование.
После тестирования у нас осталось 148 человек, которые вошли в группы по
дообучению. В течение месяца они прошли 8 двухчасовых вебинаров — по итогам
каждого выполняли домашнюю работу, основанную на реальных задачах заказчика,
которую проверял и оценивал эксперт. Диапазон заданий был достаточно широкий: от
визуализации данных с динамическими параметрами в Zeppelin и работы с RDD, до
поднятия кластера и UDF оптимизации. Для этих заданий у нас была развернута
инфраструктура на Т1 Cloud — для повышения безопасности все учились в нашем
закрытом контуре через VPN.
60 человек успешно освоили курс, и мы передали их полное портфолио нанимающим
менеджерам клиента: резюме, входное тестирование, успеваемость по курсу и
практике, обратная связь эксперта, примеры работ и кода — с ранжированием по
баллам. Половину из наших выпускников пригласили на интервью, а 14 человек в
итоге получили оффер — а это уже 23% найма по сравнению с начальными 0,5%.
Что в итоге?
В области Data Science есть великое множество инструментов, библиотек,
фреймворков, видов баз данных и так далее — и поэтому найти специалиста с
конкретными точечными навыками, подходящими именно вашей компании, бывает
достаточно трудно, долго и дорого. А мы в Цифровой Академии считаем, что это и не
нужно!
Точечное дообучение кандидатов на действительных задачах, которые им придется
решать в компании — это современный и более чем актуальный вариант найма в ИТ.
Так, в случае с нашим клиентом 14 мотивированных талантливых специалистов,
успешно завершивших курс по Apache Spark, получили офферы. Причем они начали
вливаться в процессы еще на этапе обучения и узнали многое о компании, задачах и
инструментах, тем самым сократив время, требуемое на адаптацию. И потребовался
на это всего месяц!