Книга: Scrum и XP: заметки с передовой
Технические истории
Технические истории
А теперь ещё одна сложная проблема: технические истории. Это нефункциональные требования, или как их там ещё называют.
Я имею в виду всё, что должно быть сделано, но невидимо для заказчика, не относится ни к одной user story, и не даёт прямой выгоды product owner’у
Мы называем это «техническими историями».
Например:
Установить сервер непрерывной интеграции
o Почему это надо сделать? Потому, что это сэкономит много времени разработчикам и снизит риск проблемы «большого взрыва» при интеграции в конце итерации.
Описать архитектуру системы
o Почему это надо сделать? Потому, что разработчики часто забывают общую архитектуру и поэтому пишут несогласованный код. Нужен документ, предоставляющий всем одинаковую общую картину.
Рефакторинг слоя доступа к данным
o Почему это надо сделать? Потому, что слой доступа к данным стал очень запутанным, и разработчики теряют много времени на то, чтобы разобраться и исправить возникающие дефекты. Рефакторинг сохранит время всей команды и повысит устойчивость системы.
Обновить Jira (систему учёта дефектов)
o Почему это надо сделать? Текущая версия очень нестабильная и медленная: обновление сохранит время всей команде.
Имеют ли смысл эти истории? Или это задачи не связанные ни с одной историей? Кто задаёт приоритеты? Нужно ли вовлекать сюда Product owner’а?
Мы попробовали различные варианты работы с техническими историями. Мы пробовали считать их самыми обычными user story. Это была неудачная идея: для Product owner’а приоритезировать их в product backlog’а было всё равно, что сравнить тёплое с мягким. По очевидным причинам технические истории получали самый низкий приоритет с объяснением: «Да, ребята, несомненно, ваш сервер непрерывной интеграции — очень важная штука, но давайте сперва реализуем кое-какие прибыльные функции? После этого вы можете прикрутить вашу техническую конфетку, окей?»
В некоторых случаях product owner действительно прав, но чаще все-таки нет. Мы пришли к выводу, что product owner не всегда компетентен, чтобы идти на компромисс. И вот что мы делаем:
1. Стараемся избегать технических историй. Ищем способ превратить техническую историю в нормальную историю с измеряемой ценностью для бизнеса. В таком случае у Product owner’а больше шансов найти разумный компромисс.
2. Если мы не можем превратить техническую историю в обычную, смотрим нельзя ли включить эту работу в уже существующую историю. Например, «рефакторинг доступа к данным» мог бы стать частью истории «редактировать пользователя», поскольку она подразумевает работу с данными.
3. Если оба подхода не прошли, отмечаем это как техническую историю и храним список таких историй отдельно. Пусть product owner видит список, но не редактирует. В переговорах с product owner'ом используем параметры «фокус-фактора» и «прогнозируемой производительности» и выделяем время в спринте для реализации технических историй.
Пример (диалог очень похож на то, что случилось во время одного из наших планирований спринта).
Команда: «У нас есть кое-какие внутренние технические работы, которые должны быть сделаны. Мы бы хотели заложить на это 10 % всего времени, т. е. снизить фокус-фактор с 75 % до 65 %. Это возможно?»
Product owner: «Естественно, нет! У нас нет времени!»
Команда: «Хорошо, давайте посмотрим на наш последний спринт (все бросают взгляд на график производительности на белой доске). Наша прогнозируемая производительность была 80, но реальная производительность оказалась 30, верно?»
Product owner: «Именно! У нас нет времени на внутренние технические работы! Нам нужен новый функционал!»
Команда: «Хорошо. Но причина ухудшения нашей производительность в том, что мы тратим слишком много времени на создание полной сборки для тестирования».
Product owner: «Ну и что?»
Команда: «А то, что производительность и дальше будет такой низкой, если мы ничего не сделаем».
Product owner: «Да … и что вы предлагаете?»
Команда: «Мы предлагаем выделить примерно 10 % следующего спринта на установку билд сервера и другие вещи, чтобы сделать интеграцию менее болезненной. Это, скорее всего, увеличит производительность всех последующих спринтов как минимум на 20 %!»
Product owner: «Серьёзно? Почему же мы это не сделали на предыдущем спринте?!»
Команда: «Хм… потому что вы не захотели, чтобы мы это сделали…»
Product owner: «О! Ммм…, ладно, тогда логично, если вы это сделаете сейчас!»
Конечно, есть и другой вариант: не вести переговоры с product owner'ом по поводу технических историй, а просто поставить его перед фактом, что у нас фокус-фактор такой-то. Но это не правильно даже не попытаться достичь компромисса.
Если product owner оказался сообразительным и компетентным (нам в своё время с этим действительно повезло), я бы рекомендовал информировать его как можно лучше и дать ему возможность определять общие приоритеты. Ведь прозрачность — это один из основополагающих принципов Scrum'а, верно?
- Как мы планируем спринт
- Почему без product owner’а не обойтись
- Почему качество не обсуждается
- Планирование спринта, которое никак не заканчивается
- Распорядок встречи по планированию спринта
- Определяем длину спринта
- Определение цели спринта
- Выбор историй, которые войдут в спринт
- Как product owner может влиять на то, какие истории попадут в спринт?
- Как команда принимает решение о том, какие истории включать в спринт?
- Почему мы используем учетные карточки
- Критерий готовности
- Оценка трудозатрат с помощью игры в planning poker
- Уточнение описаний историй
- Разбиение историй на более мелкие истории
- Разбиение историй на задачи
- Выбор времени и места для ежедневного Scum’а
- Когда пора остановиться
- Технические истории
- Как мы используем систему учёта дефектов для ведения product backlog’а
- Свершилось! Планирование спринта закончено!
- Проверьте технические особенности
- Из истории вычислительной техники
- Из истории персональных компьютеров
- Глава десятая. Из истории файловых систем
- Технические аспекты раскрутки во внутреннем пространстве сайта
- Глава 76 Создайте уникальное торговое предложение (УТП) на основе своей истории
- 1.2. Основные технические характеристики компьютера
- 36. Истории потребителей и самореализованный покупатель
- Часть 4 Российский бизнес: истории развития
- Глава 10. Истории готовят как торты
- Блок № 3. Истории
- Глава 7. Как нужно рассказывать истории