Перейти к содержанию

Обзор 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
  • 📚 Ресурсы — материалы для самостоятельного изучения
  • ✅ Чек-листы — критерии прохождения вех и гейта