Обзор roadmap: M0–M4 за 6 месяцев
Цель Фазы 1
За ~6 месяцев в режиме 10–15 ч/нед пройти путь от первого коммита до проекта защиты — изолированного приложения в предметной области геологии, построенного на стеке команды DeepGeo. Защита проекта в конце мес. 5/6 открывает Фазу 2 (оплачиваемая работа с доступом к основному репозиторию).
Подход: обучение через строительство
Стажёр с первого дня строит проект защиты. Технологии не изучаются «впрок» — каждая веха добавляет к проекту новый слой, и теория осваивается ровно в объёме, необходимом для текущей задачи.
M0: окружение + первый коммит
M1: парсер данных → доменные объекты ← основа проекта
M2: + сохранение в PostgreSQL через EF Core ← данные переживают перезапуск
M3: + Web API (REST/OData) ← проект говорит по HTTP
M4: + Blazor UI + подготовка к защите ← готовое приложение
Каждая веха заканчивается контрольной точкой: проект компилируется, тесты проходят, новая функциональность работает.
Вехи и целевые навыки
| Веха | Срок | Что строится | Целевые навыки |
|---|---|---|---|
| M0 | Нед. 1–2 | Окружение, доступы, пустой репозиторий | Git-база, командная строка, IDE, чтение Swagger |
| M1 | Мес. 1–2 | Парсер лабораторных данных (CSV/JSON) → доменная модель | C# база: типы значений/ссылочные, null, исключения, дженерики, LINQ, ООП, xUnit |
| M2 | Мес. 3 | EF Core + PostgreSQL, миграции | EF Core, прямой доступ к DbContext, миграции, Fluent API |
| M3 | Мес. 4 | Web API поверх модели | ASP.NET Core, OData, NSwag, FluentValidation, Mapperly, Ardalis.Specification |
| M4 | Мес. 5–6 | Blazor UI + подготовка к защите | Blazor Server, Radzen, code review-готовность, демо |
Режим и реалистичность
10–15 часов в неделю — это ориентир на «худшую неделю с сессией». В хорошие недели можно делать больше, но программа выстроена так, чтобы проходить при минимальном ресурсе.
При 12 ч/нед за 6 месяцев получается ~290 часов чистого времени. Этого достаточно, чтобы под руководством наставника построить проект защиты уровня junior.
Стек команды
Полный стек, к которому готовится стажёр. Зафиксирован в src/GeotimLab.*/GeotimLab.*.csproj:
| Слой | Технологии | Веха |
|---|---|---|
| Платформа | .NET 8, C# 12 | M0+ |
| Архитектура | Clean Architecture + DDD, вертикальные slices | M2+ |
| CQRS | MediatR | M3 (знакомство), Фаза 2 |
| БД | PostgreSQL через EF Core 8 (прямой DbContext, без репозиториев) | M2 |
| Маппинг | Riok.Mapperly | M3 |
| Валидация | FluentValidation | M3 |
| Спецификации | Ardalis.Specification | M3 |
| UI | Blazor Server + WebAssembly, Radzen | M4 |
| Логирование | Serilog | M3 (знакомство) |
| Тесты | xUnit | M1+ |
| API | ASP.NET Core + OData, NSwag | M3 |
Предметная модель
Проект защиты строится на реальных агрегатах из домена DeepGeo:
Project → Borehole → Sample → Sample_Lab → ParameterValue
Project— инженерно-геологический проектBorehole— горная выработка (скважина)Sample— образец грунтаSample_Lab— лабораторный образец (с результатами испытаний)ParameterValue— значение параметра (например, влажность 12.5%)
Связи — только по FK, без навигационных свойств. Это DDD-конвенция команды, и она соблюдается в проекте защиты с самого начала. Сверка корректности полей модели — с домен-экспертом.
QA-трек параллельно
С первой недели стажёр работает с багами в geotimlab.wiki:
- Заводит репорты в
vault/bugs/по фиксированной форме - Классифицирует по severity и context
- Раз в неделю собирает метрики-агрегаты в
vault/reports/
QA-трек идёт параллельно все 6 месяцев и оценивается на гейте наравне с кодом проекта. Детально — в QA-треке.
Чего НЕ будет в Фазе 1
Чтобы уложиться в 6 месяцев при 10–15 ч/нед, некоторые темы выносятся за рамки:
- Мультитенантность — специфика DeepGeo, изучается в Фазе 2.
- Domain Events и продвинутый DDD (агрегаты как таковые, value objects, инварианты) — знакомство в Фазе 2.
- CQRS через MediatR — знакомство на уровне «что это и зачем» в M3, практика — Фаза 2.
- Blazor WebAssembly — только Blazor Server в M4.
- Docker, CI/CD, деплой — за рамками Фазы 1.
- Аутентификация, JWT, безопасность — за рамками.
Это не означает, что темы неважны — они изучаются после гейта защиты, при работе с основным репозиторием.
Критерии успеха к гейту
К концу M4 стажёр должен (детально — в чек-листе):
- Иметь работающий проект защиты: Blazor UI → Web API → EF Core → PostgreSQL
- Проект покрыт unit-тестами (xUnit)
- Уметь объяснить архитектуру своего решения и направление зависимостей
- Знать принципы Clean Architecture и DDD на уровне применения к своему коду
- Иметь стабильный поток баг-репортов и метрик в QA-треке
- Демонстрировать инженерную зрелость: git-гигиена, обработка ошибок, читаемый код
Дальше
- ➡️ Проект защиты — что именно строится во всех вехах
- ➡️ QA-трек — параллельный поток работы с багами
- ➡️ M0 — старт — первая веха, с чего начать practically
- 📚 Ресурсы — материалы для самостоятельного изучения
- ✅ Чек-листы — критерии прохождения вех и гейта