Bezručova 9, 680 01 Boskovice +420 608 464 341

Definition of Done aneb tým má hotovo

Vytvořeno 17.08.20 od Administrator

Definition of Done aneb tým má hotovo

Máme už hotovo? Na tuto otázku je těžké odpovědět, když se nedohodneme, co přesně "hotovo" znamená. V agilním světě, kde řešíme spousty komplexních problémů, nemusí být vždy jasné, kdy vlastně je hotovo a kdy jsme doručili potřebnou hodnotu. Vždy existuje příležitost k odeslání kódu, který zdaleka není „hotovým“ produktem, a proto je důležité mít jasno, kdy jsou projekty, přírustky a funkce skutečně dokončeny. Rozhodující je v tomto směru dohoda, která jednoznačně definuje, kdy je "hotovo" (Definition of Done).

Všechno to začíná běžnou slovní zásobou - pokud lidé nemluví stejným jazykem, existuje dostatek prostoru pro zmatek, frustrace a smíšené signály. Abychom se tomuto scénáři vyhnuli, měly by týmy věnovat čas pracovat se svými protějšky z oblasti technologické a testovací a dohodnout se na tom, co se v různých případech považuje za „dokončené“.

Už jsme tam?

Definition of Done je dohodnutá sada položek, které musí být naplněny, než bude projekt nebo položka z backlogu považována za dokončenou. Uplatňuje se důsledně a slouží jako oficiální nástroj, který rozlišuje věci "probíhající" a "hotové".

Přestože v organizacích je kontext různý, je možné definovat typickou podobu seznamu, který je nutný mít naplněn, abychom mohli říci, že máme hotovo. Příkladem může být následující seznam:

  • Kód je ověřen jiným členém týmu (Code Review)
  • Kód je nasazen pro testování prostředí
  • Kód / funkce je úspěšně ověřena regresním testováním
  • Kód / funkce uspěně prošla smoke testy
  • Kód je zdokumentován
  • Dokumentace je aktualizována
  • Funkce je akceptována zůčastněnými stranami (stakeholdery)

Vývojové týmy v různých společnostech si definují svoje vlastní varianty, nicméně všechny tyto definice inklinují ke stejnému ideálu: kód dělá to, co má, a nic jiného nerozbíjí. Tímto se snažíme zajistit to nejdůležitější a to, že zajišťujeme konzistentní kvalitu a kompletnost řešení skrze tyto definované kroky.

Tímto budujeme další prvek transparentnosti, který je svázaný s tímto seznamem. Pokud nejsou naplněna všechna kritéria tohoto seznamu, tak všichni ví, proč nemůžeme takovou položku považovat za hotovou a vydat ji jako hotovou.

Kdo definuje, kdy je hotovo?

Vývojový tým je obvykle vedoucím hráčem při definování Definition of Done, protože většina z nich má zaručit, že věci fungují dobře a splňují základní technické požadavky. Vytvoření tohoto seznamu, který zastřešuje Definition of Done, může vést Scrum Master, či Agilní kouč nebo je veden samotným týmem.

Mělo by však jít o spolupráci, při které vznikne dohoda o tom, co lze považovat jako "dokončené". Bez vstupů a schválení z pohledu produktu (Product Owner), kvality (Quality Assurance) a dalších zúčastněných stran nebude všeobecně přijímáno, zda je skutečně hotovo nebo jen vývojový tým tvrdí, že je hotovo.

Přemýšlejme o všech úkonech, které je třeba zajistit, aby byla položka backlogu vydána. Mějme představivost a zahrňme vše, dokonce i úkoly, které by mohly být mimo kontrolu našeho týmu. Z této ideální vize „dokončeného“ již můžeme vymezit realističtější seznam DoD.

Uvedení do praxe

Díky Definition of Done můžeme z dlouhodobého hlediska ušetřit spoustu času při pozdějším dojasňování, či zbytečných revizí. Všichni víme, že nastal ten pravý čas, když kód / funkce naplňuje Definition of Done.

DoD je, když jsou splněny všechny podmínky nebo kritéria, která musí softwarový produkt splňovat a tudíš jsme připravení na přijetí uživatelem, zákazníkem, týmem nebo dalším systémem. Abychom zajistili kvalitu, musíme být v souladu s naším Definition of Done. Snižujeme riziko předělávek tím, že zabraňujeme dodání produktových přírustků, které nenaplňují naši definici kvality uvedené v DoD, zákazníkovi nebo uživateli.

Definition of Done musí být aplikováno na vše, abychom dokázali zajišťovat kozistenci produktu a jeho kvalitu. Očekává se, že každý kdo se podílí na vývoji produktu tato pravidla dodržuje a respektuje. Neznamená to, že jsou všechny položky ze seznamu DoD platná pro všechny případy. V případě, že některá z položek není platná, je možné ji vynechat se souhlasem všech zapojených stran.

