docs(course): обновлены PRD и программа курса

- Зачем:
  - нужно выровнять учебную программу с PRD и явно отделить стартовый onboarding от практики в ноутбуках.
- Что:
  - обновлены название курса и файл программы, а структура материалов пересобрана вокруг стартовой документации, 8 практических модулей и вспомогательных артефактов.
  - добавлены трассировка Learning Outcomes, hands-on упражнение для модуля 2 и уточнения по доставке учебного data bundle.
  - зафиксированы acceptance criteria, минимальный scope glossary и статус partitioning как legacy-темы вне обязательного трека v1.
- Проверка:
  - просмотрен git diff HEAD~1 -- docs/course_prd.md docs/course_program.md.
  - проверен git diff --cached --stat перед amend.
This commit is contained in:
2026-03-06 23:19:20 +03:00
parent f4a5bf0e2a
commit 7514e5a625
3 changed files with 315 additions and 54 deletions
+28 -10
View File
@@ -1,4 +1,4 @@
# Product Requirements Document (PRD): Учебный курс «Введение в Lakehouse»
# Product Requirements Document (PRD): Учебный курс «Lakehouse без магии»
## 1. Product Vision & Value Proposition
@@ -56,6 +56,8 @@
6. Умеет читать одну и ту же таблицу из `Spark` и `Trino` и понимает, почему это возможно без копирования данных.
7. Умеет выполнить базовые безопасные операции с таблицей: изменение схемы, просмотр snapshot-ов, чтение предыдущего состояния, базовый `compaction` и `vacuum`.
Трассировка этих outcomes на модули и checkpoints фиксируется в [course_program.md](./course_program.md).
## 6. Teaching Principles
**Принцип 1. Практика первична.** Курс не должен превращаться в обзорную лекцию. Теория нужна для объяснения того, что студент делает руками.
@@ -93,9 +95,10 @@
* базовое schema evolution;
* snapshot/time travel на прикладном уровне;
* базовый `compaction/vacuum` с параллелями к `Greenplum AppendOnly`;
* набор практик в Jupyter Notebooks с обязательными заданиями и checkpoints.
* набор практик в Jupyter Notebooks с обязательными заданиями и checkpoints;
* стартовая документация до первого ноутбука: prerequisites, запуск стенда, вход в Jupyter и базовый troubleshooting.
Ориентировочная программа курса вынесена в отдельный документ: **[COURSE_PLAN.md](./COURSE_PLAN.md)**.
Ориентировочная программа курса вынесена в отдельный документ: **[course_program.md](./course_program.md)**.
## 9. Dataset Strategy
@@ -115,6 +118,15 @@
**Методическое решение:** курс строится вокруг одного домена данных, но не требует жесткого сквозного проекта. Основной формат курса - набор связанных практик на одном и том же наборе данных.
**Механика доставки данных в v1:**
* raw-датасет не хранится в репозитории целиком;
* стартовая документация должна давать воспроизводимый способ получить фиксированный учебный набор данных (`Default` или `Extended`) из публичного источника;
* `Taxi Zone Lookup` доставляется тем же способом, что и основной датасет;
* перед началом модуля про raw-данные студент должен иметь локальный data bundle на хосте;
* в модуле про raw-ingest студент загружает уже полученные файлы в raw-зону `MinIO`, а не ищет и не скачивает данные вручную прямо из ноутбука;
* ручная загрузка файлов через UI допускается только как fallback-сценарий, а не как основной путь прохождения.
## 10. User Experience / Learning Flow
Курс строится по модели **"объяснение -> демонстрация -> самостоятельное повторение -> checkpoint"**.
@@ -128,18 +140,21 @@
**Формат прохождения:** желательно с ментором, но курс должен быть самодостаточным и для самостоятельного изучения.
## 11. Success Metrics & Acceptance Criteria
## 11. Product Targets & Acceptance Criteria
**Цели продукта:**
**Ориентиры продукта:**
Это целевые ориентиры курса, но не blocking acceptance criteria для материалов.
1. Студент проходит курс за `~12-15 часов` вдумчивой работы.
2. Студент после курса способен безопасно выполнить базовые операции в Lakehouse-стенде без постоянной внешней помощи.
3. Студент может внятно объяснить ключевые архитектурные принципы Lakehouse на уровне junior/middle interview readiness.
**Acceptance Criteria для учебного результата:**
**Acceptance Criteria для учебных материалов и результата:**
1. Студент проходит обязательные `checkpoints` по урокам.
2. Студент самостоятельно выполняет набор практик на одном датасете, включая:
1. В составе курса есть стартовая документация до первого ноутбука, включая prerequisites, запуск стенда, вход в `Jupyter` и получение учебного data bundle.
2. Студент проходит обязательные `checkpoints` по урокам.
3. Студент самостоятельно выполняет набор практик на одном датасете, включая:
* загрузку raw-данных;
* построение `bronze`;
* построение `silver`;
@@ -148,7 +163,7 @@
* демонстрацию базового schema evolution;
* демонстрацию snapshot/time travel;
* демонстрацию базового `compaction/vacuum`.
3. Студент может своими словами объяснить:
4. Студент может своими словами объяснить:
* что такое `Lakehouse` и чем он отличается от классической БД;
* как разделены `storage`, `catalog`, `compute`;
* что такое `Iceberg` в практическом смысле;
@@ -161,8 +176,10 @@
* использование существующего `docker-compose.yml` (`Spark`, `Trino`, `MinIO`, `PostgreSQL`, `Jupyter`);
* подготовка учебных датасетов и/или инструкций по их загрузке в репозиторий;
* наличие воспроизводимого способа получить учебный data bundle без ручного поиска по внешним сайтам;
* поддержка выполнения запросов к `Trino` из ноутбуков;
* подготовка Jupyter Notebooks как основного формата учебных материалов;
* подготовка Jupyter Notebooks как основного формата практической части курса;
* подготовка стартовой документации для входа в курс до первого запуска ноутбуков;
* наличие воспроизводимых шагов для старта, сброса и повторного прохождения практик.
## 13. Out of Scope (v1)
@@ -172,6 +189,7 @@
* `gold`-слой и полноценные бизнес-витрины;
* `Airflow`, `Kafka`, `NiFi`, `streaming`, `CDC`;
* сложные `MERGE`-сценарии, row-level deletes и update-heavy кейсы;
* партиционирование и `partition pruning` как отдельная учебная тема первой версии;
* глубокий performance tuning;
* production security, governance, multi-user setup;
* Kubernetes / облачное развертывание;