Портал №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. Тогда понятно будет, что завершение может возникать на любом этапе при удовлетворении условию.


Добавить комментарий для Nargiza SuleymanovaОтменить ответ

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

DevOps
Kanban
ITSM
ITIL
PRINCE2
Agile
Lean
TOGAF
ITAM