Станьте дата-инженером, начиная с нуля.

433 шага по 5-10 минут. Python, SQL, пайплайны, облака и стриминг. В каждом шаге практика и проверка.

Шаг 1 вживую: путь одного заказа

SELECT * FROM raw.orders;  -- shop DB + marketplace CSV
заказcreated_atсуммавал.клиент
10412026-11-02 09:14 CET42.50EUR7
10422026-11-02T08:40:00Z19.99USD3
10422026-11-02T08:40:00Z19.99USD3
104302.11.2026 12:05пустоEUR9
10442026-11-01 23:30 PST120.00usd7
10452026-11-01 18:02 CET64.00EUR3

6 строк2 источника. Один дубль, одна пустая сумма, 3 формата времени, 2 валюты.

SELECT DISTINCT order_id, to_utc(created_at),
       amount * fx.rate AS amount_eur
FROM raw.orders JOIN fx USING (currency)
WHERE amount IS NOT NULL;
заказcreated_at (UTC)amount_eur
10412026-11-02 08:1442.50
10422026-11-02 08:4018.39
10442026-11-02 07:30110.40
10452026-11-01 17:0264.00

4 строки, 1 в карантинеДубль удалён, заказ 1043 ушёл в карантин, время в UTC, доллары пересчитаны по учебному курсу 0.92.

SELECT o.*, c.country
FROM stg_orders o
JOIN dim_customer c USING (customer_id);
заказcreated_at (UTC)amount_eurстрана
10412026-11-02 08:1442.50DE
10422026-11-02 08:4018.39FR
10442026-11-02 07:30110.40DE
10452026-11-01 17:0264.00FR

fct_orders: 4 строкиКаждый заказ соединён с клиентом. Одна строка это один заказ: это и есть grain.

SELECT order_date, COUNT(*), SUM(amount_eur)
FROM fct_orders GROUP BY 1;
день (UTC)заказывыручка_eurchart
2026-11-01164.00
2026-11-023171.29

235.29 EURВ сырых данных заказ 1044 выглядел как 1 ноября. В UTC он относится к 2 ноября.

Один шаг: одна идея и 5-10 минут

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

  • Один датасет магазина с шага 1 до финального проекта: заказы, клиенты, клики, платежи, тикеты.
  • Каждые 10-15 шагов чекпоинт или итоговый проект, который можно показать.
  • Сложный инструмент приходит, когда без него уже больно. Spark идёт после шага, где pandas не хватает памяти.
  1. 2-3 мин

    Читаете

    Ситуация с реальной работы, идея простыми словами, одна схема.

  2. 1-2 мин

    Смотрите

    Код или SQL на данных магазина с настоящим выводом.

  3. 3-5 мин

    Делаете

    Одна маленькая задача в терминале или редакторе.

  4. сразу

    Проверяете

    Проверка запускает ваш запрос, тест или пайплайн и ставит зелёную галку.

Что у вас будет построено

27 итоговых проектов и чекпоинтов, потом финальный проект. Несколько из них:

  • шаг 386Неделя дежурства: 5 аварий в проде подряд
  • шаг 158Инкрементальная загрузка из 3 источников, которую можно запустить дважды
  • шаг 228dbt-проект с тестами, документацией и CI
  • шаг 299Один и тот же пайплайн магазина в AWS, потом в GCP и Azure
  • шаг 347Живой дашборд заказов на change data capture
  • шаг 370Счёт за хранилище минус 40%, с цифрами

Программа

Все шаги по порядку. Шаги 0-30 бесплатно.

Часть 1 Старт с нуля 0-83

Что такое дата-инжиниринг 0-7
  1. 0Чем дата-инженер занят весь день бесплатно
  2. 1Путь одного заказа: от клика до дашборда бесплатно
  3. 2Источники, пайплайны, хранилище, потребители бесплатно
  4. 3Batch и streaming на одной картинке бесплатно
  5. 4OLTP и OLAP: два вида баз бесплатно
  6. 5Дата-инженер, аналитик, analytics engineer, ML-инженер бесплатно
  7. 6Современный стек данных на одной карте бесплатно
  8. 7Что ты построишь за курс бесплатно
