Привет, Хабр! На связи отдел аналитики данных X5 Tech.
По мере развития технологий больших данных в сфере Data Science продолжает оформляться всё большее количество направлений, а уже существующие становятся более обособленными.
Тем не менее, до сих пор многие с трудом могут ответить на вопрос — чем занимается дата-аналитик. В одной компании в его сферу обязанностей входит построение отчётов для бизнеса, в другой — дизайн и проведение АБ-экспериментов, а в третьей — подготовка витрин данных.
Поэтому вопрос "Так кто же такой этот ваш дата-аналитик?" мы слышим часто и хотим сегодня об этом поговорить.
Цель данной статьи — ответить на вопросы:
Что ожидается от разных ролей в Data Science?
Чем занимаются дата-аналитики в X5?
Какие навыки им для этого нужны?
Как мы таких специалистов находим?
Что ожидается от разных ролей в Data Science?
Для того чтобы разобраться в этом вопросе, обратимся к известной условной концепции деления ролей в DS:
MLE — Machine Learning Engineer, специалист по работе с моделями машинного обучения. От него, как правило, ожидается:
хорошее знание математического аппарата;
знание лучших практик в области задачи (domain knowledge);
умение выбрать, настроить и обучить подходящую к конкретной задаче модель.
Помимо разработки, от MLE специалистов ждут:
умения вывести предложенное решение в продуктивную среду;
обеспечить поддержку этого решения на каком-то уровне, с определённым SLA.
DE — Data Engineer, специалист по внедрению продуктивных аналитических решений. От таких специалистов ожидается умение обеспечить работу технических компонентов продукта (регулярный расчёт продуктовых витрин, корректный обмен артефактами между компонентами системы, логирование, мониторинг и т.д.), которая будет бесперебойной, оптимальной и укладываться в SLA.
DA — Data Analyst, специалист по анализу данных. Иными словами, это специалист, который обладает следующими группами навыков:
Теоретические: высшая математика, теория вероятности, статистика, а также смежные, например, алгоритмы и структуры данных;
Технические: знание языка программирования на уровне работы с данными, умение работать с различными СУБД, а также различные специфичные для продукта инструменты;
Коммуникативные: умение эффективно взаимодействовать с бизнес-заказчиками. С одной стороны, понимать, чего хочет заказчик, и переводить это знание в постановку аналитической задачи. С другой, доносить свои мысли и идеи до понятного языка заказчику. Помимо бизнес-заказчика, DA должен уметь налаживать своевременную и понятную коммуникацию со своими коллегами.
Но это всё общие слова. Чтобы заземлить эти критерии, давайте посмотрим, с какими задачами приходится сталкиваться дата-аналитику в X5.
Задачи DA в X5 Tech
Если попытаться структурировать деятельность дата-аналитиков в X5, то можно выделить 4 области.
1. Продуктовая аналитика
Эта область особенно актуальна на этапе зарождения продукта, когда в продукте ещё отсутствует сложившаяся практика работы с данными, а решения принимаются на уровне бизнес-экспертизы. Эти задачи включают:
Согласование основных метрик продукта с бизнес-заказчиком. Необходимо обговорить все второстепенные и прокси-метрики, на которые в дальнейшем будет ориентироваться продукт при приоритизации задач и оценке эффективности решений.
Дизайн АБ-тестирования продуктовых решений, доработок, изменений.
Формирование системы мониторинга и отслеживание эффективности работы продукта.
Разведочный анализ данных.
Перевод бизнес-идей в аналитические задачи, работа с ТЗ для моделей продукта.
Помощь менеджерам в подборе подходящих компетенций для решения бизнес-задачи продукта.
2. Машинное обучение
Исходя из специфики команды и степени зрелости проекта бывает так, что специально выделенной роли ML нет или она вообще не планировалась, но необходимость применения машинного обучения присутствует. В этом случае аналитик данных может самостоятельно использовать модели машинного обучения для решения своих задач. В силу облегчённых требований к решению, модель может быть как "из коробки", так и с небольшим тюнингом. Таким образом, аналитику необходимо построить пайплайн, где требуется привести данные в нужный для модели вид, и с её помощью получить конечный результат. Модели, используемые в продуктовой среде, должны быть исследованы на устойчивость, а также для них должны быть выработаны правила-градусники, условия применимости и т.п., чем также занимаются аналитики.
3. Дата инженерия
Периодически каждому дата-аналитику встречаются задачи, где необходимо добыть данные, преобразовать их, обогатить из других источников. Поэтому мы ждём от своих сотрудников, что они могут самостоятельно подготовить продуктовую витрину для своих исследований, гипотез, моделей. В этом случае используется традиционный арсенал инструментов аналитика Python/SQL (или PySpark, мы писали об одном способе организации проекта на PySpark).
4. Продуктивный код
Если дата-аналитик написал модель (или свою разработку, учитывающую специфику проекта), решение которой соответствует требованиям бизнеса по качеству и времени работы, то он может написать скрипт для Airflow (или другого планировщика) и поставить задачу на расписание. В этом случае мы ожидаем, что решение качественное, прошло ревью коллег, должным образом протестировано и поддерживаемо. Если необходимо развернуть свой сервис в kubernetes, то надо понимать, как он (kubernetes) работает и что нужно сделать для развёртывания этого сервиса.
Таким образом, деятельность аналитиков в X5 может быть достаточно обширна. Это подводит дата-аналитика к возможности как углубляться в экспертизу в направлении DATA/ML-инженерии, так и развиваться в сторону бизнес-экспертизы и менеджмента.
Матрица компетенций и должностные обязанности
Представление требуемых навыков в зависимости от уровня сотрудника часто называют Матрицей компетенций. В дальнейшем мы будем использовать именно этот термин.
Разобравшись в общем понимании компетенций и задач дата-аналитика, структурируем это понимание в виде матрицы компетенций, но прежде чем переходить к самой матрице, давайте разберёмся, чем она может быть полезна:
В X5 большая часть DA работают в продуктовых командах, у каждой команды есть свой уникальный бэклог задач (есть и исключения, например команда Адхок-аналитики, в которой, помимо вышесказанных задач, особое место занимают: исследование методологий АБ-тестирования, помощь в подготовке, проведении и валидации экспериментов).
Если владелец продукта, изучив принятые в компании должностные обязанности, определяет потребность в DA, то далее согласуется уровень Junior/Middle/Senior аналитика. Чтобы минимизировать вероятность ошибки при выборе уровня аналитика, требуется понятная и детальная матрица должностных обязанностей.
Прозрачная система грейдов полезна и для самих сотрудников. Понимание направлений, в которых нужно наращивать свои навыки, способствует более продуктивному росту сотрудников внутри компании. Ведь проще двигаться в известном направлении, чем наугад.
Наконец, приведём компетенции, которые соответствуют потребностям продуктов в X5. Для удобства развернём матрицу в виде списка по уровням Junior/Middle/Senior.
Формат текста будет соответствовать уровням, при этом каждый следующий уровень включает в себя компетенции предыдущего.
Матрица компетенций
Стаж
Профильное образование / наличие сертификатов по специализациям анализа данных и машинного обучения;
Опыт работы в области data science от двух лет;
Опыт работы в области data science от трёх лет.
Менеджмент
Менторство/постановка задач до двух человек проводит и проходит код-ревью;
Руководство командой от трёх человек;
Формирует стандарты разработки и анализа данных.
Python
Python (PEP 8);
Способен писать код по заданным стандартам качества;
Знание стандартных алгоритмов и структур данных;
Сложность алгоритмов;
Хорошее владение библиотеками для анализа данных, численных методов;
Умение писать оптимальный по времени и памяти код;
Дебаг и оптимизация кода;
Разработка через тестирование;
Свободное владение ООП;
Опыт проектирования архитектуры проектов;
Проектирование расписания процессов (airflow, cron);
Передача проекта в production;
Опыт работы с CI/CD.
Работа с данными
SQL на базовом уровне (join, group by);
Опыт работы с реляционными БД;
Опыт работы на PySpark (broadcast join и т.д., Spark UI, оконные функции);
Имеет недоверие к данным, проверяет их на корректность перед использованием;
Может реализовать любой запрос;
Может определить неоптимальный запрос;
Знание преимуществ и недостатков различных типов баз данных;
Опыт разработки ETL пайплайнов;
Может разработать структуры БД;
Умение работать с планом запроса;
Транзакции/ACID/Индексы.
Математика
Знаком с базовой теорией вероятности и статистикой;
Знаком с понятиями АБ-тестирования и проверкой гипотез;
Может решать простые задачи по теории вероятности, статистике, логике;
Знание классических методов ML;
Знание полного цикла проведения АБ теста.
Продвинутое владение аппаратом проверки гипотез:
множественная проверка гипотез;
параметрические/непараметрические методы;
бутстреп.
Изучение и реализация продвинутых моделей ML:
нейронные сети/PGM/VBI, RL и прочее;
оптимизаторы;
байесовские модели.
Знает методы снижения дисперсии в экспериментах;
Обладает интуицией по возникновению шумов в данных и определению независимых групп;
Анализ эффектов без контрольных и тестовых групп;
Написание статей, выступление на конференциях.
Продуктовая аналитика
Работа с хорошо описанными задачами;
Построение аналитических отчётов с заданными требованиями;
Презентация аналитических изысканий, проверенных гипотез и т.д.
Погружение в метрики продукта:
понимание основных метрик продукта и их особенностей;
перевод бизнес задач в DS/DA/DE и декомпозиция комплексных бизнес-задач;
построение прокси-метрик продукта.
Формирует новые направления для исследований;
Может определить слабые/сильные стороны бизнес-логики продукта;
Консультирует и работает в плотную с продактом или бизнес-заказчиком;
Декомпозиция бизнес-целей в истории для анализа, оценка сроков решения задач;
Умение поставить задачу для Middle.
Стек
Python;
SQL;
визуализация данных (matplotlib, seaborn, plotly / BI - инструмента);
Git;
PyTest;
Spark;
Grafana, Airflow;
Docker;
Kubernetes (K8S).
В долгосрочной перспективе некоторые технические требования могут устареть (возможно, уже устарели на момент прочтения данной статьи), поэтому матрица должна своевременно актуализироваться отделом аналитики.
Компетенции уровня Senior весьма высокие и, зачастую, при достижении этих уровней аналитик углубляется в развитие данной компетенции и может перейти в MLE или стать лидом в аналитике.
Помимо набора компетенций, разным грейдам соответствуют разные зоны ответственности. Распределение таких зон в отделе аналитики X5 представлено ниже:
Данная схема используется для определения должностных обязанностей. Отметим, что на практике может случиться так, что Senior выполняет задачи Middle/Junior, если в команде ещё нет этих ролей. А вот если Junior занимается задачами Senior, то это значит, что состав команды определён неверно.
В X5 Tech мы стараемся непрерывно повышать компетенции дата-аналитиков.
Организуются и финансируются внутренние и внешние курсы, есть менторство, код-ревью, внутренние встречи для обмена опытом и многое другое.
Связь с наймом
Рассказав о том, какими компетенциями должен обладать дата-аналитик на каждом грейде, что от него будут ждать и какая у него будет зона ответственности, расскажем, как такого аналитика найти.
И в начале, хотелось бы привести список проблем найма, с которым столкнулись мы на своей практике.
Компетентность собеседующего. Чтобы определить, подходит ли аналитик для решения задач конкретного продукта, нужно протестировать его по всем направлениям матрицы и понять его пригодность для решения задач конкретного продукта. Человек, принимающий решение в одиночку, должен быть специалистом широкого профиля, а также обладать хорошим навыком проведения собеседований. Обучение такого специалиста может занимать много времени, а само время такого специалиста будет стоить достаточно дорого.
Смещение на собеседующего. В зависимости от продукта и предпочтений аналитика одни больше занимаются моделированием, другие — настройкой ETL-процессов, третьи предпочитают тестировать гипотезы и обсуждать их с бизнесом и т.д. В итоге при "вольном" формате собеседований можем получить ситуацию, когда кандидат был отвергнут из-за недостаточного понимания любимого раздела собеседующего.
Масштабируемость. Исходя из информации первого пункта, становится понятным, что компетентных в проведении собеседования "от А до Я" сотрудников будет немного. Эта малочисленность приводит к проблемам, когда потребности продуктов резко возрастают и нужно проводить волны найма, или необходимо обработать большое количество кандидатов на стажировку/обучение.
Затраты. Продолжение предыдущей проблемы — при малом количестве собеседующих нагрузка на них может существенно возрастать в периоды большой потребности. В таком случае, процессы собеседований будут забирать время у других критически важных задач продуктов, в которых эти специалисты работают. Плюс к этому, не очень хочется загружать специалиста уровня Senior для проведения десятка собеседований на начальную позицию.
Подводя итог вышесказанному, есть две основные задачи, которые нужно решить:
обучить сотрудников проведению собеседований,
сделать критерии найма обобщёнными, универсальными.
Давайте начнём с конца. Чтобы критерии найма были универсальными, они должны опираться на какой-то эталон. В качестве этого эталона выступает как раз матрица компетенций. С помощью группы энтузиастов на основе матрицы компетенций был сформирован банк задач и вопросов, а также система оценки каждой области. Это позволяет центру принятия решений получить более широкую, объективную и полную информацию для оценки кандидата.
Теперь давайте разберёмся со сложностью оценки тех или иных критериев. Глобально критерии оценивания можно разделить на две области:
1. Базовые технические навыки, мышление.
2. Опыт, креативность, soft-skills.
Для оценки первой части не требуется глубокого знания процесса проведения собеседований, и они поддаются автоматизации. При наличии банка задач и вопросов, а также возможных вариантов ответов, к такой оценке можно привлекать людей без длительного процесса подготовки. Главным критерием является наличие соответствующих технических навыков у самих собеседующих. При этом первый этап может значительно сузить воронку путём отсева людей, недотягивающих по необходимым навыкам для конкретной позиции. Например, это может быть Python/SQL или Python/математика и т.д.
Второй этап систематизировать сложнее, поэтому на него потребуется привлечение опытного специалиста. Интервьюер может задавать вопросы или обсуждать кейсы, для которых нет единственно правильного ответа. Здесь, прежде всего, хочется понять, как думает кандидат, как отразился опыт на его интуиции, что он/она будет предпринимать, оказавшись в тупике и т.п.
Итак, процесс собеседований дата-аналитиков в X5 на момент написания статьи выглядит следующим образом:
Проведение первого технического интервью. На интервью собеседующий заполняет анкету и ставит оценки по двум-трём разделам из Python/SQL/статистика/soft-skills.
Если суммарная оценка кандидата выше порогового значения, то он отправляется на второй этап.
На втором этапе оцениваются оставшиеся после первого этапа разделы. Обычно это ML, статистика и АБ-тестирование и другие навыки, которые могут пригодиться в продуктах-соискателях. Результатом собеседования также является заполненная анкета с баллами.
После второго этапа начальник отдела аналитики принимает решение о назначении интервью с менеджерами команд(ы).
При положительном отзыве владельца продукта высылается оффер, и при взаимном согласии кандидат становится нашим сотрудником.
Посмотрим, как такая схема собеседований и систематизация критериев помогают решить поставленные выше вопросы:
Компетентность собеседующего. Для оценки специалистов высоких грейдов по-прежнему требуются хорошо обученные сотрудники. Но для оценки позиций типа Junior при наличии хорошо описанных критериев можно привлекать специалистов уровня Middle или продвинутых Junior. И для тех, и для других, собеседования это хороший опыт и способ держать себя в интеллектуальном тонусе.
Смещение на собеседующего. Требование к выставлению оценок по всем компетенциям позволяет убрать смещение на какую-либо конкретную область. Если кандидат является экспертом в каком-то из разделов, то это учитывается при принятии решения о его найме даже при низких баллах в каких-то не ключевых для продукта разделах.
Масштабируемость. На этапе технического интервью при наличии чётких критериев оценки и банка задач можно привлекать больше сотрудников, а время собеседующих занимать более равномерно.
Затраты. Затраты на подготовку специалистов и "стоимость" интервью также существенно снижаются при наличии отлаженной системы найма.
Заключение
Итак, подведём итог вышесказанному и ответим на основной вопрос статьи.
Дата-аналитик в X5 Tech это специалист, который:
Обладает хорошим математическим аппаратом.
Умеет работать с различными источниками данных и писать хороший код на Python/SQL.
Выстраивает коммуникацию с бизнесом и решает недетерминированные задачи.
Может построить пайплайн с использованием моделей машинного обучения.
Главным образом, дата-аналитик — это специалист, который на неструктурированный запрос бизнеса может предоставить обоснованный ответ на основе данных и достаточно хорошее рабочее решение (по сути, решение 20-80).
Но напомним, что здесь идёт речь про DA именно в X5 Tech, в других компаниях от дата-аналитика могут ожидать другого.
Помимо описания деятельности аналитиков мы постарались донести, что систематизация, актуализация и открытость требований к дата-аналитикам может как помочь в поиске подходящих сотрудников, так и способствовать росту уже имеющихся в компании специалистов.
Надеемся, статья была полезна, и будем рады дельным комментариям и замечаниям!
Над статьёй работали Антон Денисов, Никита Сурков, Юрий Исаков.