Раздел описывает организацию инженерной работы: от возникновения потребности и исследования задачи до проектирования, реализации, проверки, выпуска и последующего улучшения системы.
Материалы раздела рассматривают управление требованиями, планирование, совместную разработку, контроль версий, code review, тестирование, документацию, технические решения и взаимодействие инженеров с другими участниками продукта.
Основные направления
- Жизненный цикл инженерной работы — discovery, delivery, сопровождение, обратная связь и непрерывное улучшение процесса и системы.
- Требования и постановка задач — цели, ограничения, функциональные и нефункциональные требования, критерии приёмки, декомпозиция и трассируемость изменений.
- Планирование и управление потоком работы — backlog, приоритеты, оценки, зависимости, риски, WIP, lead time, cycle time и координация поставки.
- Совместная разработка и контроль версий — Git, ветвление, commits, pull requests, code review, владение кодом и интеграция изменений.
- Качество и проверка решений — стратегия тестирования, автоматические проверки, статический анализ, критерии готовности и предотвращение дефектов.
- Технические решения и документация — исследования, прототипы, RFC, ADR, спецификации, архитектурные решения и поддержание актуального инженерного контекста.
- Командное взаимодействие и ответственность — роли, зоны ответственности, коммуникация, обратная связь, передача знаний и взаимодействие между командами.
- Измерение и улучшение процесса — инженерные метрики, ретроспективы, анализ причин задержек и ошибок, автоматизация и управление техническим и процессным долгом.
Основные вопросы раздела
Материалы раздела должны помогать отвечать на следующие вопросы:
- Как превратить потребность или проблему в проверяемую инженерную задачу?
- Какие требования, ограничения и критерии завершения необходимо зафиксировать?
- Как декомпозировать крупное изменение на небольшие поставляемые части?
- Как оценивать работу и управлять неопределённостью, рисками и зависимостями?
- Как организовать ветвление, code review и безопасное объединение изменений?
- Какие проверки необходимы до признания изменения готовым?
- Когда использовать исследование, spike, прототип, RFC или ADR?
- Как сохранять контекст решений и передавать знания между участниками?
- Какие роли и зоны ответственности необходимы для владения системой?
- Как измерять скорость потока работы без ухудшения качества?
- Как находить причины задержек, дефектов и повторной работы?
- Какие повторяемые действия следует стандартизировать и автоматизировать?
Границы раздела
Раздел посвящён организации инженерной работы, совместной разработке и управлению изменениями программных систем.
Потребности пользователей, бизнес-цели и продуктовые показатели рассматриваются в разделе пользователя и бизнеса. Принципы организации кода и архитектуры относятся к разделу проектирования программного обеспечения. Технические процессы сборки, выпуска и развёртывания рассматриваются в разделе доставки и эксплуатации. Особенности тестирования и инструментов конкретных языков относятся к разделу программирования и сред выполнения.