Как стать автором
Обновить
94.97
Яндекс Практикум
Помогаем людям расти

В закладки: что нужно знать и уметь дата-инженеру

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.3K

Хабр, привет! Меня зовут Саша Сайков, я дата-инженер в PepsiCo и старший ревьюер на курсах «Инженер данных» и «Инженер машинного обучения» в Яндекс Практикуме. Раньше работал в американском стартапе, IT-интеграторе «Синимекс» и как аутстафф-сотрудник в Сбере. В этом материале я расскажу, что, на мой взгляд, должен знать и уметь дата-инженер — и с помощью каких книг, статей и курсов всему этому можно научиться. Поехали!

Дисклеймер

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

Также с погружением в инженерию данных хорошо помогают нейросети. Я знаю про их недостатки, но, по моим наблюдениям, они быстро прогрессируют и, например, бесплатные DeepSeek и Perplexity точно хорошо работают с базовыми запросами. Можно просить объяснить сложные темы — скорее всего, чат-бот справится не хуже случайного лектора с YouTube.

Общие материалы

Обычно глубокое погружение в любое IT-направление начинают с computer science. Это неплохо, но это необъятная наука, на изучение которой можно потратить целую вечность. Поэтому я бы советовал ограничиться несколькими книгами.

→ Fundamentals of Data Engineering, Джо Рейс и Мэтт Хаусли. Отличная книга, которую можно прочитать вообще любому человеку. Простым языком описывает, что такое инженерия данных, какой она бывает и куда движется.

→ «Высоконагруженные приложения», Мартин Клеппман. Более продвинутая книга, которую из-за иллюстрации на обложке называют «кабанчиком». Сразу скажу, книга тяжёлая. Но её стоит прочитать, причём несколько раз. Первый — когда вы только начинаете путь в IT (вы мало что поймёте). Второй — через два-три года (поймёте половину). И третий — где-то через пять лет (тут вы наконец поймёте всё и осознаете, какие же крутые вещи описаны в этой книге). Лучше всего, если вы сможете читать «кабанчика» с кем-то, например в книжном IT-клубе, потому что у людей разный опыт — если вам что-то покажется бесполезным, то пригодится вашему товарищу, а вы узнаете новую фишку.

→ «Грокаем алгоритмы», Адитья Бхаргава. Хорошая книжка, которая помогает понять, что такое алгоритмы, какими они бывают и зачем они нужны. Любой код, который мы пишем, выполняется компьютером, и чем меньше действий он совершает при этом, тем лучше, — книга рассказывает об этом простым языком и на пальцах, что помогает не демотивироваться в начале пути.

SQL

Первый и самый важный навык, который есть у инженера данных, это знание SQL. SQL можно изучать бесконечно, так как он постоянно совершенствуется. Поначалу язык кажется очень простым, потом — очень тяжёлым, а затем постепенно становится «нормальным». Через эти ступени прошли все инженеры данных, поэтому не пугайтесь, когда станет сложно.

→ «Изучаем SQL», Бейли Линн. Староватая, но всё же полезная книга, которая объясняет, зачем нужны базы данных и как с ними работать, знакомит с базовым синтаксисом. В общем, super entry level в мире SQL

«Интерактивный тренажёр по SQL». Как освоитесь с базой, надо будет закрепить знания на задачах. Их в интернете миллион, решать можно любые. Лично мне нравится тренажёр на «Степике» — много хороших задач и полезные объяснения.

LeetCode. Самый популярный ресурс с задачами. Единственный минус — на бесплатном уровне на SQL их не так много. Захотите решать задачки, оплатите годовую подписку (можно в складчину с единомышленниками), не пожалеете.

ChatGPT, DeepSeek, Алиса. Напомню про возможности нейросетей — вы можете попросить ИИ-чаты потренировать вас на задачах, начиная с простых группировок и JOIN’ов и постепенно переходя к чему-то посложнее.

«SQL для работы с данными и аналитики». Полноценный курс по SQL с упором на анализ данных.

Следующий уровень — это изучение перформанс-SQL, то есть переход с вопроса «как сделать, чтобы запрос выполнялся» на вопрос «как сделать, чтобы запрос выполнялся быстрее».

У разных баз данных свои методики оптимизации, но я бы в любом случае начал изучение с PostgreSQL и MSSQL, этого может быть достаточно. На этом этапе погружения будет полезно разобраться, что такое индексы и как их применять, как читать план, какие существуют физические типы JOIN’ов и так далее.

→ SQL Performance Explained, Маркус Винанд. Замечательная книжка, в которой рассказано про индексы и планы запросов, объясняется, почему одни запросы работают медленно, а другие быстро.

И ещё две статьи по теме – если будет что-то непонятно, замените их другими. Чем больше прочитаете и посмотрите, тем лучше.

EXPLAIN in SQL

Anatomy of a PostgreSQL Query Plan

Погружение в инженерию данных

Когда разберётесь с перформансом, можно переходить к концепциям, то есть к тому, как организуются разные хранилища. Если то, что мы проходили до этого, было одинаково полезно дата-сайентистам, дата-аналитикам и SQL-разработчикам, то концепции, такие как Data Warehouse, Data Lake, Data Vault, Data Anchor и Data Mesh, — это уже чисто инженерная тема. Возможно, будет чуточку тяжело.

«Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса»

NYC Open Data. Начинающему дата-инженеру полезно тренироваться на настоящих данных. Можете начать с запроса database open в поисковике, но у меня есть проверенный вариант — сайт с базами данных Нью-Йорка (например, об авариях, вызовах сантехников или погоде). Попробуйте проектировать базы данных локально на своём компьютере и на примерах разбираться, чем одни концепции отличаются от других.

