Навигация и порядок прохождения
Курс — линейный по умолчанию, но senior-аудитория часто приходит с конкретной целью (написать adapter, оптимизировать большой проект, понять Fusion). Поэтому я разделил материал на блоки, между которыми есть жёсткие зависимости (нельзя браться за adapter API, не разобрав Manifest), и блоки, которые относительно независимы (Mesh можно проходить до или после Fusion).
Карта зависимостей
*** — модули с уникальной глубиной**. Модули 01, 02, 03 — фундамент, без которого остальное не уложится. Модуль 10 — практическая ценность для всех, кто ведёт большой проект.
Три типа траекторий
В зависимости от цели приходящие senior выбирают одну из трёх траекторий.
A. «Я хочу написать собственный adapter»
Целевые модули: 01-09. Полный foundation block (01-03), артефакты (04-05), application (06-07), и оба adapter-модуля (08-09). Capstone — вариант B (написать adapter from scratch).
Можно пропустить: 10 (performance), 11 (Mesh), 12 (Fusion), 13 (MetricFlow) — вернуться к ним отдельно.
Часы: ~50.
B. «Я хочу оптимизировать огромный dbt-проект»
Целевые модули: 01-05, 10, 11. Foundation block обязателен — без понимания parsing и Manifest нельзя осознанно настраивать partial parse tuning и defer. После — модули 10 и 11.
Можно пропустить: 06 (programmatic), 07 (materializations), 08-09 (adapters), 12 (Fusion может стать решением, но в режиме скана), 13 (MetricFlow).
Часы: ~40.
C. «Я хочу контрибьютить в dbt-core»
Целевые модули: 01-13 — полный курс. Контрибьюции в dbt-core часто требуют понимания parsing, контекстов, artifacts, adapters, и текущего направления (Fusion). Capstone — вариант A (good_first_issue PR в dbt-core).
Часы: ~75-80.
Если приходите с целью «понять Fusion и решить переезжать ли» — пройдите 01-03 (чтобы понять что ускоряется), потом сразу 12. Это короткий путь к ответу.
Формат уроков и материалов
Каждый модуль состоит из 4-5 уроков единого формата:
-
MDX-урок — теория с диаграммами, Python-сниппетами из dbt-core, реальными manifest.json фрагментами, callout-блоками. 22-30 минут чтения.
-
Quiz после урока — 5-7 вопросов (multiple-choice + true/false) уровня applied / analytical (conceptual — только для теоретических основ).
-
Module exam — 6 deep вопросов в конце ключевых модулей (01, 03, 07, 09). Passing threshold 70%.
-
Labs — 4 lab-проекта на ключевые навыки:
- LAB-01 — custom materialization audit_log
- LAB-02 — adapter dbt-pglite from scratch
- LAB-03 — programmatic dbtRunner в Dagster orchestrator
- LAB-04 — large-project optimization case с замерами
-
Glossary и Troubleshooting — справочники senior-терминов и senior-уровня gotchas (cyclic ephemeral, defer trap, partial parse invalidation, contract drift и т.д.).
Лабы — главное в этом курсе. Lab «adapter from scratch» (4-8 часов) даёт навык, который читать на лекциях бесполезно. Если делать только labs (без MDX), курс работает на 60%. Если только MDX (без labs) — на 30%.
Стиль уроков
Senior-уроки отличаются от middle/junior:
- Источники — Python код dbt-core. Каждый ключевой класс мы открываем как файл (
core/dbt/contracts/graph/manifest.py), смотрим определение, обсуждаем дизайн-решения. - Никаких happy paths. Всё под микроскопом edge cases: partial parse инвалидация по env var, defer trap при ref на prod, contract violation на nullable column delete.
- Сравнения версий. Где между 1.10 и 1.11 что-то изменилось — отмечаем. Где master уже расходится с 1.11 — упоминаем.
- Performance figures. Где есть реальные цифры (Fusion 30x parsing speedup) — приводим. Где нет — говорим «approximately» и не врём.
Что делать, если застрял
Любой senior-курс должен признавать: иногда читатель остаётся с вопросом без ответа. Стратегии:
- Открыть исходники. Не «прочитать в документации», а
git grep -n "ProviderContext" core/dbt/. Половина senior-знаний находится через grep. - Поднять
breakpoint()в нужном месте dbt-core. Клонировать,pip install -e ., добавитьimport pdb; pdb.set_trace()вcore/dbt/parser/manifest.py:200, запуститьdbt parseна тестовом проекте. - Спросить в Telegram-группе курса. Senior-вопросы — самые ценные для остальных читателей.
- GitHub Issues dbt-core. Когда есть подозрение на bug — issue в
dbt-labs/dbt-core. Maintainers активны.
Связь с другими курсами
dbt III — финал серии. Что дальше:
- dbt-adapters specific — если планируете глубоко работать с конкретным warehouse (Snowflake, Databricks), читайте source их адаптеров. Курс не покрывает adapter-specific feature flags.
- MetricFlow specific —
dbt-labs/metricflowна GitHub. Курс даёт основу, для полноты — open issues этого репо. - dbt Fusion specific — материал быстро устаревает (GA Coalesce 2025). Курс даёт architecture, для актуального —
docs.getdbt.com/docs/fusion.