Читаем Agile: оценка и планирование проектов полностью

Разбив исходную историю таким образом, команда создала около десятка пользовательских историй. Каждая новая история имела теперь такой размер, что ее можно было реализовать в течение двухнедельной итерации. Это дает нам первое правило:

Разбивайте большие истории по границам данных, поддерживаемых историей.

Разбивка пользовательской истории по границам данных — очень полезный подход, который обязательно должен быть в вашем портфеле инструментов. Приведу еще один пример. Несколько лет назад я работал с командой, разрабатывавшей автоматизированную подсистему факсимильной связи. Команда столкнулась с большими пользовательскими историями относительно того, как сконфигурировать систему. Эти истории удалось значительно уменьшить, разделив поддержку внутриамериканских и международных телефонных номеров.

В некоторых случаях большую историю можно значительно уменьшить, удалив из основной истории обработку исключительных или сбойных ситуаций. Допустим, вы работаете над системой для обработки погашений кредитов и имеете такую пользовательскую историю: «Как заемщик я хочу иметь возможность погасить мой кредит». Когда команда обсуждала эту историю, владелец продукта подчеркнул, что в случае нечаянной отправки заемщиком чека, превышающего сумму непогашенного остатка, необходимо распечатать чек на возвращаемую сумму и отправить обратно заемщику. Он добавил, что это относится только к суммам более $2. Эту историю можно разбить на следующие, более мелкие истории:

• Как заемщик я хочу иметь возможность погасить мой кредит. Примечание: допускаются переплаты.

• Как заемщик я в случае ненамеренной переплаты получаю возврат излишка, если он превышает $2.

<p>Разбивка по операционным границам</p>

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

В первой итерации команда работала над созданием базового пользовательского интерфейса, включая примерно половину полей с поисковыми критериями, которые располагались в верхней части окна. Она также разрабатывала части средства формирования запросов, которые работали с этими полями. Нижняя часть окна должна была содержать сложную таблицу для воспроизведения данных. Это было слишком много для одной двухнедельной итерации. Поэтому в конце первой итерации в этой части окна отображалось простое сообщение вроде: «В результате этого поискового запроса найдено 312 совпадений». Конечно, подобное сообщение было не слишком полезно для пользователя, который хотел знать, что именно крылось за этими 312 совпадениями. Однако оно представляло значительный прогресс и делало этот прогресс видимым всем, кто был заинтересован в проекте.

Во второй итерации этого проекта добавлялась таблица для воспроизведения данных, в третьей — все оставшиеся поля для поисковых критериев в верхней части окна. Итерации были приоритизированы таким образом из-за наличия значительной неопределенности в отношении количества времени, необходимого на разработку таблицы для воспроизведения данных. Устранение этой неопределенности во второй итерации сочли более целесообразным, чем сохранение ее до третьей итерации. Поскольку команда уже получила хорошее представление о том, что необходимо для создания средства формирования запросов, по ее мнению, эта работа уменьшала риск. Это подводит нас к следующему правилу:

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

Общий подход к этому заключается в разбивке истории по границам обычных CRUD-операций — создание, чтение, редактирование и удаление. Чтобы понять, как это работает, предположим, что вы создаете систему SwimStats, а команда готова к реализации такой истории: «Как тренер я могу управлять пловцами в моей команде». Команда разработчиков обсуждает историю с тренерами/пользователями и выясняет, что тренер под этим понимает возможность добавлять новых пловцов, редактировать существующие данные по пловцам и удалять записи о пловцах, которые ушли из команды. Подобная первоначальная история легко разбивается на три более мелкие истории:

• Как тренер я могу добавлять новых пловцов в мою команду.

• Как тренер я могу редактировать информацию о пловцах, входящих в мою команду.

• Как тренер я могу удалять записи о пловцах, которые больше не входят в мою команду.

Перейти на страницу:

Похожие книги

Свой путь
Свой путь

Стать студентом Университета магии легко. Куда тяжелее учиться, сдавать экзамены, выполнять практические работы… и не отказывать себе в радостях студенческой жизни. Нетрудно следовать моде, труднее найти свой собственный стиль. Элементарно молча сносить оскорбления, сложнее противостоять обидчику. Легко прятаться от проблем, куда тяжелее их решать. Очень просто обзавестись знакомыми, не шутка – найти верного друга. Нехитро найти парня, мудреней сохранить отношения. Легче быть рядовым магом, другое дело – стать настоящим профессионалом…Все это решаемо, если есть здравый смысл, практичность, чувство юмора… и бутыль успокаивающей гномьей настойки!

Александра Руда , Андрей В. Гаврилов , Константин Николаевич Якименко , Константин Якименко , Николай Валентинович Куценко , Юрий Борисович Корнеев

Фантастика / Современная русская и зарубежная проза / Попаданцы / Юмористическая фантастика / Юмористическое фэнтези / Деловая литература
42 истории для менеджера, или Сказки на ночь от Генри Минцберга
42 истории для менеджера, или Сказки на ночь от Генри Минцберга

В своей новой книге выдающийся теоретик менеджмента Генри Минцберг предлагает радикально переосмыслить существующие стратегии управления организацией. Противник формального подхода в любой работе, автор рассуждает на «неудобные» темы: отсутствие «души» в современных компаниях; важность традиций перед лицом инноваций; ответственность за качество товаров и услуг; контроль над положением дел на «низших» уровнях иерархии.Как всегда, Минцберг предлагает дерзкие и резонансные решения, иллюстрирующие извечную мудрость: «Всё гениальное – просто». А предложенная автором стратегия «сообщественности» – шанс для многих руководителей вдохнуть в свою компанию новую жизнь.Адресовано менеджерам любого звена, государственным служащим на руководящих должностях и всем, кому небезразлична судьба команды, в которой они работают.В формате a4.pdf сохранен издательский макет.

Генри Минцберг

Деловая литература / Зарубежная деловая литература / Финансы и бизнес