Терминал и git 8-18
  1. 8Открываем терминал и запускаем 3 команды бесплатно
  2. 9Файлы, папки и пути бесплатно
  3. 10Заглядываем в CSV: head, tail, wc бесплатно
  4. 11Ищем строки через grep бесплатно
  5. 12Пайпы и перенаправление бесплатно
  6. 13Переменные окружения бесплатно
  7. 14Ставим инструменты через пакетный менеджер бесплатно
  8. 15git: первый коммит бесплатно
  9. 16Ветки и слияния бесплатно
  10. 17GitHub: push и pull request бесплатно
  11. 18Чекпоинт: репа с очищенным CSV бесплатно
Python с нуля 19-43
  1. 19Ставим Python и запускаем первый скрипт бесплатно
  2. 20Переменные и типы бесплатно
  3. 21Строки и f-строки бесплатно
  4. 22Списки бесплатно
  5. 23Словари бесплатно
  6. 24Условия бесплатно
  7. 25Циклы бесплатно
  8. 26Функции бесплатно
  9. 27Модули и импорты бесплатно
  10. 28Чтение и запись файлов бесплатно
  11. 29CSV через модуль csv бесплатно
  12. 30JSON на входе и на выходе бесплатно
  13. 31Ошибки и try/except
  14. 32Виртуальные окружения и uv
  15. 33Установка пакетов
  16. 34Классы за 10 минут
  17. 35Dataclasses и аннотации типов
  18. 36Даты, время и часовые пояса
  19. 37Вызываем HTTP API
  20. 38Пагинация и лимиты запросов
  21. 39Логирование вместо print
  22. 40Первый тест на pytest
  23. 41Консольный скрипт с аргументами
  24. 42Генераторы: файлы больше памяти
  25. 43Итог: ежедневный сборщик из API в CSV
SQL с нуля 44-73
  1. 44Что такое база данных
  2. 45Таблицы, строки, столбцы
  3. 46Запускаем Postgres и подключаемся
  4. 47SELECT
  5. 48WHERE
  6. 49ORDER BY и LIMIT
  7. 50COUNT, SUM, AVG, MIN, MAX
  8. 51GROUP BY
  9. 52HAVING
  10. 53NULL и почему он ломает сравнения
  11. 54INNER JOIN
  12. 55LEFT JOIN
  13. 56Размножение строк в JOIN: когда суммы удваиваются
  14. 57Подзапросы
  15. 58CTE через WITH
  16. 59CASE WHEN
  17. 60Даты в SQL
  18. 61Текст в SQL
  19. 62Оконные функции: ROW_NUMBER
  20. 63Накопительные суммы и LAG/LEAD
  21. 64Дедупликация через окно
  22. 65INSERT, UPDATE, DELETE
  23. 66CREATE TABLE и типы данных
  24. 67Первичные и внешние ключи
  25. 68Индексы
  26. 69Транзакции
  27. 70Читаем EXPLAIN
  28. 71Представления и материализованные представления
  29. 72SQL из Python
  30. 73Итог: 10 вопросов бизнеса к базе магазина
Продвинутый SQL 74-83
  1. 74Пропуски и острова
  2. 75Сессии: собираем клики в визиты
  3. 76Рекурсивные CTE
  4. 77ROLLUP, CUBE, GROUPING SETS
  5. 78Pivot и unpivot
  6. 79Топ-N в группе, медианы, перцентили
  7. 80Уровни изоляции и MVCC
  8. 81Алгоритмы JOIN: nested loop, hash, merge
  9. 82Партиционирование таблиц в Postgres
  10. 83Чекпоинт: 10 SQL-задач уровня собеседования

Часть 2 Основы данных 84-140

