Към съдържанието
wannacode

Разбиване на голямо стори

Накратко: Голямото стори се реже отвесно: всяко парче минава през всичко нужно и дава нещо, което някой може да опита. Моделите подсказват къде да режеш: по стъпки, по правила, по данни, по сложност, по качество, по операции. Слоят (фронтенд, бекенд, база) не е стори.

Проблем

Три седмици и нищо за показване

Сторито е „Като клиент искам да върна продукт и да си получа парите.“ Голямо е, затова екипът го дели: един прави екрана за връщане, друг записа в базата, трети връщането на парите.

След две седмици екранът е готов, но не прави нищо. Базата е готова, но никой не я вижда. Собственикът пита „може ли да видя връщането?“ и отговорът е „още не“. На третата седмица всичко се свързва, и тогава QA намира, че 14-те дни се броят от поръчката, а не от получаването.

Парчетата бяха малки. Но никое не можеше да се опита само.

Идеята

Отвесно, не на пластове

Мисли за сторито като за торта на пластове: екран, обработка, база. Разбиването по слоеве реже тортата хоризонтално. Получаваш цял пласт крем и никой не може да го изяде като торта.

Доброто разбиване реже отвесно: всяко парче има от всеки пласт колкото трябва и дава нещо, което някой може да опита. За връщането първото отвесно парче е „клиентът заявява връщане до 14 дни от получаването“. То е малко. Но собственикът може да го види в първата седмица, а QA може да провери границата на 14-те дни веднага.

Това се казва разбиване на стори (story splitting): голямото стори се реже на по-малки, всяко от които пак е стори по INVEST.

По-точно, за любопитните

Метафората с тортата е стара: Бил Уейк я ползва още в статията си за INVEST. На английски парчето се казва vertical slice, а разбиването и slicing.

Идеята

Къде да режеш

Няма едно правилно рязане, но има модели, които се повтарят. Ето шест, с магазина:

Модел Кога пасва В магазина
По стъпките на работния поток сторито е процес с няколко стъпки връщане: заявка, пратка обратно, склад, пари
По правилата на бизнеса едно действие, много правила крайната сума: доставка, промо код, лоялност, кое важи
По вариантите на данните същият път, различни данни продукт с един размер, после с размер и цвят
Първо основният случай има основен случай и много усложнения търсене по име, после филтри и подсказки
Първо да работи, после качеството изискване за бързина или натоварване плащане, после плащане при 2 000 клиенти едновременно
По операциите „управлявам“ крие няколко действия промо кодове: създавам, виждам, сменям, спирам

Първият въпрос е: защо сторито е голямо? Заради стъпките, заради правилата, заради данните? Отговорът подсказва модела.

По-точно, за любопитните

Моделите тук следват най-цитирания списък в практиката: „Patterns for Splitting User Stories“ на Ричард Лорънс (2009). Друг известен набор е SPIDR на Майк Кон: Spike, Paths, Interfaces, Data, Rules (проучване, пътища, интерфейси, данни, правила).

Последният модел често се нарича CRUD, по първите букви на create, read, update, delete. В магазина „изтрий“ става „спри“, и защо, ще видиш в упражнението.

Пробвай

Кой модел?

1. „Като клиент искам да купувам дрехи с размери и цветове.“ Днес магазинът продава само продукти с един размер.
2. „Като клиент искам да намирам продукти с търсене.“ Собственикът мисли за търсене по име, по цена, по размер, с подсказки, докато пишеш.
3. „Като клиент искам плащането да работи и в разпродажбата, когато 2 000 клиенти купуват едновременно.“ Още няма никакво плащане.
4. „Като клиент искам да откажа поръчка.“ Отказът е позволен преди изпращането: на нова поръчка е без пари, на платена трябва и връщане на парите.

Пробвай

Разбий връщането

Избери модела, после парчетата на разбиването в реда, в който се правят.

Стори

Като клиент искам да върна продукт, който не ми харесва, и да си получа парите.

Стъпка 1: По какъв модел се разбива?

Идеята

Защо не по слоеве

Разбиването по слоеве изглежда разумно, защото така е организиран екипът: един прави екраните, друг обработката. Но то струва скъпо:

  • Никой не може да го опита. Собственикът вижда нещо чак когато всички слоеве са готови. Ако сторито е грешно, разбира го последен.
  • Не може да се провери. Критериите на сторито („до 14 дни от получаването“) са за поведение, а не за екран или база. QA чака до края.
  • Рискът е в края. Слоевете се срещат накрая, и там излизат несъвпаденията.
  • Не е ценно по INVEST. Нито едно парче не носи нещо на някого извън екипа.

Слоевете са задачи вътре в сторито. Програмистите ги правят, но сторито се брои за направено, когато цялото отвесно парче работи.

Идеята

Как разбираш, че разбиването е добро

  • Всяко парче е стори. Има роля, цел и полза, и минава INVEST.
  • Първото парче носи най-много. Най-много стойност или най-много научаване. Ако първото е „подготовка“, режеш грешно.
  • Парчетата не се застъпват. Нито едно не е вътре в друго.
  • Заедно покриват голямото стори. Или поне това от него, което наистина трябва.

Последното е важно. Често след няколко парчета собственикът казва „това стига“. Останалите парчета не се правят, и това не е провал. Това е разбиването, което си върши работата.

Упражнение

Разбий сторитата

1. Крайната сума. Сторито за сумата преди плащането.

Избери модела, после парчетата на разбиването в реда, в който се правят.

Стори

Като клиент искам преди плащането да виждам крайната сума с доставката и отстъпките, за да знам колко ще платя.

Стъпка 1: По какъв модел се разбива?

2. Промо кодовете. Сторито на маркетинга.

Избери модела, после парчетата на разбиването в реда, в който се правят.

Стори

Като служител по маркетинга искам да управлявам промо кодовете, за да пускам и спирам кампании без програмист.

Стъпка 1: По какъв модел се разбива?

Тест

Провери се

1. Какво е отвесно (вертикално) парче от стори?
2. Защо „фронтенд“ и „бекенд“ не са добро разбиване?
3. „Управлявам промо кодовете“ се реже най-добре…
4. Кое парче на връщането трябва да е първо?
5. След разбиването едно парче остава ненаправено месеци. Какво значи това?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·