Определение «Готово» для нескольких групп разработчиков, работающих над одним и тем же продуктом.

12

Один из скрам-тестов содержит вопрос об определении, лучше всего описывающем «Готово», когда несколько групп разработчиков выполняют работу над одним и тем же продуктом.

Правильный ответ гласит, что эти команды разработчиков должны иметь такое определение «Готово», которое может сделать их совместную работу потенциально выпуская.

Что не ясно для меня из правильного ответа на этот тест, так это:

  • могут ли команды иметь разные определения «Готово»? В какой степени?

источник
Подумайте о команде, которая напрямую выпускает продукт, а также о той же работе, которую используют другие команды.
Ян
Или, например, английские версии программного обеспечения могут быть отправлены до перевода на французский язык.
Ян
Такая путаница - вот почему я никогда не говорю, что что-то сделано. Вместо этого я всегда говорю точно, что мы сделали. Решить, если что-то сделано, это переговоры. Не декларация. Независимо от того, какое определение вы придерживаетесь.
candied_orange

Ответы:

16

Когда все команды определяют «Готово» таким образом, который учитывает работу, выполненную другими командами, вы гарантируете, что функциональность завершена.

Если каждая команда определяет «выполнено» по-разному и ожидает, что другие команды узнают об этом определении, вы столкнетесь с несколькими проблемами:

  • Когда возникает проблема интеграции, ни одна команда не захочет взять на себя ответственность за ее устранение. В конце концов, это было «сделано», когда они начали объединять вещи, поэтому это должно быть что-то с работой другой команды.

  • Когда у вас больше, чем несколько команд, становится трудно запомнить «определение выполненного» каждого, особенно когда есть различия между командами.

  • Определение «не выполнено» не гарантирует, что работа по интеграции функционирует должным образом.

В принятом ответе четко говорится, что ничего не сделано, пока работа всех команд не будет интегрирована и не будет функционировать должным образом. Он должен быть доступен для повторного использования и, таким образом, может быть полностью принят конечными пользователями.


Редактировать в ответ на комментарии: это не означает, что у каждой команды одно и то же определение. Это означает, что частью определения каждой команды «сделано» является большая система, а другие интегрирующие компоненты не нарушаются.

Грег Бургардт
источник
Прошу прощения, но мне кажется, что правильный ответ ничего не говорит о единственном определении «Готово». Более того, я не уверен, что в него должны быть включены особенности интеграции. Скажите, если две команды работают над совершенно разными реализациями одного и того же API, предназначенного для разных клиентов? Однако формально они все еще работают над тем же продуктом.
2
@ Andremoniy, правильный ответ действительно ничего не говорит об одном DoD, но это означает, что DoD всех команд должен иметь общий элемент, чтобы весь продукт оставался функциональным. Ваш пример того, как разные команды работают над разными реализациями API, не убеждает меня, что это можно назвать одним продуктом.
Барт ван Инген Шенау
2
@ Andremoniy, как только одна команда зависит от работы другой команды, могут возникнуть (будут) проблемы интеграции, даже если части развернуты в разных местах. Это также проблема интеграции, например, когда один микро-сервис использует другой микро-сервис неожиданным, возможно, некорректным способом.
Барт ван Инген Шенау
2
@Andremoniy: Вы правы, что эти две команды не должны использовать один и тот же DoD, но они могут разделить правило, согласно которому любые изменения не должны негативно влиять на другую команду (что в большинстве случаев сработает, если работа связана с изменениями интерфейса с задней Конечный сервер).
Барт ван Инген Шенау
1
@Andremoniy: Спасибо за ваши комментарии. Я обновил свой ответ для решения некоторых вопросов, которые вы подняли.
Грег Бургхардт
6

Я мог бы представить ситуацию, когда одна команда определяет «Готово» как «Разработка завершена» (т. Е. Код, объединенный с репозиторием), а другая определяет его как «Тестирование выполнено» (т. Е. Код, выпущенный для Q / A и протестированный).

Это по своей сути приведет к серьезным проблемам, потому что общее состояние продукта будет в значительной степени неопределенным, и, следовательно, будет трудно сказать, сможем ли мы его выпустить или нет.

Павел Горчинский
источник
Считаете ли вы правильный ответ утверждением, что все команды должны иметь одинаковое определение?
Да, я согласен с тем, что должно быть общее определение по простой причине. Сложный проект можно рассматривать как древовидную структуру, в которой подпроекты (например, микросервисы) создают общий продукт (например, MyCool ERP). Таким образом, в данный момент вы хотите знать, может ли быть выпущена новая версия продукта. Но если у вас есть разные DoD для отдельных подкомпонентов, то эту информацию становится чрезвычайно трудно вывести.
Павел Горчинский