Моделирование данных 84-105
  1. 84Почему форма данных важна
  2. 85Нормализация простыми словами
  3. 86Рисуем ER-диаграмму
  4. 87Факты и измерения
  5. 88Grain: что значит одна строка
  6. 89Схема «звезда»
  7. 90Схема «снежинка»
  8. 91Суррогатные и натуральные ключи
  9. 92Измерение дат
  10. 93Медленно меняющиеся измерения: тип 1 и 2
  11. 94SCD типов 3, 4 и 6
  12. 95Типы фактов: транзакционные, периодические снапшоты, накопительные
  13. 96Факты без мер
  14. 97Bridge-таблицы для связи многие-ко-многим
  15. 98Согласованные измерения и bus matrix
  16. 99Опоздавшие измерения
  17. 100Одна большая таблица: когда она выигрывает
  18. 101Data Vault за один шаг
  19. 102Моделируем события
  20. 103Полуструктурированный JSON в хранилище
  21. 104Выбираем модель под команду
  22. 105Итог: модель данных подписочного бизнеса
Хранение и форматы файлов 106-117
  1. 106Строчное и колоночное хранение
  2. 107Ловушки CSV: запятые, кавычки, кодировки
  3. 108JSON Lines
  4. 109Parquet
  5. 110Avro
  6. 111Кодеки сжатия
  7. 112Партиционирование файлов по дате
  8. 113Проблема мелких файлов
  9. 114Объектное хранилище: бакеты и ключи
  10. 115MinIO: S3 на ноутбуке
  11. 116Озеро, хранилище, lakehouse
  12. 117Итог: сырой CSV в партиционированный Parquet в MinIO
Docker и серверы для данных 118-127
  1. 118Зачем контейнеры
  2. 119Первый Dockerfile
  3. 120docker compose с Postgres
  4. 121Тома: данные, которые переживают перезапуск
  5. 122Сеть между контейнерами
  6. 123Конфиги и секреты в контейнерах
  7. 124cron: самый простой планировщик
  8. 125SSH на сервер
  9. 126Makefile как вход в проект
  10. 127Итог: локальный стек данных одной командой
Основы распределённых систем 128-135
  1. 128Почему одной машины перестаёт хватать
  2. 129Репликация
  3. 130Партиционирование и шардирование
  4. 131Модели согласованности
  5. 132CAP и PACELC
  6. 133Часы и порядок событий
  7. 134Консенсус за один шаг
  8. 135At-most-once, at-least-once, exactly-once
Другие базы данных 136-140
  1. 136Документные базы: MongoDB
  2. 137Key-value и wide-column: DynamoDB и Cassandra
  3. 138Redis
  4. 139Поисковые движки: Elasticsearch и OpenSearch
  5. 140Выгружаем данные из NoSQL в хранилище

Часть 3 Пайплайны 141-237

Загрузка данных 141-158
  1. 141Какие бывают источники
  2. 142Полная и инкрементальная загрузка
  3. 143Watermark: помним, где остановились
  4. 144Идемпотентность: можно запустить дважды
  5. 145Загрузка из API с повторами
  6. 146Много вызовов API сразу через asyncio
  7. 147Вебхуки
  8. 148Файлы из SFTP и почты
  9. 149Выгрузка из боевой базы
  10. 150Change data capture: идея
  11. 151dlt: загрузка как код на Python
  12. 152Airbyte
  13. 153Готовые коннекторы: Fivetran и аналоги
  14. 154Дрейф схемы
  15. 155Опоздавшие и дублирующиеся данные
  16. 156Backfill
  17. 157Скрапинг в рамках закона
  18. 158Итог: инкрементальная загрузка из 3 источников
Batch-обработка на одной машине 159-167
  1. 159Основы pandas
  2. 160pandas: группировка, join, разворот
  3. 161Где pandas кончается память
  4. 162Polars
  5. 163DuckDB
  6. 164DuckDB поверх Parquet в S3
  7. 165Замер: pandas, Polars, DuckDB
  8. 166Выбор инструмента по объёму данных
  9. 167Итог: 50 ГБ на ноутбуке
