Да, в этих ваших интернетах есть много материалов о том кто такой Data Engineer (DE), в том числе и на самом Хабре. Но мне самому захотелось об этом рассказать. Опыт, хоть и небольшой, в этой сфере у меня есть (Сейчас Data Engineer в Сбер Образовании). 

ЭТА СТАТЬЯ НЕ ЯВЛЯЕТСЯ СУПЕР ТЕХНИЧЕСКОЙ, В КОТОРОЙ СТРОГО ВСЕ ПО НАУЧНОМУ. ТУТ Я ОБЪЯСНЯЮ ТЕМУ ПРОСТЫМ ЯЗЫКОМ (по другому не сумею)

Кто он?

Для того, чтобы объяснить кто такой дата-инженер я нарисовал картинку ниже

Что там нарисовано:

Есть разные источники (разные БД, сайты, файлики и др.), дата инженер собирает эти все данные и кладет в БД, дальше уже мастера своего дела строят из этих данных графики и ИИ. 

Может показаться, что у дата инженера в этой цепочке самая легкая задача, возможно это и так, но давайте рассмотрим более конкретно, что именно делает дата инженер

ETL

ETL (Extract, Transform, Load) – это процесс переноса данных из разных источников в одно место, после чего эти данные преобразуются и сохраняются в удобном для анализа или использования виде. Стрелочка «Делает Data engineer» на рисунке выше и являются этим самым ETL

То есть нам (как дата инженеру) нужно взять данные из разных источников (базы данных, файлы, веб-сервисы/API), преобразовать их и сложить все в удобном виде, в правильном формате, «чистыми» в нашу базу данных из которой этими данными уже смогут пользоваться другие специалисты. Ну и, конечно, чтобы это все потом работало без нашего участия

Пример: взять данные по api, распарсить js,  убрать не нужную нам инфу (например клиентов у которых какой-то параметр пустой), а дальше из получившейся таблице и еще нескольких других с помощью sql создать витрину (о них ниже), чтобы потом какой-нибудь дяденька в костюме смог посмотреть на график, который сделан с помощью этой витрины, и принять какое-то важное решение

Про витрины

Конечным продуктом дата инженера обычно являются витрины - это табличка в которой нужные, обработанные, преобразованные данные из разных источник. Витрины для DE это как сайт для фронтенд разработчика. 

Кто их должен строить - писать sql скрипт? Есть 3 варианта 

  • Дата инженер сам узнает что надо и сам пишет скрипт

  • Дата анатилик передает готовый sql дата инженеру

  • Дата аналитик говорит, что нужно сделать (возможно в формате псевдокода), а дата инженер это делает 

В разных местах, возможны разные варианты, поэтому нужно быть готовым ко всему 

Другие задачи

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

  • Данные мы ведь кладем в БД, а значит там все должно быть хорошо, порядок, правильные схемы, отсутствие мусора, производительность и все такое, часто за этим следит именно DE

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

  • Не все в этом мире идеально и даже наши ETL потоки, поэтому это тоже нужно отслеживать и бежать их чинить в случаи ошибки

  • Отслеживать качество и чистоту данных. Если DE сказали взять данные от куда-то и положить в БД, а потом оказалось, что данные мусор, то вина DE в этом тоже есть

  • И, конечно, еще куча остальных задач  - созваны, чайок с печененками …

Что должен знать Data Engineer

Из текста выше вы, возможно, уже смогли понять какие навыки нужны дата инженеру, но я все таки вынес это в отдельный блок

ОБЯЗАТЕЛЬНО:

  • Базы данных и SQL. Дата инженер работает с данными и поэтому он должен понимать, что такое БД, и уметь доставать от туда нужную информацию с помощью sql. И не просто уметь делать select, но и делать более сложные штуки - where, join, оконные функции, процедуры и другое

  • Python или другой язык программирования. Чаще всего основным языком DE является python, но в некоторых местах пользуются также и другими языками - Java или Scala. Но если вы только начинаете, то достаточно будет знать только python. Уровень, по крайне мере на начальных позициях, не требуется слишком крутой. Знать какие-то основы, api, библиотеки для работы с данными. 

ВСТРЕЧАЕТСЯ РЕЖЕ ИЛИ У ПРОДВИНУТЫХ:

  • Более крутое владение sql для написания более сложных запросов и лучше знать язык программирования, чтобы писать чуть более сложные шутки

  • Знать не только какую-то общую инфу про БД, но и понимать чем одна база данных отличается от другой и где какая нужна

  • Биг дата - Hadoop, Spark и все такое

  • Брокеры сообщений, например Kafka

  • Bi-системы - вряд ли DE будет строить дашборды, но на начальном этапе все возможно

  • Сети, инфраструктура …

  • Понимание бизнеса - ведь крутой программист не просто закрывает таски, он решает задачи бизнеса 

Необходимо еще знать кукую-то общую инфу для большинства программистов - Git, консоль 

Ну а вообще просто открываете какой-нибудь сайт с вакансиями и смотрите требования

Плюсы и минусы

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

ПЛЮСЫ:

  • Бабки. Не миллионы, конечно, но среди всех it специальностей, люди, которые работают с данными находится в первой половине самых высокооплачиваемых айтишников 

  • Легко прийти, легко уйти. Главными умениями дата инженера является знание python и sql, эти знания нужно и во многих других областях, поэтому не очень сложно как прийти сюда из другой области, так и наоборот уйти в другое место если надоест 

МИНУСЫ

  • Может быть скучно. Другие программисты делают сайты, приложения, ИИ и другие штуки, которые можно пощупать или сказать вау, а результат твоей работы - это табличка в базе данных. Для тех кому хочется видеть результат своей работы в более явном виде, профессия DE может показаться скучной

  • В названии вакансии одно, а по факту другое. Возможно это есть во всех в сферах, но для инженера данных это точно актуально. «Ты ведь с данными работаешь, а значит за все, что так или иначе свазано с данными будешь отвечать», а тут о много чем может быть речь и про обязанности дата саентиста и дата аналитика, и про создать отчет в икселе или построй сам для себя инфраструктуру 

  • Не всегда есть удаленка. Работать удаленно для человека из it - это что-то обыденное, но у тех кто работает с данными не всегда есть такая возможность. БЕЗОПАСНОСТЬ 

Кратко

Какое нужно образование? - У меня нет профильного образования, но лучше, наверное, чтобы было какое-нибудь связанное с программированием 

Карьерный рост? - CDO можете стать. Это главный по данным в компании

В каких компаниях нужны инженеры данных? - Нужны везде

Полезные ссылки

  • Cтатья на хабре с полезными ссылками

  • Библиотека ссылок по инженерии информационных систем

  • Куча курсов (в основном бесплатно) по python и sql есть на Stepik

Если вдруг понравилась статья

Если вам понравилась статья, то можете подписать на мой телеграм канал https://t.me/datamisha там я о своей работе дата инженера пишу

Комментарии (5)


  1. paguyc
    22.03.2024 07:02

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


    1. datamisha Автор
      22.03.2024 07:02

      В теории, под обязанности дата инженера можно вписать практически все, что угодно)


      1. paguyc
        22.03.2024 07:02

        эту фразу можно работодателю передать.


  1. somagic
    22.03.2024 07:02

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


  1. ArkadiyShuvaev
    22.03.2024 07:02

    но в некоторых местах пользуются также и другими языками - Java или Scala

    А почему именно они а, не скажем, C#? Какой-то специфический софт написан на Java?