Чем занимается дата-инженер X5 Retail Group?

Рассказ о профессии дата-инженера: автоматизация, организация хранилища данных и лайфхаки по борьбе с рутиной

Максим Керемет работает в Х5 Retail Group: он обрабатывает данные для дата-сайентистов и аналитиков. По мнению Максима, дата-инженер — одна из самых сконцентрированных на программировании профессий, связанных с данными.

Максим Керемет, 28 лет
Образование: РЭУ им. Г. В. Плеханова
Профессия: дата-инженер
Должность: старший инженер систем больших данных
Компания: Х5 Retail Group
Отдел: CVM (customer value management)
В SkillFactory: делает вебинары по аналитике и Data Science, ментор на программе Data Engineer
Стек: Python, SQL, Airflow, Hive, Spark, Docker, MLFlow

Кто такой дата-инженер?

Профессии, которые начинаются со слова data, подразумевают работу с данными, машинным обучением, искусственным интеллектом. Их главная цель — достать из данных знания, как частный случай — предсказания (это задачи машинного обучения), чтобы потом на их основе построить экспериментальные модели, которые будут помогать бизнесу.

Дата-инженер занимается первичной работой с данными: собирает, очищает от ошибок и повторов, организует, выстраивает весь процесс их получения и хранения (пайплайн). Часто его заказчик внутри компании — дата-сайентист. Дата-инженер передает ему подготовленные данные, а дата-сайентист использует их для построения моделей.

У такого специалиста есть четкое понимание того, как писать структурированный, чистый и масштабируемый код. В объемном коде я могу навести порядок, написав сервис (программу): по сути, создать папку, в которой лежат файлы, логически разделенные на блоки (рабочие и сопутствующие скрипты, файлы с конфигурациями, версии моделей).

Иногда в обязанности дата-инженера входит строить архитектуру хранилищ данных — это базы данных с таблицами, в которых данные разбиты по смыслу. Базы могут быть, например, реляционными — где данные четко связаны друг с другом; тогда для их управления нужен SQL. Бывают распределенные базы — в этом случае данные находятся на разных компьютерах и извлекать их можно с помощью фреймворка Spark.

Нужно хорошо владеть инструментами автоматизации. Часто скрипты нужно запускать в определенной последовательности или не запускать следующий, пока один не отработает. Эти задачи выполняют программы-шедуллеры (от англ. schedule — расписание), например Apache Airflow: он дергает скрипты по расписанию и помогает автоматизировать последовательность действий.

Умение применять модели на генеральной совокупности хоть и не часто требуется в компаниях, но будет плюсом. Дата-сайентисты проверяют гипотезы на части пользователей, и пишут код в исследовательском стиле, что не задумываясь о производительности и масштабировании. Очень часто такой код не совпадает с тем, как он будет работать на всех клиентах. Но бизнесу нужно ежедневно обновлять предсказания по бОльшему количеству пользователей нежели чем выборка с которой работает дата-сайентист, поэтому дата-инженеру обязательно надо уметь масштабировать результаты этих экспериментов.

Кроме того, дата-инженер может провести простую аналитику данных, например построить дашборд (информационная панель, которая показывает краткие сведения о ключевых показателях эффективности) в Power BI или Tableau или наладить запуск какого-то скрипта в определенном регламенте, например ежедневный расчет к 9 утра.

Как я попал в профессию

У меня непрофильное образование. Обычно дата-сайентисты и дата-инженеры приходят из технических специальностей или из математических вузов. Я учился в РЭУ им. Плеханова по направлению «Экономика, финансы и кредит», а потом закончил магистратуру в Швеции по менеджменту в сфере интеллектуальной собственности. После этого стандартно, как и многие выпускники финансовых вузов, вышел в большую четверку (четыре крупных консалтинговых компании: PricewaterhouseCoopers, Ernst and Young, Deloitte и KPMG) и быстро понял, что это не мое.

Пошел работать в Adidas стандартным аналитиком, который в Excel делает отчеты. В какой-то момент мне надоело, что все периодически лагает и падает, поэтому я начал искать инструменты и наткнулся на Python, с помощью которого можно автоматизировать процедуры. Отчет, который я делал руками час-полтора, если ничего не упадет, с помощью Python собирался не больше 15 минут. Я предложил начальнику автоматизировать другие процессы, но он отказал. Тогда я понял, что нужно искать другое место.

Курс

Python для анализа данных

Python требуется в 84% вакансиях при устройстве на должность аналитика и почти во всех вакансиях, связанных с Data Science.

Что дает прохождение курса?

Я подавался на все вакансии начального уровня, в которых нужны Python, автоматизация, аналитика. Начинал с позиции джуниор-аналитика в Mail.ru, потом в первый раз устроился в Х5 Python-разработчиком.

GitHub и тестовое задание в одну компанию. Мне дали лог поездок беспилотного автомобиля в разных режимах (с водителем и без). Нужно было разработать сервис, который бы парсил (читал, извлекал, обрабатывал данные) лог, считал километраж режимов поездки.

Затем в отделе продуктовой аналитики в ВКонтакте я впервые поработал как дата-инженер. Я собирал продуктовые данные: таблицы, в которых уже агрегированы данные, метрики, показатели статистики.

Помимо этого отдел занимается построением дашбордов, исследованиями пользователей, так что в моей работе были и элементы продуктовой аналитики. Там было много ad hoc (ситуативный способ решения, который подходит только для одной задачи и не может быть универсальным) аналитики, которую нужно делать каждый день, при этом ее объемы никогда не уменьшались.