Spark 168-183
  1. 168Зачем распределённая обработка
  2. 169Драйвер, экзекьюторы, кластер
  3. 170Spark локально
  4. 171DataFrame API
  5. 172Ленивые вычисления: трансформации и действия
  6. 173Spark SQL
  7. 174Партиции
  8. 175Shuffle
  9. 176Broadcast join
  10. 177Перекос данных
  11. 178Почему Python UDF медленные
  12. 179Читаем Spark UI
  13. 180Кеширование
  14. 181Настройка памяти и экзекьюторов
  15. 182Пишем партиционированный результат
  16. 183Итог: Spark-джоба в 3 раза быстрее
JVM для Spark по желанию 184-186
  1. 184Читаем Spark-код на Scala
  2. 185Память JVM и сборка мусора в Spark
  3. 186Java и Scala в вакансиях: что учить
Таблицы lakehouse 187-195
  1. 187Табличные форматы: почему файлов мало
  2. 188Delta Lake
  3. 189Apache Iceberg
  4. 190MERGE и upsert
  5. 191Эволюция схемы
  6. 192Идемпотентная перезапись партиций
  7. 193Time travel и откат
  8. 194Обслуживание таблиц: compaction и vacuum
  9. 195Итог: таблица с ежедневным обновлением без дублей
Оркестрация 196-213
  1. 196Почему cron перестаёт хватать
  2. 197DAG
  3. 198Airflow: установка и первый DAG
  4. 199Операторы и задачи
  5. 200Расписания, catchup, интервалы данных
  6. 201Повторы, таймауты, SLA
  7. 202Сенсоры и зависимости между DAG
  8. 203Передача данных между задачами
  9. 204Dagster: мышление ассетами
  10. 205Prefect и другие: как выбрать
  11. 206Backfill в оркестраторе
  12. 207Алерты, которые читают
  13. 208Тестируем DAG
  14. 209Динамические задачи
  15. 210Запуск по готовности данных
  16. 211Executors: local, Celery, Kubernetes
  17. 212Airflow в проде
  18. 213Итог: ежедневный пайплайн под оркестратором
Трансформации в dbt 214-228
  1. 214ETL и ELT
  2. 215Проект dbt с нуля
  3. 216Модели и ref()
  4. 217Sources и свежесть
  5. 218Материализации
  6. 219Инкрементальные модели
  7. 220Тесты
  8. 221Документация и граф зависимостей
  9. 222Jinja и макросы
  10. 223Snapshots для SCD тип 2
  11. 224Seeds и пакеты
  12. 225Слои: staging, intermediate, marts
  13. 226dbt в CI: сборка только изменённого
  14. 227Семантический слой и метрики
  15. 228Итог: dbt-проект для магазина
Тесты кода данных 229-233
  1. 229Unit-тесты трансформаций
  2. 230Тестируем Spark-код
  3. 231Unit-тесты в dbt
  4. 232Интеграционные тесты на Testcontainers
  5. 233Тестовые данные: фикстуры и синтетика
Выдача данных 234-237
  1. 234BI-дашборды в Superset
  2. 235Самостоятельная аналитика в Metabase
  3. 236API над данными на FastAPI
  4. 237Кеш и лимиты для API данных

Часть 4 Надёжные данные 238-277

Качество данных и контракты 238-249
  1. 238Сколько стоят плохие данные
  2. 239Измеримые свойства качества
  3. 240Great Expectations и Soda
  4. 241Контракты данных
  5. 242Реестр схем
  6. 243Проверки аномалий по объёму и свежести
  7. 244Паттерн карантина
  8. 245Сверка с источником
  9. 246SLA по свежести
  10. 247Entity resolution: один клиент из 3 систем
  11. 248Золотые записи и мастер-данные
  12. 249Итог: пайплайн, который не пропускает плохие данные
DataOps 250-262
  1. 250Git-процесс в проектах данных
  2. 251CI для пайплайнов
  3. 252Dev, staging, prod для данных
  4. 253Terraform: инфраструктура как код
  5. 254Terraform для бакетов и хранилищ
  6. 255Управление секретами
  7. 256Наблюдаемость пайплайнов: логи, метрики, трейсы
  8. 257Lineage через OpenLineage
  9. 258Ранбуки
  10. 259Дежурства и инциденты
  11. 260Пишем постмортем
  12. 261AI-агенты для кода в работе с данными
  13. 262Итог: CI/CD для всего стека
