Co s nedokončeným sprintem?

Ondřej Suchánek
3 min readMar 22, 2021

Před nějakým časem jsme začali s týmem Unseen Academicals aplikovat Scrum a vyvíjet ve sprintech. Z předchozích zkušeností vím, že se často stává, že všechny úkoly ve sprintu tým nemusí dokončit včas. Rozhodli jsme se proto vyzkoušet “malý experiment”. Možností, jak naložit s úkoly po konci sprintu, existuje několik. Samozřejmě nejlepší je všechny položky ve sprintu dokončit. :) Možnosti jsem probral nejdřív se svými kolegy Scrum Mastery.

Katka se mnou sdílela článek Handling Work Left at the End of Sprint od Mikea Cohna, kde se nedokončený úkol na konci rozdělí na část, která je dokončená a na zbylou část se napíše nový úkol, který se odhadne. Nakonec jsme s Katkou i týmem ale usoudili, že to není moc vhodné pro nás, protože nechceme zbytečně “rozmnožovat” úkoly a hlídat, jestli vše bylo přepsané, udělané a pak zavřené. Tuto možnost jsme tedy zavrhli.

S Tomášem jsme se zase bavili o tom, že důležitá je velocita a že se story pointy ze sprintů z dlouhodobého pohledu zprůměrují. Tedy nevadí, že některý z úkolů tzv. “přeteče” do dalšího sprintu. Když se na to budeme dívat v širším časovém období, tak právě vznikne daný průměr. Ostatně o tom mluví například i Chris Sims v Story Point Accounting Across Sprints. Z určitého pohledu mi tady vadilo, že týmu vlastně nechávám prostor nedokončovat sprinty alá “Přeteče to, tak se to holt dodělá v dalším”.

Při průzkumu jsem nicméně objevil článek o 4 steps to manage unfinished stories at the end of a Sprint od Tolgay Budayiciho a jeho variantu jsem nakonec použil.

Přecenění nedokončených úkolů

O co jde? Na konci každého sprintu se podíváme na nedokončené úkoly a u nich odhadneme zbývající část (např. chybí otestovat, zdokumentovat nebo nasadit) a daný úkol přeceníme. Do dalšího sprintu tedy jde úkol s novou hodnotou zbývající časti. Že je to tak trochu cheating? Nebojte není :)

U každého takového úkoly si do poznámky doplníme položku původního nacenění i nového nacenění. Například:

  • Original estimation: 5
  • Remaining story points: 2

Tudíž se vždy můžeme podívat, jakou hodnotu daný úkol měl původně. V JIRA reportu ze sprintu je navíc vidět, jak původní hodnota, tak nová přeceněná i to, že issue byla nedokončená. Navíc jsem ke každému ticketu dodal pole Previous story points. Tedy se ke každé story dá jednoduše dohledat první nacenění.

Report sprintu v JIRA — Původní i nové hodnoty jsou vždy dohledatelné.

Zároveň to nemá ani vliv na logování času vývojářů, který musí vykazovat. Logují si čas strávený na úkolu, ale odhady ve story pointech se nijak na čas nevážou. Jde o složitost úkolů. V reportu jde vždy dohledat o jaký úkol šlo, jakou hodnotu měl a že se nedokončil.

Vliv na velocity

Jaký to má vliv na velocity? Tým se commitnul například k 5 úkolům za 28 story pointů, ale dokončil pouze 3 úkoly za 21 story pointů a 2 zbývající úkoly udělal zhruba na 75 %. Neměly by se tedy alespoň nějaké story pointy započítat do velocity sprintu i z těchto úkolů? Rozhodně neměly. A to z důvodu, že se jedině dokončený úkol považuje za hotový. Takže potenciál dokončit víc story pointů tu je, ale rozhodně to nezapočítáváme jako kdyby byl úkol dokončený.

Velocity chart JIRA — doplněný o poteciál dosáhnutelných story pointů, při dokončení všech úkolů včas.

A funguje vám to?

Ptal jsem se na to týmu na minulé retrospektivě a vypadá to, že zatím nemá proti aktuálnímu nastavení výhrady. Tým transparentně vidí, co mu u nedokončených úkolů chybí (často jsou to stále ty stejné věci) a může na to reagovat. Musím se přiznat, že zatím se nám moc nedaří dokončovat všechny položky, má ro svoje důvody. Rozhodně to budeme dál sledovat. Ale myslím a věřím, že už v nejbližším sprintu se nám podaří všechno dokončit. :) A přeceňování nedokončených úkolů se stane výjimečnou záležitostí.

Zajímalo by mě, jak pracujete s nedokončenými úkoly v rámci sprintu? Máte na to svoje techniky a páky?

Příště se podívám na to, když nastane opačná situace. Aneb co dělat, když už někteří členové týmu nemají v aktuální sprintu co dělat.

--

--