Definition of Done. Definice "hotovo". Co to vlastně je a k čemu je to dobré?

Dnes na téma Definition of Done. Co to vlastně je a k čemu je to dobré? Chci to (jako vývojář)? Potřebuji to (jako manažer)?

Definition of Done je sada kritérií, které musí zadaný úkol splňovat, aby jej bylo možno považovat za hotový. Nic více, nic méně. DoD je použitelné (nutné!) nejen v projektech řízených SCRUMem, či KANBANem, ale při jakékoliv práci.

Zkusme si uvést důsledek absence DoD třeba při úkolu "Nedělní oběd: udělat svíčkovou" :-)
 
A: "Je už ta svíčková hotová?"
B: "Ano, je."
A: "Tak můžeme obědvat?"
B: "Ne, ještě jí musím osolit."
A: "A pak už to bude hotové?"
B: "Ne, ještě ne, ještě nemám hotový knedlíky."
...

Takže k čemu je to "DoD" tedy dobré?

  • Jasná definice "hotovo" umožní lépe organizovat (si) práci - již při odhadu toho, kolik toho stihnete, musíte brát kritéria DoD v potaz. Pokud toto uděláte, zahrnete naplnění DoD do odhadů náročnosti práce, budou Vaše odhady relevantní. Tj. úkol "naprogramovat XY" s odhadem např. 4h (nebo třeba 13SP) nebude ve skutečnosti trvat hodin 8, protože již nezapomenete napsat také unit test, dokumentovat práci, správně posunout ticket ve workflow v issue trackeru, popř. vykázat si na úkol report práce...
  • Tím samozřejmě také uděláte radost managerům ;-), protože odhady termínů budou relevantní a nestane se tak, že DEV team bude tvrdit, že již má hotovo, ale ve skutečnosti naprogramovaný kód neprošel testy a tak vlastně nelze říct, že funguje správně a že je možné funkcionalitu opravdu releasovat.
    Release_I_dare_You
  • Budete mít pocit (dobře) odvedené práce. Budete si totiž prostě jisti, že je úkol opravdu hotový a nevrátí se Vám jako bumerang za chvíli znovu, což často vede k pocitům marné práce a hromady neubývajících úkolů, kterou před sebou neustále valíte.

Jak konkrétně může například DoD vypadat můžete vidět zde:

  • je to vyrobené (naprogramované)
    • dělá to to, co je v popisu tasku / splňuje v tasku uvedená akceptační kriteria
  • je to commitnuté v repozitáři kódu
  • splňuje to standardy vývoje
    • komentovaný a self-describable code
    • je pokryto unit testem
    • proběhlo code/peer review - revize kódu
    • ...
  • splňuje UX pravidla
  • splňuje visibility / SEO pravidla
  • je to někde nasazené (uvedeno kde)
  • existuje k tomu dokumentace
  • existuje k tomu test + tento test projde
  • issue je ve správném stavu v issue trackeru (JIRA)
  • na úkolu je vykázaná práce
  • zadavatel (Product Owner) potvrdil že úkol je splněn dle očekávání
Definition of Done je samozřejmě třeba přizpůsobit aktuálnímu prostředí...
 
Pokud i ve Vaší praxi máte problémy s neustálými "dodělávkami" úkolů, nezvládáte včas a pravidelně dodávat "potentially shippable product", máte problémy s kvalitou a funkčností, nespokojené zaměstnance žehrající na přetíženost, zkuste se nám ozvat. Pomůžeme Vám vyladit Vaše Definition Of Done.
 
 

A pro zájemce přidám ještě pár odkazů:

 
Petr Holodňák, šéf CEREBRA
PH_01_cb