Kubernetes для данных 263-268
  1. 263Поды, деплойменты, сервисы
  2. 264Helm-чарты
  3. 265Spark в Kubernetes
  4. 266Airflow с KubernetesPodOperator
  5. 267Requests, limits, автомасштабирование
  6. 268Итог: стек данных в локальном кластере kind
Governance, приватность, безопасность 269-277
  1. 269Каталоги данных
  2. 270Находим и классифицируем персональные данные
  3. 271Маскирование и псевдонимизация
  4. 272Доступы: роли и гранты
  5. 273Безопасность на уровне строк и столбцов
  6. 274GDPR: удаляем человека из озера данных
  7. 275Политики хранения
  8. 276Журналы аудита
  9. 277Итог: проверка приватности своей платформы

Часть 5 Облака 278-323

Основы облаков 278-288
  1. 278Безопасно открываем облачный аккаунт
  2. 279Бюджетный алерт до всего остального
  3. 280IAM: пользователи, роли, политики
  4. 281Регионы и зоны
  5. 282VPC, подсети и маршруты
  6. 283Private endpoints: данные не выходят в интернет
  7. 284NAT gateway: скрытая статья расходов
  8. 285Шифрование через KMS
  9. 286Как облака берут деньги за данные
  10. 287CLI облака
  11. 288Teardown: ничего не оставляем включённым
AWS 289-299
  1. 289S3 для данных
  2. 290IAM-роли для пайплайнов
  3. 291Glue Data Catalog
  4. 292Athena
  5. 293Glue jobs и EMR Serverless
  6. 294Lambda для мелких задач
  7. 295Step Functions и MWAA
  8. 296Redshift Serverless
  9. 297Kinesis
  10. 298Lake Formation
  11. 299Итог: пайплайн магазина на AWS
Google Cloud 300-307
  1. 300Cloud Storage
  2. 301BigQuery
  3. 302Партиционирование и кластеризация в BigQuery
  4. 303Стоимость BigQuery: on-demand и слоты
  5. 304Pub/Sub
  6. 305Dataflow
  7. 306Composer и Dataproc
  8. 307Итог: пайплайн магазина на GCP
Azure 308-314
  1. 308ADLS Gen2
  2. 309Data Factory
  3. 310Microsoft Fabric
  4. 311Event Hubs
  5. 312Entra ID и доступы
  6. 313Purview
  7. 314Итог: пайплайн магазина на Azure
Хранилища и lakehouse 315-323
  1. 315Архитектура Snowflake
  2. 316Warehouse и кредиты в Snowflake
  3. 317Time travel и клоны без копирования
  4. 318Databricks и lakehouse
  5. 319Unity Catalog и открытые каталоги
  6. 320Trino: один SQL поверх многих источников
  7. 321ClickHouse для быстрой аналитики
  8. 322Выбираем хранилище
  9. 323Итог: одни и те же витрины на Snowflake и Databricks

Часть 6 Стриминг и real time 324-347

Стриминг 324-347
  1. 324Когда real time окупается
  2. 325События и логи
  3. 326Kafka: брокеры, топики, партиции
  4. 327Продюсеры
  5. 328Консьюмеры и группы
  6. 329Оффсеты и повторное чтение
  7. 330Лаг консьюмеров и как за ним следить
  8. 331Ребалансировка
  9. 332Retention и log compaction
  10. 333Гарантии доставки
  11. 334Схемы событий
  12. 335Режимы совместимости схем
  13. 336Kafka Connect
  14. 337CDC через Debezium
  15. 338Окна: tumbling, sliding, session
  16. 339Event time и watermark
  17. 340Состояние в потоковой обработке
  18. 341Spark Structured Streaming
  19. 342Apache Flink
  20. 343Exactly-once от начала до конца
  21. 344Стриминг в lakehouse
  22. 345Применяем CDC-изменения к таблице Iceberg
  23. 346Real-time OLAP
  24. 347Итог: живой дашборд заказов на CDC

Часть 7 Данные для ML и AI 348-362

