Для чего мы нарезаем крупные пользовательские истории на более мелкие? С виду может показаться, что мы выполняем лишнюю и никому не нужную работу, но так ли это? В этой статье я постараюсь дать ответ на этот в одном из множества контекстов — контексте ценности, поставляемой клиенту и бизнесу.
Хорошие пользовательские истории следуют правилам, описанным Биллом Вейком (William C. Wake), которые мы все знаем как аббревиатуру INVEST:
- source link
essay by children
follow
women viagra canada
5 page essay on respecting
how often do you use viagra
where to buy natural viagra
source site
go
thesis on marketing mix strategies
how to write an outline for an essay mla
https://easternpropane.com/savings/vcan-viagra-be-mixed-in-soft-drinks-for-women/87/
bulfinch's greek and roman mythology essays
https://willcoxwinecountry.org/linkedin/ks3-english-exam-papers-year-8/47/
https://ssmf.sewanee.edu/experience/bio-research-papers/250/
public places essay
sildenafil citrate 100mg and dapoxetine 60mg
https://astro.umbc.edu/blog/where-can-i-get-viagra-online-uk/199/
https://complextruths.org/case/essay-crater-online/68/
title of music in essay
consequncia viagra
6 grade math homework help
does viagra cause delayed ejaculation
https://stonecottagegardens.com/fda/levitra-patent-expiry-uk/14/
does humor help in difficult situations essay
sildenafilo precio chile
expectation and what happened college essay
go
top resume writing service reviews
get link
viagra secret ingredient
Independent (независимая)
Историю можно реализовать отдельно от других историй и она при этом будет нести ценность. Приятный бонус — независимые истории проще планировать. - Negotiable (обсуждаемая)
История — не детальное, подписанное ТЗ. Все детали в начале не нужны и могут быть добавлены позже, как результат сотрудничества с Клиентами и заинтересованными лицами. - Valuable (полезная, несущая ценность)
Истории должны быть полезны для бизнеса и для клиента. Не для разработчиков, тестировщиков и админов. - Estimable (поддающаяся оценке)
Истории используются для планирования спринтов и релизов. Свойство оцениваемости можно рассматривать как функцию от понятности, появляющейся в процессе обсуждения и от компактности, ведь меньший объем работы проще понять и оценить. - Small (компактная)
Не более, чем на спринт. Хорошо, если в 2-недельный спринт можно взять 5-10 историй. И динамику видно и, если не успеем последнюю (с самым низким приоритетом), то 9 в продукт все равно войдут. Если же в спринте одна история и команда не смогла, то команда не смогла спринт целиком. - Testable (можно проверить)
Если историю можно проверить, значит можно сказать, что история выполнена.
Для ответа на главный вопрос статьи следует копнуть в компактность и полезность. Требование к компактности заставляет нас декомпозировать крупные истории. Получившиеся в результате декомпозиции истории точно так же должны удовлетворять требованиям INVEST, то есть ценностность для них никто не отменяет.
Новички нередко начинают нарезать истории по слоям: интерфейс, база данных, шина, компонент авторизации, журналирование. Такие истории действительно компактные, но не независимые и их ценность вызывает серьезные сомнения. Иногда на первых сессиях по составлению историй члены команды впервые узнают, кто их настоящие клиенты, что им нужно и что добавление в таблицу новой колонки «номер купона», реализация сервиса и добавление текстового поля на страницу не то же самое, что «получение скидки на участие в конференции» 🙂
И раз речь зашла про ценность, пусть у вас есть история на три спринта с высокой ценностью. Начинаем нарезать и в обсуждении выясняем, что основную ценность несет совсем небольшая, INVEST-like часть. Бинго! Мы сократили сроки, оставив уровень ценности для бизнеса и клиента на высоком уровне.
Теперь на примере. Дано:
- Большая история «Я, как клиент банка, могу перевести средства со своего счета другому клиенту Банка…»
- Какие-то еще истории с приоритетом пониже
- Скорость команды примем 100 Story Point’ов (SP) в спринт
- Критериями оценки ценности можно пренебречь
Если мы будем выполнять задачи в указанном порядке, то в первый спринт, если не случится неожиданностей, мы поставим 100 единиц ценности, во второй еще 100. Но история нам видится большой и мы решаем нарезать ее на более мелкие:
Выходит, что мы заложили много всего разного, что можно разнести по независимым историям и основную ценность сейчас нам принесет перевод по номеру счета. Остальное важно и нужно, но можно отложить. Перетряхиваем бэклог и получаем:
Теперь в первый спринт мы поставим 190 единиц ценности, во второй еще сколько-то, но суть в том, что мы за счет только лишь декомпозиции истории в первый спринт принесем ценности столько же, сколько нам принесли бы два спринта, следуй мы первоначальному плану. Поэтому, старайтесь нарезать, держите INVEST в уме и сокращайте время вывода изменений на рынок, увеличивая при этом ценность.
Ниже несколько полезных ссылок по теме:
INVEST in Good Stories, and SMART Tasks — описание INVEST
Patterns for Splitting User Stories — не потерявшая своей актуальности статья 2009-го года от Ричарда Лоуренса
Как разделять истории пользоватей — четкий и понятный алгоритм действий