Следующая тема для разбора — это транзакции и их типы.

«Что такое транзакция»

Затем — slowly changing dimensions (SCD). Тема посвящена тому, как мы храним исторические данные. Ничего сложного, достаточно пары или даже одного материала, чтобы разобраться.

«Версионность и история данных»

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

Как работают базы данных в IT: разбор на примерах. Хорошая статья про типы базы данных, их свойства и структуру.

Managed Service for ClickHouse®. Бесплатный курс Яндекса по ClickHouse.

Следующая концепция — MPP-СУБД, то есть базы данных, которые используют так называемые распределённые вычисления (вычисления не на одном, а на множестве компьютеров). Самый распространённый тип таких СУБД — это Greenplum.

«Массивно-параллельная база данных Greenplum — короткий ликбез»

«Как правильно использовать большие данные: строим хранилища на MPP-СУБД»

После MPP полезно разобраться с ETL — базовый концепт загрузки данных из разных источников, в соответствии с которым дата-инженер трансформирует данные уже после того, как перенёс их в свою базу.

«Как ETL-процессы помогают анализировать большие данные»

Бок о бок с ETL-процессами идёт оркестрация данных, то есть выгрузка по таймингу. С ней помогают оркестраторы, один из самых распространённых и точно самый популярный в России — Airflow.

The Ultimate Guide to Apache Airflow® DAGs. Замечательная книжка от сайта Astronomer, на пальцах объясняет, что такое Airflow и как с ним работать. Лучший материал, что я находил по теме.

Дополнительные языки и фреймворки

Ещё одна большая тема для дата-инженера — это Python. И тут есть загвоздка: в большинстве мест работы знание алгоритмов вам понадобится на базовом уровне, а вот чтобы пройти собеседование в крупную компанию вроде Яндекса, «Авито» или «Т-Банка», придётся сильно погружаться в тему.

«Python для анализа данных». Хороший курс, который поможет изучить Python на базовом уровне.

Learn to Code with Python. Отличный курс на Udemy. К сожалению, платформа больше недоступна в России, но если есть желание, можно учиться через VPN и найти возможности оплатить курсы с зарубежной карты. 

Курсы на Stepik. Альтернатива Udemy с большим количеством курсов по Python. Выбирая, можно ориентироваться на рейтинг.

→ «Python. Чистый код для продолжающих», Эл Свейгарт. Программисту мало просто решить задачу — важно сделать это так, чтобы в коде могли разобраться другие разработчики. Эта книга рассказывает, как писать чистый, красивый и легко поддерживаемый код.

Кроме курсов и книг, посоветую пользоваться нейросетями и YouTube при поиске ответов на конкретные вопросы. А ещё снова тренироваться на LeetCode, причём даже опытным дата-инженерам. Всё-таки навык лайвкодинга — не как езда на велосипеде и со временем теряется. Рекомендую решать хотя бы одну задачу в неделю, а лучше в день.

Также дата-инженеру нужен Git. Но сильно заморачиваться по нему не стоит, базового курса будет достаточно, так как в работе вы, скорее всего, будете использовать три-четыре команды.

LearnGitBranching. Мой любимый курс по Git — понятный, интересный и хорошо визуализированный.

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

→ Spark: The Definitive Guide, Матей Захария. Книга от человека, который создал Spark. Впрочем, материалов по теме много, если не зайдёт эта, берите любую другую.

→ Community-версия Databricks или Google Colab. В них можно практиковаться в Spark.

В контексте Spark обычно вспоминают его «родной» язык Scala. На мой взгляд, можно обойтись и без него. Это хороший бонус, и этим можно заниматься для расширения кругозора, но на первых порах озадачиваться Scala точно не стоит — он слишком тяжёлый, точно сложнее, чем Python. И комьюнити у него меньше, а значит, в интернете меньше готовых ответов, хороших обучающих роликов и материалов.

Софтскилы

Софтскилы не менее важны, чем хардскилы. В России ими озадачиваются ещё не все, но в крупных европейских компаниях соискатели даже проходят отдельные собеседования, где не спрашивают про код, задачи или теорию, зато спросят про сложности в работе, особенности в общении и подход к заказчикам.

Современный дата-инженер не может просто писать код и закрывать таски в Jira, сидя в тёмном углу. Сегодня дата-инженер — это человек, который активно общается с бизнесом, ходит на встречи и составляет ТЗ.

Я не могу точно сказать, как развивать софтскилы, но мне кажется, что нужно уметь общаться и слушать, не перебивать и вникать в истинные проблемы собеседников. Одно мне известно точно — сидение в тёмном углу несовместимо с продвижением по карьерной лестнице.

Также многие компании сейчас работают по методологии управления проектами Agile. По ней много материалов и даже книг, но я бы рекомендовал обойтись статьями — дата-инженеру достаточно понять, как устроена работа по спринтам, почему и когда это эффективно — и почему и когда не очень.

→ «Управление проектом по Agile методике»

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

→ «Столкновение культур», Ричард Льюис. Книга описывает, насколько по-своему к работе относятся люди в разных странах.

→ «Как разговаривать с кем угодно, когда угодно и где угодно», Ларри Кинг. Книга про то, как общаться с людьми, находить общий язык и договариваться. Рекомендую её абсолютно всем независимо от профессии и места работы.

И самое последнее — это знание английского языка. Как видите, я часто приводил книжки, статьи и курсы на английском, так что это важно не только в общении, но и в обучении. Без английского в программировании будет тяжело.

Английский в Практикуме. Курсы по уровням или цели — есть программа для разработчиков и тестировщиков.

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

Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Публикации

Информация

Сайт
practicum.yandex.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
Ира Ко