В чем разница между Definition of Ready (DoR) и Definition of Done (DoD) в Agile?

Ответ

Definition of Ready (DoR) и Definition of Done (DoD) — это два критических соглашения в Agile, которые определяют качество работы на разных этапах.

Definition of Ready (DoR)

Критерии, которым должна соответствовать задача (User Story), прежде чем команда возьмет её в работу.

Цель: Убедиться, что задача понятна, реализуема и готова для эффективной разработки. Это входной фильтр.

Типичные критерии DoR:

  • ✅ Требования четко сформулированы и приняты Product Owner.
  • ✅ Критерии приемки (Acceptance Criteria) определены и измеримы.
  • ✅ Задача оценена (стори поинты или часы).
  • ✅ Дизайн/макеты готовы (если применимо).
  • ✅ Зависимости от других задач или команд выявлены и разрешены.
  • ✅ Задача может быть выполнена одним спринтом.

Definition of Done (DoD)

Список обязательных действий, которые должны быть выполнены, чтобы задача считалась полностью завершенной и готовой к поставке.

Цель: Гарантировать целостность и качество инкремента продукта. Это выходной фильтр.

Типичные критерии DoD:

  • ✅ Код написан и соответствует стандартам команды.
  • ✅ Код прошел ревью (peer review).
  • ✅ Все автоматические тесты (unit, integration) написаны и проходят.
  • ✅ Ручное тестирование (QA) завершено успешно.
  • ✅ Код замержен в основную ветку (main/master).
  • ✅ Документация (комментарии, README) обновлена.
  • ✅ Функциональность развернута на staging-окружении (если применимо).

Ключевое отличие

  • DoR проверяется ПЕРЕД началом работы над задачей в спринте. Если DoR не выполнен, задача не берется в бэклог спринта.
  • DoD проверяется ПОСЛЕ завершения работы. Если DoD не выполнен, задача не считается сделанной, даже если код написан.

Ответ 18+ 🔞

А, слушай, про эти ваши DoR и DoD! Ну, это ж классика, как «Муму» у Тургенева, только без утопления собаки, но с тем же драматизмом, блядь.

Вот представь картину: стоит команда, как Герасим немой, и смотрит на кучу задач. А задачи эти — как те щенки, непонятно, живые или нет. Так вот, Definition of Ready (DoR) — это как проверка, блядь: а дышит ли этот щенок-задача вообще? Можно его в работу брать, или он ещё соплей обмазан?

DoR — это входной фильтр, ёпта. Чтоб не получилось как в той истории: «О, задача простая!» — начинаем делать, а там, сука, дизайнов нет, требования — пизда полная, а от другой команды жди ответа до второго пришествия. DoR говорит: «Мужики, стопэ. Эта история готова к тому, чтобы её ебашить?».

Типичные критерии DoR, на которые надо смотреть, как ядрёна вошь:

  • Требования не просто написаны, а их Product Owner прочитал и не сказал «чё за хуйню вы тут написали?».
  • Критерии приемки есть, и они не «ну чтобы работало», а конкретные шаги, которые можно проверить. «Кнопка должна быть зелёной» — это критерий. «Кнопка должна вызывать чувство глубокого удовлетворения» — это, блядь, уже не критерий, а пиздёж.
  • Задачу оценили. Не «ой, да это на полчаса», а по-честному, с обсуждением.
  • Дизайн готов. Не «в голове у Васька есть», а в Фигме, чтоб тыкать пальцем.
  • Зависимости выявлены. Не «ой, а мы и не знали, что бэкенд ещё про это не думал!».
  • Задача влезет в спринт. Не такая, что «перекинется на следующий», а именно сделается. А то вечный «овердохуища работы на два спринта в один запихнули».

Если хоть один пункт — хуй, а не пункт, задача в спринт не идёт. Всё. Как Герасим сказал бы: «Мууу» (в смысле, «нет»).

А теперь, Definition of Done (DoD) — это уже трагедия в финале, но со счастливым концом, если всё сделать правильно. Это когда ты уже вроде всё сделал, код написал, но задача — не сделана. Потому что DoD — это священный список «а что ещё надо сделать, чтоб не было стыдно».

DoD — это выходной фильтр, ёбаный в рот. Это когда ты не можешь сказать «я сделал», пока не выполнил ВСЁ из списка. Иначе это как сказать «я постирал», а вещи в стиралке мокрые лежат, сука.

Типичные критерии DoD, без которых — пиздец и позор:

  • Код написан? Написан. А стандарты кода соблюдены? Или там один сплошной говнокод, как после бурной ночи?
  • Код прошёл ревью? Не просто «Васька глянь», а нормально, с комментами.
  • Тесты написаны и проходят? Все, блядь, а не только один, который ты запустил, чтоб совесть отделать.
  • Ручное тестирование пройдено? QA не нашёл багов, от которых глаза на лоб лезут?
  • Код в основной ветке? Не валяется в какой-то левой ветке, про которую все забыли.
  • Документация обновлена? Чтоб через месяц не гадать, что эта функция делает и зачем ей параметр isFucked.
  • На staging задеплоено (если надо)? Чтоб показать заказчику не скриншот, а реально работающую хрень.

Так в чём разница, блядь? Она же очевидна!

Представь себе спринт — это такой забег.

  • DoR — это проверка на старте: а кроссовки ты надел? А номер прикрепил? А маршрут изучил? НЕТ? НАХУЙ ИДИ, НЕ ГОТОВ.
  • DoD — это проверка на финише: а дистанцию всю пробежал? А чип финишный зарегистрировал? А не срезал путь через кусты? НЕТ? НЕ ЗАСЧИТАНО, ИДИ ДОБЕГАЙ, ПИДОРАС ШЕРСТЯНОЙ.

DoR — это «готовы ли мы начать?». DoD — это «точно ли мы закончили?».

Если DoR — хуйня, то начинаешь делать непонятно что, и спринт превращается в ад, где все орут друг на друга. Если DoD — хуйня, то вроде как сделали, а продукт — сырой, бажный кусок говна, который нельзя показывать людям.

Вот и вся философия, блядь. Два простых списка, которые спасают от хаоса и чувства глубокого профессионального неудовлетворения. А без них — это как Герасим без Муму: вроде сила есть, а нихуя не можешь объяснить.