Proč by se lidé z byznysu měli zajímat o Definition of Done?

Ponechání toho, zda je něco dokončeno svévolné interpretaci, může způsobit konflikty, nedorozumění a vést k negativním zkušenostem uživatelů a dopadům na příjmy, což je dobrý důvod, proč se s těmito kritérii vyrovnat před začátkem iterace (Sprintu). Sdílení společné vize toho, jaký by měl být konečný výsledek, je dobrým místem pro zahájení jakéhokoli projektu a dohodnutá kvalita vytváří společnou shodu na tom, co je hotovo.

Výhoda spočívá i v tom, že každý projekt může mít jinou míru definice, co je hotovo. Tímto způsobem šetříme čas a umožňujeme lidem se soustředit na inovace a neprovádění kontraproduktivních definicí. Při odstranění nejednoznačností se každý může soustředit na své hlavní povinnosti místo toho, abychom se později hádali o připravenosti k vydání produktové změny.

Ačkoliv se může zdát práce jako hotová, pokud nebude naplněna každá položka ze seznamu Definition of Done a budou přeskočeny, může to vést k tomu, že se budeme zbytečně vracet k "dokončeným" věcem, místo toho, abychom se dál věnovali otevřeným záležitostem.

Nedokončená práce má nepříjemný zvyk narůstat a bez viditelnosti toho, kolik úsilí skutečně zbývá, se nůžky rychle rozevřou a úsílí se vymkne z rukou. Práce, která je téměř hotová, se stává naším tyranem a ve finále může vést až k tvorbě technického dluhu. Vzniká tím studentský syndrom. Mám hotovo na 90% a ještě 90% práce zbývá.

Definition of Done vs. Akceptační kritéria

DoD je všeobecně aplikováno (až na několik výjimek) na vše, co se vývojový tým pokouší doručit. Přestože jednou z položek může být akceptace z pohledu produktového managementu, tak se stále jedná o poměrně obecnou definici, kdy je hotovo.

Naopak Akceptační kritéria jsou pro jednotlivé položky jedinečná a konkrétní. Tato kritéria, která musí být splněna, by měla být definována společně z pohledu byznysu a vývojového týmu tak, aby tato položka mohla "svítit" zeleně, než bude považována za přijatou.

Protože DoD je použito všude, produktový management by měl definici zkontrolovat a ujistit se, že je dostatečně komplexní. Za vlastnictví a správu definice však nemusí nutně odpovídat produktový management. Může to být i vývojový tým, který ho spravuje.

Z pohledu vlastníka produktu však ani v takovém případě není hotovo, i když má produktový přírustek k dispozici uživatel nebo zákazník. V tomto případě jen začínáme dělat údržbu, podporu pro zákaznické centrum, opravu chyb a aktualizaci kompatibility. To vše končí až v momentě, kdy je náš produkt ukončen a my už se o něj nemusíme dále starat.

Jak na to?

Proces definování by se neměl odehrávat ve vakuu. Mělo by dojít ke spolupráci mezi zúčastněnými stranami a těmi, kdo skutečně hodnotu vytváří. Ať už to začíná brainstormingem nebo seznamem navrženým technickým týmem. Měl by být dostatek příležitostí k vyjádření a jednomyslné podpoře konečného výsledku.

Definition of Done je smlouva mezi vlastníkem produktu a týmem, takže je lákavé chtít, aby se do seznamu vešlo, co nejvíce položek, aby byla zajištěna kvalita produktu. Zkusme tento seznam udržet, co nejkratší, nejsrozumitelnější a snadný k zapamatování. Když jsou týmy konfrontovány příliš velkým počtem položek v seznamu Definition of Done, tak buď pracují pouze na podmnožině, nebo se je pokoušejí vypustit všechny, což snižuje hodnotu vytvořeného Definition of Done.

Mějme na paměti, že cílem je vytvořit konzistentní kvalitu a ne byrokratické překážky, které zbytečně zpomalují věci.

Na začátku můžeme začít s pár položkami v seznamu, abychom dokázali uvést naše Definition of Done do života a v průběhu času se k němu opakovaně vracet a přidávat další položky, kterými chceme rozšířit naši snahu o zachování kvality a konzistence produktu.

Přiřazení vlastníků k jednotlivým kritériím může být dobrý nápad, protože mohou být rozhodčími, pokud existuje neshoda. To posiluje konzistenci a odstraňuje veškeré pochybnosti.


Nové příspěvky blogu

Definition of Done aneb tým má hotovo
Definition of Done aneb tým má hotovo

17.08.20 od Administrator

Máme už hotovo? Na tuto otázku je těžké...

Scrum Master je nejlepší sekretářka na světě

28.05.20 od Administrator

Často narážím na to, že role Scrum Mastera...

Plánování řízené rychlostí týmu

12.05.20 od Administrator

Co je rychlost týmu? Je to průměrné...

Zobrazit všechny příspěvky blogu →