Из-за этого я ушел из ВК и вернулся в Х5 на другой проект.

Чем я занимаюсь сейчас

Я работаю в команде CVM (customer value management), которая занимается лояльностью в «Пятерочке». Мы настраиваем коммуникацию с клиентом. Например, на чеках, которые вы получаете на кассе, есть предложения о том, что вам дадут скидку, если вы придете в магазин на следующей неделе и купите товаров на определенную сумму. Иногда может прилететь смс: «Сегодня скидка на сметану, приходи к нам».

Чеки — это сырые источники, из которых можно сформировать признаки, описывающие покупательский паттерн человека. Они описывают поведение человека в магазине: например, сколько он потратил в той или иной категории, когда последний раз был в магазине, сколько раз был в магазине за последнюю неделю. На основе этих признаков строятся модели, которые предсказывают поведение людей с картой лояльности. Чтобы модели работали не просто в исследовательских целях, нужно проскорить (оценить) миллионы людей, которые ходили к нам в течение года.

Во-первых, я строю хранилище этих признаков. То есть занимаюсь процессами предобработки и очистки данных, обновляю и пересчитываю их, чтобы пользователи инструмента или данных — аналитики или дата-сайентисты — могли работать с ними без проблем. В дальнейшем накопленные признаки пригодятся для новых моделей и бизнес-идей, а ребятам не придется работать с сырыми данными.

Во-вторых, я вывожу модели в продакшн. Например, дата-сайентист делает модель следующего визита, которая предсказывает, придет ли к нам человек, или другие модели, которые предсказывают, что он купит, какую категорию ему предложить. На одной выборке из 100–200 тысяч человек ее строят, а потом на другой выборке проверяют. Если масштабировать успешное решение на весь массив — 30–40 миллионов активных пользователей, — то можно увеличить прибыль компании за счет коммуникации с гостями (SMS с выгодным предложением), которые придут и купят товар.

Я забираю эту модель у дата-сайентиста, пишу улучшенный код, который будет выдавать такие же результаты, и масштабирую на большее количество признаков. Если все слаженно работает, нужно оптимизировать процесс: чтобы не скорить миллионы людей последовательно, можно разбить всё количество на равные части, параллельно их оценить и результаты оформить в компактную таблицу. Это и быстрее, и удобнее, и ресурсов тратится меньше.

Так выглядит мое рабочее место

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

Как войти в профессию

Я начинал с курсов по Python, потом меня заинтересовали алгоритмические задачи. Их не всегда можно напрямую применить в бизнес-среде, но они хорошо развивают и работу с базовыми структурами языка.

Если вы работаете аналитиком или выполняете рутинные задачи в Excel и хотите автоматизировать их, то стать дата-инженером — вполне закономерный вариант. Между автоматизацией рутины и сбором данных не большая разница. Это разные сферы, но автоматизация позволяет сокращать объемы ручной работы, которые есть и там, и там.

Курс

Data Engineering

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

Узнать подробности

Как я превратил рутину в творчество

Мой рабочий день ничем не отличается от классического дня программиста: посещаю рабочие встречи и пишу код. Это довольно монотонное занятие: ты рефакторишь (рефакторинг — упрощение исходного кода, чтобы он стал понятнее), думаешь, пишешь документацию, описываешь код, все время сидишь перед компьютером.

Сейчас я использую технику Помодоро: не отрываюсь от задачи на протяжении получаса, а потом делаю перерыв и занимаюсь домашними или организационными делами. Несмотря на то что это довольно рутинная вещь, с такой организацией труда я как будто играю в игру, прокачиваю своего героя в упорядочении хаоса своей жизни.

Техника Помодоро метод тайм-менеджмента для увеличения продуктивности и концентрации. Время делится на отрезки 25 минут непрерывной работы и 5 минут отдыха. Для работы нужно составить список приоритетных задач и последовательно, не отвлекаясь, их выполнять за время «помидорки». Если задача объемная, следует разбить ее на подзадачи и выполнять все постепенно. Через четыре таких сета нужно сделать долгий перерыв на 15–20 минут. Традиционно отрезки отслеживают с помощью кухонного таймера в виде помидора, но сейчас есть и приложения.

В прежней сфере рутина меня грузила. Отчеты ради отчетов — это совсем не то, чем я хотел заниматься. А программирование меня захватило. Для себя я нашел объяснение: в детстве я много играл в Lego, а программирование — по сути, синтаксическое Lego. Ты пишешь блоки кода, сочетаешь их, ищешь ошибки, исправляешь их, и вдруг код и бизнес-логика работают. В конце проекта остается не только продукт, но и приятное ощущение от того, что ты прошел этот местами тернистый, но увлекательный путь.

Совет новичку

Приведу аналогию со спортом. Я занимаюсь джиу-джитсу, и мой тренер всегда говорит: «Просто появляйтесь на тренировке». Чтобы чему-то научиться, нужно время. Нельзя срезать путь, быстрее набраться опыта, потому что опыт — это количество времени, проведенное за попытками решить те или иные задачи, простые или сложные и составные. Все, что нужно, — просто методично проходить курсы. Если что-то не получается — отложить, перейти к следующему заданию, курсу, почитать, погуглить, спросить у ментора фидбек.

Программирование — в принципе про систематическое совершение огромного количества ошибок и их решение. Чем дальше, тем ошибок меньше, они становятся более явными. Если ты ступил на эту дорогу, то нужны только время и терпение.

Блог SkillFactory
Добавить комментарий