merge(roadmap): доработки README — новые секции, исправлены ссылки, упрощено оглавление

This commit is contained in:
2026-03-14 22:09:50 +03:00
+57 -84
View File
@@ -3,7 +3,7 @@
Этот роадмап — конспект моих подходов к обучению Data Engineering. Этот роадмап — конспект моих подходов к обучению Data Engineering.
Он подойдёт тем, кто хочет: Он подойдёт тем, кто хочет:
- системно войти в профессию с нуля или близкого к нулю уровня; - системно войти в профессию с нуля или близкого к нулю уровня;
- закрыть пробелы в базе (SQL, Git, Python, DWH, Airflow, GreenPlum); - закрыть пробелы в базе (SQL, Git, Python, DWH, Airflow, Greenplum);
- подготовиться к собеседованиям и первым рабочим задачам. - подготовиться к собеседованиям и первым рабочим задачам.
Роадмап можно проходить самостоятельно или вместе со мной в формате менторства. Роадмап можно проходить самостоятельно или вместе со мной в формате менторства.
@@ -11,51 +11,12 @@
## Оглавление ## Оглавление
- [О роадмапе](#о-роадмапе) - [Основные знания](#основные-знания) — Git, SQL, Python, методологии, Docker
- [Оглавление](#оглавление) - [Практика и инструменты](#практика-и-инструменты) — Airflow, Greenplum, курсовая работа
- [Основные знания](#основные-знания) - [Карьера и менторство](#карьера-и-менторство) — резюме, собеседования, испытательный срок
- [Git и базовые инструменты](#git-и-базовые-инструменты) - [Расширенные навыки](#расширенные-навыки) — ClickHouse, Streaming, Lakehouse, dbt
- [База по Git](#база-по-git)
- [Основы Markdown](#основы-markdown)
- [Базы данных: SQL и моделирование данных](#базы-данных-sql-и-моделирование-данных)
- [База по SQL](#база-по-sql)
- [Повышение знаний SQL](#повышение-знаний-sql)
- [Моделирование данных](#моделирование-данных)
- [Python](#python)
- [Методологии разработки](#методологии-разработки)
- [1. Основы и сравнение подходов](#1-основы-и-сравнение-подходов)
- [2. Agile: Философия гибкости](#2-agile-философия-гибкости)
- [3. Scrum (Скрам)](#3-scrum-скрам)
- [4. Kanban (Канбан)](#4-kanban-канбан)
- [Практика: Как это выглядит в жизни](#практика-как-это-выглядит-в-жизни)
- [1. Jira (Мировой стандарт)](#1-jira-мировой-стандарт)
- [2. Yandex Tracker (Российский стандарт)](#2-yandex-tracker-российский-стандарт)
- [Технические навыки](#технические-навыки)
- [Продвинутый Git](#продвинутый-git)
- [Docker](#docker)
- [Запись встреч](#запись-встреч)
- [Практика и инструменты](#практика-и-инструменты)
- [Airflow](#airflow)
- [Greenplum](#greenplum)
- [Фундаментальная теория](#фундаментальная-теория)
- [Знакомство с Greenplum](#знакомство-с-greenplum)
- [Курсовая работа](#курсовая-работа)
- [Стенд в Docker Compose](#стенд-в-docker-compose)
- [Понятие сложности алгоритмов](#понятие-сложности-алгоритмов)
- [Карьера и менторство](#карьера-и-менторство)
- [Менторство по этому роадмапу](#менторство-по-этому-роадмапу)
- [Подготовка к собеседованиям](#подготовка-к-собеседованиям)
- [Помощь в подготовке резюме](#помощь-в-подготовке-резюме)
- [Навыки поиска работы с HH и Habr карьера](#навыки-поиска-работы-с-hh-и-habr-карьера)
- [Помощь с прохождением испытательного срока](#помощь-с-прохождением-испытательного-срока)
- [Расширенные навыки](#расширенные-навыки)
- [ClickHouse](#clickhouse)
- [NiFi](#nifi)
- [Kafka](#kafka)
- [dbt](#dbt)
- [Софт скиллы](#софт-скиллы) - [Софт скиллы](#софт-скиллы)
- [Дополнительные материалы](#дополнительные-материалы) - [Дополнительные материалы](#дополнительные-материалы)
- [Записи ОМ](#записи-ом)
Рекомендуемый способ использования: Рекомендуемый способ использования:
- двигаться по разделам последовательно, не перепрыгивая через базу; - двигаться по разделам последовательно, не перепрыгивая через базу;
@@ -117,7 +78,7 @@ SQL и моделирование данных специально идут р
- Глава 9 - Транзакции - Глава 9 - Транзакции
- Глава 10 - Повышение производительности + ДЗ - Глава 10 - Повышение производительности + ДЗ
Вопросы оптимизации запросов хорошо описаны в курсе [QPT](https://postgrespro.ru/education/courses/QPT) от Postgres Pro. Полученные навыки применимы для работы в том числе с GreenPlum, и частично, другими БД. Вопросы оптимизации запросов хорошо описаны в курсе [QPT](https://postgrespro.ru/education/courses/QPT) от Postgres Pro. Полученные навыки применимы для работы в том числе с Greenplum, и частично, другими БД.
На момент написания, видеолекции были доступны только для старой версии Postgres 13, но ее вполне достаточно. На момент написания, видеолекции были доступны только для старой версии Postgres 13, но ее вполне достаточно.
### Моделирование данных ### Моделирование данных
@@ -145,7 +106,6 @@ SQL и моделирование данных специально идут р
- [Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков | karpov.courses](https://www.youtube.com/watch?v=fNGIOb8SJvU) - [Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков | karpov.courses](https://www.youtube.com/watch?v=fNGIOb8SJvU)
- Лекция в рамках курса по DWH: именно [«Основы Data Vault, создаем первую модель»](https://www.youtube.com/watch?v=65b99XCuiR4) — хороший формат: теория + пример. - Лекция в рамках курса по DWH: именно [«Основы Data Vault, создаем первую модель»](https://www.youtube.com/watch?v=65b99XCuiR4) — хороший формат: теория + пример.
- Доклад - практический пример: [Денис Лукьянов — Data Vault 2.0. Когда внедрять, проблемы применения при построении DWH на Greenplum](https://www.youtube.com/watch?v=oGwQbeP5iss) - Доклад - практический пример: [Денис Лукьянов — Data Vault 2.0. Когда внедрять, проблемы применения при построении DWH на Greenplum](https://www.youtube.com/watch?v=oGwQbeP5iss)
- Краткая теория про [DWH](https://halltape.github.io/HalltapeRoadmapDE/DWH/) - повторим еще раз, в другом изложении
- Хорошее общее введение в модели данных дано в статье и докладе от Yandex: [Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса](https://habr.com/ru/companies/yandex/articles/557140/) - Хорошее общее введение в модели данных дано в статье и докладе от Yandex: [Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса](https://habr.com/ru/companies/yandex/articles/557140/)
**Когда блок «Базы данных» считаем пройденным:** **Когда блок «Базы данных» считаем пройденным:**
@@ -171,6 +131,9 @@ SQL и моделирование данных специально идут р
- Введение в [ООП](https://metanit.com/python/tutorial/7.1.php) - Введение в [ООП](https://metanit.com/python/tutorial/7.1.php)
- [Яндекс Учебник: «Объектная модель Python: классы, поля и методы»](https://education.yandex.ru/handbook/python/article/obuektnaya-model-python-klassy-polya-i-metody) - [Яндекс Учебник: «Объектная модель Python: классы, поля и методы»](https://education.yandex.ru/handbook/python/article/obuektnaya-model-python-klassy-polya-i-metody)
- [Real Python: OOP in Python (tutorial)](https://realpython.com/python3-object-oriented-programming/) - [Real Python: OOP in Python (tutorial)](https://realpython.com/python3-object-oriented-programming/)
- Виртуальные окружения (venv) — изолируют зависимости проекта; настройте перед установкой Jupyter и библиотек
- [Habr: как настроить виртуальное окружение](https://habr.com/ru/articles/889670/)
- [SkillFactory: Виртуальные окружения в Python](https://blog.skillfactory.ru/venv-virtualnoe-okruzhenie-v-python/)
- Jupyter Lab - Jupyter Lab
- [Блог Практикума: «Что такое Jupyter Notebook: как установить и открыть»](https://practicum.yandex.ru/blog/chto-takoe-jupyter-notebook/) - [Блог Практикума: «Что такое Jupyter Notebook: как установить и открыть»](https://practicum.yandex.ru/blog/chto-takoe-jupyter-notebook/)
- Готовая реализация Jupyter Lab, включающая в себя Spark, в Docker: https://github.com/dementev-dev/jupyter-spark-docker - Готовая реализация Jupyter Lab, включающая в себя Spark, в Docker: https://github.com/dementev-dev/jupyter-spark-docker
@@ -181,7 +144,6 @@ SQL и моделирование данных специально идут р
- [Хабр (RUVDS): «Моя шпаргалка по pandas»](https://habr.com/ru/companies/ruvds/articles/494720/) - [Хабр (RUVDS): «Моя шпаргалка по pandas»](https://habr.com/ru/companies/ruvds/articles/494720/)
- [Tproger: «Наглядная шпаргалка по операциям с DataFrame»](https://tproger.ru/articles/pandas-data-wrangling-cheatsheet) - [Tproger: «Наглядная шпаргалка по операциям с DataFrame»](https://tproger.ru/articles/pandas-data-wrangling-cheatsheet)
Полезно, но дороговато и не обязательно: хорошее комбо SQL + Python — ["Поколение Python": профи + ООП + SQL Stepik](https://stepik.org/course/233341/promo?search=7181036958) Полезно, но дороговато и не обязательно: хорошее комбо SQL + Python — ["Поколение Python": профи + ООП + SQL Stepik](https://stepik.org/course/233341/promo?search=7181036958)
Цель — уверенно решать простые задачи на Python в формате live-coding; дальше эти навыки пригодятся для создания DAG Airflow. Цель — уверенно решать простые задачи на Python в формате live-coding; дальше эти навыки пригодятся для создания DAG Airflow.
@@ -308,40 +270,41 @@ Apache Airflow — инструмент для оркестрации ETL-про
- Зачем: Это объясняет, почему Greenplum устроен именно так. Без этого вы будете пытаться работать с ним как с обычным Postgres. - Зачем: Это объясняет, почему Greenplum устроен именно так. Без этого вы будете пытаться работать с ним как с обычным Postgres.
### Знакомство с Greenplum ### Знакомство с Greenplum
Теперь, понимая теорию, смотрим, как это реализовано в конкретном инструменте.- Простое введение: [Greenplum | Что это такое и как оно работает? - Youtube](https://www.youtube.com/watch?v=rLG9Z_HcKPY) Теперь, понимая теорию, смотрим, как это реализовано в конкретном инструменте.
- Оно же, но текстом: https://halltape.github.io/HalltapeRoadmapDE/GREENPLUM/
- Простое введение: [Greenplum | Что это такое и как оно работает? - Youtube](https://www.youtube.com/watch?v=rLG9Z_HcKPY)
- [Визуализатор распределения Greenplum](https://gpskew.rzvde.pro/) - [Визуализатор распределения Greenplum](https://gpskew.rzvde.pro/)
- Бесплатный, но большой учебный курс от Yandex: https://yandex.cloud/ru/training/greenplum
- [Учебный курс по Greenplum от datafinder](https://datafinder.ru/products/uchebnyy-kurs-po-greenplum) — взять только отдельные главы.
Практика: **Курс Yandex по Greenplum** — основной учебный курс, рекомендуется пройти целиком:
- [DE Starter Kit — Airflow + Greenplum + CSV](https://github.com/dementev-dev/airflow-greenplum) - [Бесплатный курс Yandex Cloud по Greenplum](https://yandex.cloud/ru/training/greenplum)
- Практику по курсу удобно делать на стенде [airflow-dwh-gp-lab](https://github.com/dementev-dev/airflow-greenplum) — `make up` поднимает рабочий Greenplum с PXF, не нужен облачный кластер.
- Стенд покрывает основные темы курса: типы таблиц (heap / appendonly), политики дистрибуции, сжатие, PXF, анализ планов выполнения (`EXPLAIN`).
- Единственное ограничение: cloud-специфичные темы (тема 2 курса — развёртывание в Yandex Cloud) на локальном стенде не покрыты.
Сложные варианты с виртуалками — только если менти сильно захочет, в базовый путь не включаем. Дополнительно:
- [Учебный курс по Greenplum от datafinder](https://datafinder.ru/products/uchebnyy-kurs-po-greenplum) — отдельные главы для углубления.
**Когда блок Greenplum считаем пройденным:** **Когда блок Greenplum считаем пройденным:**
- вы понимаете, как данные распределяются по сегментам, что такое skew и как его увидеть; - вы понимаете, как данные распределяются по сегментам, что такое skew и как его увидеть;
- на базе учебного стенда (например, DE Starter Kit) можете загружать и выгружать данные в Greenplum, выполнять запросы и разбирать планы выполнения (`EXPLAIN`); - на базе стенда `airflow-dwh-gp-lab` можете загружать и выгружать данные в Greenplum, выполнять запросы и разбирать планы выполнения (`EXPLAIN`);
- можете объяснить, в чём практическая разница между MPP-хранилищем и одиночным Postgres на уровне типичных задач DE и собеседований. - можете объяснить, в чём практическая разница между MPP-хранилищем и одиночным Postgres на уровне типичных задач DE и собеседований.
## Курсовая работа ## Курсовая работа
К финалу роадмапа мы собираем небольшую end-to-end курсовую работу — свой первый «боеподобный» data-проект. Курсовая работа — важный майлстоун роадмапа: ваш первый end-to-end data-проект. После неё у вас есть ключевые технические навыки для старта карьеры в Data Engineering.
### Стенд в Docker Compose Курсовая выполняется на том же стенде [airflow-dwh-gp-lab](https://github.com/dementev-dev/airflow-greenplum), который вы уже использовали для практики по Greenplum.
- Apache Airflow — оркестратор;
- источник данных — TelecomX (или аналогичный открытый датасет);
- Greenplum — основное хранилище;
- вспомогательный Postgres (по желанию);
- ETL-скрипты и DAG'и;
- исходные коды всего — в отдельном Git-репозитории.
В качестве альтернативы файловому источнику можно использовать генератор данных для демо-базы `bookings` от Postgres Pro: https://github.com/postgrespro/demodb. **Что внутри:**
Его удобнее всего встроить в стенд DE Starter Kit (Airflow + Greenplum) как отдельный сервис Postgres с регулярно генерируемыми данными и уже оттуда забирать их в Greenplum (в том числе через PXF, если хочется усложнить архитектуру). - Стенд содержит DWH с реализованным эталонным срезом (STG → ODS → DDS → DM) — это ваш образец для подражания.
- Задача — довести DWH до полного, реализовав недостающие загрузки по аналогии с эталоном.
- Есть готовый план от аналитика (ТЗ с маппингами и бизнес-правилами) — не нужно придумывать, что делать.
- Встроенная автоматическая проверка реализации поможет убедиться в корректности до проверки ментором.
- Ветка `main` — рабочая (с заготовками для реализации), ветка `solution` — эталон для сверки.
**Когда блок курсовой работы считаем пройденным:** **Когда блок курсовой работы считаем пройденным:**
- у вас есть отдельный репозиторий с docker-compose, DAG'ами Airflow, SQL-скриптами и README по проекту; - все загрузки реализованы, DWH заполняется полностью (STG → ODS → DDS → DM);
- стенд поднимается локально, DAG'и успешно прогоняются на тестовых данных от загрузки сырья до витрин; - автоматическая проверка (валидационный DAG) проходит без ошибок;
- вы можете на собеседовании за 5–10 минут рассказать архитектуру курсового проекта, его цели и показать ключевые части кода. - вы можете на собеседовании за 5–10 минут рассказать архитектуру проекта, его цели и показать ключевые части кода.
## Понятие сложности алгоритмов ## Понятие сложности алгоритмов
В Data Engineering редко требуется писать сложные алгоритмы, но важно понимать, как оценивать эффективность кода: В Data Engineering редко требуется писать сложные алгоритмы, но важно понимать, как оценивать эффективность кода:
@@ -411,41 +374,51 @@ Apache Airflow — инструмент для оркестрации ETL-про
Мы кратко знакомимся с: Мы кратко знакомимся с:
- **Apache NiFi** и **Kafka** — инструментами для построения потоковых и интеграционных пайплайнов; - **Streaming** (NiFi + Kafka) — инструментами для построения потоковых и интеграционных пайплайнов;
- **ClickHouse** — колоночной СУБД для высоконагруженной аналитики; - **ClickHouse** — колоночной СУБД для высоконагруженной аналитики;
- **Lakehouse** (Spark, Iceberg, Trino) — архитектурой, построенной на разделении compute и storage;
- **dbt** — подходом к трансформации данных как кода. - **dbt** — подходом к трансформации данных как кода.
Практика ограничивается минимальным рабочим примером (например, запуск в Docker, простой пайплайн или SQL-модель). Практика ограничивается минимальным рабочим примером (запуск в Docker, простой пайплайн или SQL-модель).
Этого достаточно, чтобы уверенно говорить об инструменте на собеседовании и понимать его место в архитектуре — а всё остальное при необходимости осваивается уже на проекте. Этого достаточно, чтобы уверенно говорить об инструменте на собеседовании и понимать его место в архитектуре — а всё остальное при необходимости осваивается уже на проекте.
## ClickHouse ## ClickHouse
Бесплатный курс https://yandex.cloud/ru/training/clickhouse Бесплатный курс https://yandex.cloud/ru/training/clickhouse
Платный курс [ClickHouse для аналитика – Stepik](https://stepik.org/course/100210/promo?search=6551441002) Платный курс [ClickHouse для аналитика – Stepik](https://stepik.org/course/100210/promo?search=6551441002)
## NiFi ## Streaming (NiFi + Kafka)
Плейлист [Apache NiFi с нуля за 3 часа. Конструктор вместо кода - Youtube](https://youtube.com/playlist?list=PL4MpKy3QjNp_rOEEibc4Ro8UK4g8vLX6_&si=W_hidjHmBOZ_aUfS) — первые 4 видео, дальше — по желанию. NiFi — визуальный конструктор потоков данных, Kafka — распределённая очередь сообщений. Вместе они закрывают типичный сценарий: принять данные, буферизовать, доставить в хранилище.
Практика: Материалы:
- собираем отдельный стенд в Docker Compose с Postgres и NiFi; - [Apache NiFi с нуля за 3 часа (Youtube-плейлист)](https://youtube.com/playlist?list=PL4MpKy3QjNp_rOEEibc4Ro8UK4g8vLX6_&si=W_hidjHmBOZ_aUfS) — первые 4 видео, дальше — по желанию
- в NiFi настраиваем простой генератор данных. - [Лучший Гайд по Kafka для Начинающих За 1 Час (Youtube)](https://www.youtube.com/watch?v=hbseyn-CfXY)
## Kafka Практика — на стенде [nifi-kafka-postgres-lab](https://github.com/dementev-dev/nifi-kafka-postgres-lab) (Docker Compose с NiFi, Kafka и Postgres):
[Лучший Гайд по Kafka для Начинающих За 1 Час - Youtube](https://www.youtube.com/watch?v=hbseyn-CfXY) - настраиваем в NiFi простой генератор данных и поток в Postgres;
- строим поток NiFi → Kafka → NiFi → Postgres.
Практика: ## Lakehouse (Spark, Iceberg, Trino)
- расширяем предыдущий стенд, добавляя Kafka;
- строим поток данных: NiFi → Kafka; > Секция в разработке. Lakehouse — отдельное направление в DE, построенное на разделении compute и storage, открытых табличных форматах (Iceberg, Delta) и движках распределённой обработки (Spark, Trino). Этот роадмап фокусируется на классическом DWH-стеке, поэтому полноценный блок пока не готов — ниже только отправные точки для самостоятельного изучения.
- добавляем обратный поток: Kafka → NiFi → Postgres.
- [DataLearn: «Что такое Apache Spark»](https://youtu.be/Tl9YzC-dQLI) — введение в Spark с нуля, ~40 минут
- Стенд для экспериментов: [mini-lakehouse-lab](https://github.com/dementev-dev/mini-lakehouse-lab) (Spark + Iceberg + Trino + MinIO)
## dbt ## dbt
dbt (data build tool) — инструмент для трансформации данных в хранилище. dbt (data build tool) — инструмент для трансформации данных в хранилище.
Мы рассматриваем его как альтернативу «ручному» написанию сложных CTE и для понимания современного подхода к моделированию данных как кода. Мы рассматриваем его как альтернативу «ручному» написанию сложных CTE и для понимания современного подхода к моделированию данных как кода.
Материалы:
- [dbt quickstart (официальный гайд)](https://docs.getdbt.com/guides/manual-install?step=1)
- [Перевод документации dbt на русский](https://docs.getdbt.tech/)
Практика:
- Клонировать [jaffle-shop](https://github.com/dbt-labs/jaffle-shop), установить dbt-duckdb, прогнать `dbt build`, `dbt test`, `dbt docs generate && dbt docs serve` — этого достаточно, чтобы увидеть весь цикл.
**Когда блок расширенных навыков считаем пройденным:** **Когда блок расширенных навыков считаем пройденным:**
- вы можете на собеседовании кратко объяснить, когда уместны NiFi/Kafka, ClickHouse и dbt, и чем они дополняют базовый стек (Postgres, Airflow, Greenplum); - вы можете на собеседовании кратко объяснить, когда уместны Streaming (NiFi/Kafka), ClickHouse, Lakehouse-стек и dbt, и чем они дополняют базовый стек (Postgres, Airflow, Greenplum);
- понимаете типичные сценарии: потоковые интеграции и очереди (Kafka/NiFi), аналитические витрины и отчёты на ClickHouse, трансформации данных в dbt; - понимаете типичные сценарии: потоковые интеграции и очереди (NiFi + Kafka), аналитические витрины и отчёты на ClickHouse, Lakehouse-архитектура (Spark/Iceberg/Trino), трансформации данных как код (dbt);
- не боитесь увидеть эти инструменты в описании вакансии и можете поддержать содержательный разговор об их месте в архитектуре. - не боитесь увидеть эти инструменты в описании вакансии и можете поддержать содержательный разговор об их месте в архитектуре.
--- ---