Портал №1 по управлению цифровыми
и информационными технологиями

Definition of Done

Definition of DoneОдно из важных концептуальных понятий DevOps – определение завершения (англ. – Definition of Done). Как и многие другие важные концептуальные понятия DevOps, оно появилось и сформировалось задолго до возникновения этого самого DevOps. Однако именно в DevOps определение завершения развили, продолжили и наполнили дополнительным смыслом. Давайте разберёмся, каким.

О чём, собственно, речь? Умные ребята говорят, что неплохо бы договориться о том, когда работа считается выполненной. Очень важно, говорят, одинаково понимать, что это означает – работа выполнена. Посмотрим на эволюцию такого понимания.

Первая ступень под кодовым названием "совсем, совсем плохо" такова: завершено тогда, когда разработчик сказал, что всё работает. Очень понятно почему это плохо – кто же станет верить разработчику? То, что на его ПК (в среде разработки) код не выдаёт ошибок, либо просто компилируется без существенных замечаний, в реальной жизни мало что означает.

Вторая ступень, чуть лучше: завершено тогда, когда тестировщик после разработчика сказал, что всё работает. Понятно, что это лучше, ведь появилась относительно независимая точка контроля. Однако и этого недостаточно.

Те, кто читал про Agile, скажут, что следующая ступень такова: завершено, когда владелец продукта принял результат разработки. Буквально, читаем в SAFe: "The product owner is the only team member who can accept stories as done. This includes validation that … it meets its Definition of Done". Конечно, для больших ребят команд пришлось картинку усложнить, добавив приёмку на уровне команды (владельцем продукта), системы (менеджерами продукта), решения (менеджерами решения) и релиза (менеджерами решения и релиза), но суть остаётся той же – кто-то в определённый, далёкий от продуктива момент решает, что всё завершено.

Непорядок, конечно же, говорят любители DevOps. Мало ли что там владелец продукта считает. Не он использует продукт, и не он за продукт платит, так не ему и решать. Следующая ступень эволюции, уже согласно DevOps: завершено тогда, когда код работает в продуктиве. Только тогда можно расслабиться (что, разумеется, невозможно, так как уже наступила следующая итерация).

Но и эта ступень не является финальной. Ценители единорогов обязательно добавят, что совсем-совсем правильное определение таково: завершено тогда, когда код работает в продуктиве, а вся сборка, всё тестирование и всё развёртывание выполнены автоматическими средствами.

Definition of doneТаким образом, условный флажок "Готово?" переезжает ещё дальше вправо (см. иллюстрацию выше). И это то хорошее, что с собой приносит DevOps.

Картинка для надёжного запоминания, что пользователь – это самое главное:

definition_of_done

Комментариев: 3

  • Nargiza Suleymanova

    Олег, за картинку отдельное спасибо 🙂 Теперь уж точно не забудем!

  • Ilgizar Talipov

    Ilgizar Talipov

    Линейный процесс из картинки нужно закольцевать в цикл. В центре поместить Definition of Done. Тогда понятно будет, что завершение может возникать на любом этапе при удовлетворении условию.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

DevOps
Kanban
ITSM
ITIL
PRINCE2
Agile
Lean
TOGAF
ITAM