Пайплайны данных для ML и AI 348-362
  1. 348Что ML-команде нужно от дата-инженера
  2. 349Фичи и пайплайны фич
  3. 350Корректность на момент времени
  4. 351Feature store на Feast
  5. 352Обучающие датасеты и версии
  6. 353Эмбеддинги для дата-инженера
  7. 354Векторный поиск на pgvector
  8. 355Неструктурированные данные: PDF, картинки, аудио
  9. 356Пайплайн документов для RAG
  10. 357LLM внутри пайплайна: извлечение и классификация
  11. 358Стоимость и кеш LLM-вызовов в batch
  12. 359Text-to-SQL поверх хранилища
  13. 360Данные для AI-агентов: MCP поверх хранилища
  14. 361Передача в MLOps
  15. 362Итог: тикеты поддержки в индекс для RAG

Часть 8 Уровень senior 363-432

Производительность и стоимость 363-370
  1. 363Профилируем медленный запрос
  2. 364Partition pruning
  3. 365Кластеризация и ключи сортировки
  4. 366Инкрементальность везде
  5. 367FinOps для данных
  6. 368Классы хранения и правила жизненного цикла
  7. 369Spot-инстансы и автомасштабирование
  8. 370Итог: счёт за хранилище минус 40%
Аварии в проде 371-386
  1. 371Как читать инцидент: алерт, логи, хронология
  2. 372Дубли после backfill
  3. 373Баг перехода на летнее время
  4. 374Апстрим переименовал колонку
  5. 375Тихие NULL после смены источника
  6. 376Перекошенный JOIN роняет Spark
  7. 377Мелкие файлы тормозят все запросы
  8. 378SELECT * сжигает месячный бюджет
  9. 379Лаг Kafka растёт за ночь
  10. 380Опоздавшие данные выпали из вчерашнего отчёта
  11. 381DAG, который отработал дважды
  12. 382Курс валют неделю брался из старого кеша
  13. 383Удалённая партиция, восстановленная через time travel
  14. 384Смена прав ломает ночную загрузку
  15. 385Цифры дашборда расходятся с финансами
  16. 386Итог: неделя дежурства, 5 инцидентов подряд
Архитектура 387-396
  1. 387Требования до инструментов
  2. 388Архитектуры Lambda и Kappa
  3. 389Medallion: bronze, silver, gold
  4. 390Data mesh и дата-продукты
  5. 391Строить, покупать или open source
  6. 392Reverse ETL
  7. 393Мультитенантные платформы данных
  8. 394Восстановление после аварий
  9. 395Миграция старого хранилища
  10. 396Записи архитектурных решений
Дата-инжиниринг в бизнесе 397-406
  1. 397Аудит данных компании
  2. 398Ищем ручную работу под автоматизацию
  3. 399Метрики, о которых договорились
  4. 400Считаем ROI и TCO
  5. 401Пишем предложение
  6. 402Дорожная карта данных на 90 дней
  7. 403Работа со стейкхолдерами
  8. 404Заменяем процессы в Excel
  9. 405Защита перед руководством
  10. 406Итог: аудит и предложение для реального бизнеса
Навыки senior-инженера 407-412
  1. 407Пишем design doc
  2. 408Оцениваем сроки работ с данными
  3. 409Приоритизируем техдолг
  4. 410Код-ревью кода данных
  5. 411Менторство джунов
  6. 412Итог: принимаем чужой легаси-репозиторий и приводим в порядок
Собеседования и карьера 413-424
  1. 413Резюме дата-инженера
  2. 414Портфолио из итоговых проектов
  3. 415SQL-задачи на собеседовании
  4. 416Python-интервью для дата-ролей
  5. 417Интервью по моделированию данных
  6. 418System design: аналитика e-commerce
  7. 419System design: антифрод в реальном времени
  8. 420System design: кликстрим на миллиард событий в день
  9. 421Поведенческое интервью
  10. 422Домашние задания
  11. 423Переговоры о зарплате
  12. 424Первые 90 дней на работе
