Několik důvodů proč rozdělit User Story

Důvodů proč rozdělit UserStory může být hned několik.
Ten nejčastější je, že je moc velká a nevejde se do Sprintu. A protože základem Scrum procesu je pravidlo že tým vybere co během Sprintu dokončí a to na konci prezentuje zákazníkovi na customer demu, takovým UserStory které by dokončit nešly se musíme vyvarovat. Jak UserStory dělit? Po menších funkcionalitách. Nikdo neříká že takto rozdělěnou UserStory si zákazník musí nutně chtít koupit, ale jen že mu musí přinášet hodnotu. A ta je třeba i v tom, že si představí, co vlastně od dané funkčnosti chce. Tedy např. pakliže chce fakturace, asi si nekoupí jen readonly seznam faktur, ale bude je chtít i vytvářet a tisknout a filtrovat… ale jako mezivýsledek po prvním Sprintu mu hodnotu přinese i jen obyčejný seznam.

Druhým důvodem je různá priorita jednotlivých funkčních celků. Ono je to jedno spojeno s druhým. Když je UserStory moc velká, tak se obvykle Product Owner ptá, co jí dělá tak náročnou a komplexní. A přijde se obvykle na to, že udělat seznam faktur je snadné, ale tým ještě nikdy nedělal print preview a daná komponenta ho neumí a tedy je to pro ně náročné. Ono ale obvykle ne všechno je nutné a ne všechno stojí za tu cenu, kterou to má. A může se stát, že možnost print preview pro zákazníka vlastně nemá takovou priorotu a že ji odloží, na čas, či úplně.

Scrum vám umožňuje funkcionalitu řídit. Tím že složité celky musíte rozpadnout na menší kusy aby je tým stihnul v rámci Sprintu vás nutí přemýšlet o tom, jestli opravdu všechny drobné funkcionality potřebujete a jestli estimate odpovídá ceně, kterou jsme ochotni za očekávanou business value dané funkcionality v UserStory zaplatit.

Krátké vývojové cykly – Sprinty

Podíváte-li se na software development projekty, dost část se Vám stane, že nejsou dostatečně dobře časově odhadnuty. Samozřejmě částečně je to dáno špatnými odhady vývojářů. Často je ale hlavním problémem nejasná specifikace na začátku, která se v průběhu stále upravuje a designe a architektura se pak neustále předělává. V tom úplně nejhorším případě na konci máte něco úplně jiného, než se zpočátku myslelo.

V této sekci se zaměřím na to jak včas odhalit, že vám vůbec hrozí problém nedokončení v daném termínu. Začneme kvalitním produkt backlogem. Ten zdaleka nemusí být rozpracován do detailů, ale musí obsahovat všechny aktivity – Story – které musí být hotovy, aby byl se projekt mohl odevzdat. Např. pro implementaci nějaké funkcionality asi musíte udělat návrh, designe testu, implementaci, integraci, otestování a napsat dokumentaci. Tyto highlevel Story ohodnotíte body a v průběhu projektu detailněji rozpracujete.

Tým nechte pracovat v pravidelných cyklech – Sprintech. Na konci každého Sprintu jednoduše odečtete body za již hotové úlohy z celkového backlogu. Porovnáním hodnoty s plánem velice rychle vidíte, jestli je vše v pořádku či ne. Použijete-li pro vizualizaci burndown graf, automaticky víte, jak jste na tom a to pravidelně každý sprint. Úkolem sprintu je naučit tým naplánovat to co opravdu zvládne a odevzdávat pravidelně stále stejný objem práce a tak zvýšit důvěryhodnost odhadů a spolehlivost data dokončení.

Sprint by měl být krátký, obecně by asi neměl být delší než měsíc. Při zavádění Agile a sprintů se nebojte na začátku změnit délku sprintu, když se ukáže pro váš projekt nevhodná. Nám se nakonec osvědčily 14 denní sprinty. Začínali jsme s týdnem, ale to se ukázala být moc krátká doba. Dobrá pomůcka je že musíte být za sprint schopni ukončit běžnou úlohu. Ale úlohy se dají vcelku neomezeně dělit, takže jde spíš o to si to vyzkoušet přímo ve Vašem prostředí.