Финальный проект 425-432
  1. 425Финальный проект: задача и требования
  2. 426Финальный проект: архитектура и ADR
  3. 427Финальный проект: загрузка и хранение
  4. 428Финальный проект: трансформации и качество
  5. 429Финальный проект: потоковый путь
  6. 430Финальный проект: деплой в облако через Terraform
  7. 431Финальный проект: наблюдаемость и отчёт о стоимости
  8. 432Финальный проект: описание и демо для портфолио

С чем будете работать

Сначала идея, инструмент идёт примером. Сменился инструмент: меняется пример, шаг остаётся.

База
Терминал, git, Python, SQL, Postgres, Docker, MongoDB, Redis
Обработка
pandas, Polars, DuckDB, Spark
Пайплайны
dlt, Airbyte, Airflow, Dagster, dbt
Хранение
Parquet, Avro, S3, MinIO, Delta Lake, Iceberg
Облака
AWS, Google Cloud, Azure, Snowflake, Databricks, Terraform, Kubernetes
Стриминг
Kafka, Debezium, Flink, Spark Streaming, ClickHouse
Качество и эксплуатация
Great Expectations, Soda, OpenLineage, контракты данных
ML и AI
Feast, pgvector, пайплайны для RAG, LLM в batch, MCP

Для кого

Меняете профессию

Вы ни разу не писали код. Часть 1 начинается с терминала и заканчивается Python и SQL, которыми вы пользуетесь каждый день.

Аналитики и разработчики

Вы знаете SQL или язык программирования. Часть 1 пролистываете, дальше идёте вглубь пайплайнов, облаков и стриминга.

Инженеры на пути к senior

Производительность, стоимость, архитектура, governance и как предложить бизнесу платформу данных.

Вопросы

Нужно ли уметь программировать?

Нет. Шаги 0-83 учат терминалу, git, Python и SQL с первой команды.

Какой уровень будет на выходе?

Mid-senior. Вы строите и сопровождаете пайплайны, выбираете инструменты по замерам, чините аварии в проде, проектируете платформу данных и защищаете решение. Senior-уровень дают часть 8 и сложные блоки частей 1-6: распределённые системы, Kubernetes, стоимость, архитектура.

Откуда возьмётся опыт?

Из аварий, которые вы чините сами. Блок 8.2 воспроизводит в малом масштабе 14 реальных классов сбоев: дубли после backfill, баг летнего времени, переименованная колонка в источнике, перекошенный JOIN в Spark, SELECT * на весь бюджет. Вы получаете алерт и логи, находите причину, чините и пишете постмортем. В шаге 412 вам достаётся легаси-репозиторий без тестов, его нужно привести в порядок.

Какие облака?

AWS, Google Cloud и Azure, по блоку на каждое, плюс Snowflake и Databricks. Один и тот же пайплайн магазина вы выкатываете в каждое и видите, что меняется.

Кто платит за облако?

Вы работаете в своих аккаунтах. Первый облачный шаг ставит бюджетный алерт, каждая облачная практика заканчивается удалением ресурсов. Закладывайте около $30 на весь курс. До части 5 всё работает на ноутбуке в Docker.

Какой нужен компьютер?

macOS, Linux или Windows с WSL, 8 ГБ памяти и 30 ГБ свободного диска. В блоке Spark пригодится 16 ГБ.

Почему так много шагов?

В каждом шаге одна идея, поэтому шаги короткие. 433 шага по 5-10 минут дают 36-72 часа чтения и практики, плюс итоговые проекты.

Есть ли ML и AI?

Да. Часть 7: пайплайны фич, корректность на момент времени, векторный поиск, пайплайны документов для RAG и вызовы LLM внутри batch-задач.

Собеседования?

Блок 8.6: SQL, Python и моделирование данных, 3 задачи на system design, домашние задания и переговоры о зарплате.

На каких языках?

Английский и русский, шаг в шаг.

Сколько стоит?

Шаги 0-30 бесплатно. Дальше годовая подписка или доступ навсегда. Лист ожидания узнает цены первым.

Получите первые шаги, когда они откроются

Одно письмо, когда выйдут шаги 0-30.