Agilní techniky odhadu

Abstrakt

Odhad pracovního úsilí v agilních projektech se zásadně liší od tradičních metod odhadu. Tradiční přístup spočívá v odhadu pomocí techniky „zdola nahoru“: podrobně rozebereme všechny požadavky a odhadneme jednotlivé úkoly k jejich splnění v hodinách/dnech, poté tyto údaje použijeme k vypracování harmonogramu projektu. Agilní projekty naproti tomu používají přístup „shora dolů“, používají techniky odhadu na hrubé úrovni pro sady funkcí a poté využívají metody postupného rozpracování a postupného vlnového plánování, aby se dostaly na úroveň úkolů na bázi just-in-time a iterativně odkrývaly více a více detailů každou úroveň níže. Tento článek se bude zabývat dvěma běžnými technikami agilního odhadu (plánovací poker a afinitní seskupování) a také tím, jak výsledky těchto cvičení poskytují vstupní informace pro předpověď harmonogramu a rozpočtu.

Top-down vs. Bottom-up

Tradiční metoda odhadu projektů spočívá v tom, že na začátku projektu strávíme několik týdnů nebo měsíců definováním podrobných požadavků na vytvářený produkt. Jakmile jsou všechny známé požadavky zjištěny a zdokumentovány, lze vytvořit Ganttův diagram zobrazující všechny úkoly potřebné k dokončení požadavků spolu s odhadem jednotlivých úkolů. K úkolům pak lze přiřadit zdroje a činnosti, jako je zatížení a vyrovnání, pomáhají určit konečné datum dodání a rozpočet. Tento postup je znám jako metoda zdola nahoru, protože všechny podrobnosti týkající se produktu musí být definovány předtím, než je možné odhadnout harmonogram projektu a náklady.

V softwarovém průmyslu má použití metody zdola nahoru vzhledem k dnešní rychlosti změn vážné nevýhody. Rychlost změn znamená, že rychlost nových vývojových nástrojů a rychlost přístupu k novým znalostem je tak velká, že jakékoliv zpoždění v dodávce nechává člověka otevřeného konkurenčním alternativám a hrozí, že dodá zastaralý produkt (Sliger, 2010).

Metoda shora dolů řeší tento klíčový problém tím, že využívá aktuálně dostupné informace k odhadu na hrubé úrovni. Rolling-wave plánování se pak používá k začlenění nových informací, jakmile jsou zjištěny, k dalšímu zpřesnění odhadů a iterativnímu rozpracování s většími detaily v průběhu projektu. Tato metoda, kdy se dozvíte jen tolik, abyste mohli začít, s plánem začlenit další poznatky podle vývoje pracovních výstupů, umožňuje projektovému týmu rychle reagovat na nepřízeň osudu a měnící se poptávku na trhu.

Techniky odhadu

Techniky odhadu na hrubé úrovni používají týmy využívající agilní přístupy, jako jsou Scrum a Extrémní programování, a tento článek se bude zabývat dvěma nejoblíbenějšími technikami: Planning Poker a Affinity Grouping. Budou také zkoumány používané jednotky odhadu, protože tyto jednotky by měly být takové, aby je nebylo možné zaměnit s časem.

Planning Poker

Nejpopulárnější technikou odhadu hrubé úrovně je Planning Poker neboli použití Fibonacciho posloupnosti k přiřazení bodové hodnoty funkci nebo položce (Grenning, 2002). Fibonacciho posloupnost je matematická řada čísel, která byla zavedena ve 13. století a používá se k vysvětlení některých formativních aspektů přírody, například větvení stromů. Řada vzniká sečtením dvou předchozích čísel, čímž se získá další hodnota v posloupnosti: 0, 1, 1, 2, 3, 5, 8, 13, 21 a tak dále. Pro účely agilního odhadu byla některá čísla změněna, čímž vznikla následující řada:

Tato čísla jsou znázorněna v sadě hracích karet (viz obrázek 1). Členové týmu hrají „plánovací poker“ (ukázka 2), aby pro každou položku uvedli odhad v podobě bodové hodnoty. Zde jsou uvedeny následující kroky:

  • Každý člen týmu dostane sadu karet.
  • Vlastník podniku (který NEMÁ odhadovat) představí položku, která má být odhadnuta.
  • O položce se diskutuje.
  • Každý člen týmu si soukromě vybere kartu představující jeho odhad.
  • Když jsou všichni připraveni, odhalí se všechny vybrané karty najednou.
  • Pokud všichni členové týmu vybrali stejnou kartu, pak je tato bodová hodnota odhadem.
  • Pokud karty nejsou stejné, tým diskutuje o odhadu s důrazem na odlehlé hodnoty:
    • Člen, který vybral nejnižší hodnotu, vysvětlí, proč vybral právě tuto hodnotu.
    • Člen, který vybral nejvyšší hodnotu, vysvětlí, proč vybral právě tuto hodnotu.
  • Výběr opakujte, dokud se odhady nesblíží.
  • Pokud by došlo k dlouhým rozhovorům nebo rozhovorům „v plevelu“, mohou členové týmu použít dvouminutový časovač k časovému ohraničení diskuse a vybírat znovu pokaždé, když časovač vyprší, dokud nedojde ke konverzi.
  • Zopakujte pro každou položku (Cohn, 2006, s. 56-57).

Příloha 1: Výběr odhadů. Plánování pokerových karet

Ukázka č. 2. Hra plánovacího pokeru (Foto s laskavým svolením Museums and the Web. Všechna práva vyhrazena)

Existuje několik důvodů, proč se Fibonacciho čísla používají a proč se používají v tomto formátu. Prvním je představa, že jakmile týmy vyloučí čas jako základ odhadu, je méně pravděpodobné, že budou požadovat více podrobností a vycpávky odhadů. Tato čísla místo toho představují relativní velikost, nikoliv čas. Výsledkem je, že odhadování probíhá poměrně rychle. Týmy obvykle věnují každé položce zhruba dvě minuty, což umožňuje odhadnout 30 položek za hodinu. Urychlení procesu napomáhá i skutečnost, že týmy jsou omezeny pouze na 9 možností (tj. bodových hodnot nebo karet).

Posloupnost také poskytuje správnou úroveň podrobnosti pro menší a lépe pochopitelné funkce a zároveň zabraňuje falešnému pocitu přesnosti pro vyšší odhady. Například položka s vysokým odhadem (20 nebo vyšším) znamená, že položka je velká a ještě není dobře pochopena. Diskuse o tom, zda je položka 20, 19 nebo 22, by byla ztrátou času, protože jednoduše není k dispozici dostatek údajů. Jakmile se položka přiblíží iteraci, ve které se s ní bude pracovat, je možné ji rozdělit na menší části a odhadnout ji v podrobnějších číslech (1-13). Položky s bodovým odhadem 1-13 lze zpravidla dokončit během jedné iterace (1-4 týdny).

Je důležité si uvědomit, že body nemají v různých týmech stejný význam; například „pětka“ jednoho týmu se nerovná „pětce“ jiného týmu. Proto by se týmová rychlost, která je odvozena od bodů, neměla používat k porovnávání produktivity mezi týmy.

Afinitní seskupování

Ještě rychlejší způsob odhadu, který se používá při velkém počtu položek k odhadu, je afinitní seskupování. Členové týmu jednoduše seskupí položky, které mají podobnou velikost, a výsledkem je konfigurace podobná té na obrázku 3. Metoda je jednoduchá a rychlá:

  • První položka se přečte členům týmu a umístí se na zeď.
  • Přečte se druhá položka a tým se zeptá, zda je menší nebo větší než první položka; umístění na zeď odpovídá odpovědi týmu (větší je napravo, menší je nalevo).
  • Třetí předmět je přečten a tým je dotázán, zda je menší nebo větší než první a/nebo druhý předmět; předmět je odpovídajícím způsobem umístěn na stěnu.
  • Kontrola je poté předána týmu, aby dokončil seskupení příbuznosti pro zbývající předměty.

Týmy se mohou rozhodnout pokračovat stejným způsobem a po skupinové diskusi umístit na stěnu vždy jeden předmět. Rychlejším způsobem je však nechat každého člena týmu vybrat položku a umístit ji na základě vlastního nejlepšího porozumění. To se provádí tak, že všichni členové týmu pracují souběžně, dokud nejsou všechny položky vyhodnoceny a umístěny na zeď. V relativně krátkém čase lze odhadnout několik set položek. Jakmile jsou všechny položky na stěně, tým přezkoumá jejich seskupení. Položky, o nichž se člen týmu domnívá, že jsou ve špatné skupině, se prodiskutují a případně přesunou.

Po dokončení seskupování podle příbuznosti lze přiřadit hodnoty jednotek odhadu, například bodů. Na obrázku 3 by první sada úplně vlevo byla označena jako sada s hodnotou 1 bodu, druhá sada by měla hodnotu 2 bodů, třetí sada 3 bodů, čtvrtá sada 5 bodů a poslední sada 8 bodů.

Afinitní seskupování lze provést i pro jiné jednotky odhadu, například velikosti triček. Ukázka 4 ukazuje příklad afinitního seskupení položek označených velikostmi triček místo bodů.

Ukázka 3. Příklad afinitního seskupení

Ukázka 4. Seskupování afinit pomocí velikostí triček (Grafika s laskavým svolením Chrise Sterlinga. Všechna práva vyhrazena)

Odhadní jednotky

Použití velikostí triček (Extra Small , Small , Medium , Large , Extra Large ) je další způsob, jak uvažovat o relativních velikostech prvků. Jedná se o ještě větší odklon od číselného systému a stejně jako všechny dobré odhadní jednotky hrubé úrovně nemohou být v žádném případě spojeny s konkrétní délkou času.

Dalšími libovolnými měrnými jednotkami jsou Gumoví medvídci, jednotky NUTS (Nebulous Units of Time) a metrové libry. Týmy si mohou vytvářet vlastní jednotky odhadu, a jak je vidět, často se při tom docela pobaví.

Tento dokument se nezabývá používáním jednotek založených na čase, jako jsou ideální dny a/nebo hodiny vývoje. Ty jsou již běžné a dobře pochopené, proto jejich vysvětlení nebylo zahrnuto. Stojí však za zmínku, že odhady na hrubé úrovni mají potenciál být úspěšnější, pokud jsou odděleny od pojmu času. Protože se časové odhady často mění v závazky ze strany managementu a obchodu, cítí členové týmu větší tlak na to, aby byly co nejpřesnější. V důsledku toho požadují stále více podrobností o odhadované položce. Tím se odhad na hrubé úrovni mění v časově náročnější odhad na úrovni detailů a maří původní záměr a účel.

Předpověď harmonogramu a rozpočtu

Po stanovení odhadů na hrubé úrovni a rychlosti týmu lze předpovědět harmonogram a rozpočet. Týmy určí svou rychlost tak, že sečtou celkový počet bodů za všechny položky, které v iteraci dokončily. Například tým mohl vybrat pět položek s celkovou bodovou hodnotou 23 bodů (viz obrázek 5). Na konci své dvoutýdenní iterace však dokázal dokončit pouze čtyři z pěti položek. Jejich rychlost je 15, neboli součet bodových hodnot položek 1-4. Týmy nezískávají „částečný kredit“ za dokončení části položky, takže i kdyby začali pracovat na položce 5, nezapočítala by se, protože nebyla dokončena.

Ukázka 5. Určení rychlosti týmu

Určení harmonogramu

Při předpovědi dlouhodobého harmonogramu se používá průměrná rychlost týmu. Průměrná rychlost se vypočítá součtem měření rychlosti z posledních tří iterací týmu a vydělením tohoto součtu třemi. Pokud tedy tým dokončil 15 bodů v první iteraci a 20 bodů v každé ze dvou následujících iterací, průměrná rychlost týmu je 18 (15+20+20 / 3). Pokud tým zvládne v průměru 18 bodů v jedné iteraci a v projektu je třeba dokončit práci v hodnotě 144 bodů, bude týmu trvat osm iterací, než práci dokončí (144 / 18). Pokud každá iterace trvá dva týdny, pak předpokládané dokončení je 16 týdnů. Tato metoda nám umožňuje odpovědět na otázku: „Kdy budeme mít celou práci hotovou?“

Pokud má tým k dispozici údaje o rychlosti, je možné určit nejoptimističtější termín dokončení, nejpesimističtější a nejpravděpodobnější. Pro výpočet nejpravděpodobnějšího scénáře se použije průměrné číslo rychlosti týmu, zatímco pro výpočet nejpesimističtějšího předpokládaného data dokončení se použijí čísla rychlosti z nejhorších iterací týmu. Použití rychlosti z iterací, ve kterých tým dokázal dokončit více, než se očekávalo, poskytuje nejoptimističtější prognózu.

Tato čísla můžeme také použít k zodpovězení otázky: „Musíme něco dodat k tomuto datu – kolik z těchto funkcí do té doby dokončíme?“. Příklad nejpravděpodobnější prognózy množství, které má být dokončeno, pesimistické prognózy a optimistické prognózy naleznete na obrázku 6. Tento příklad se týká týmu, jehož průměrná rychlost je 20, a který má nejhorší rychlost 12 a nejlepší rychlost 25. Vzhledem k tomu a pouhým šesti týdnům (třem iteracím), kolik toho může být dokončeno? Pesimistická předpověď předpokládá, že za šest týdnů budou hotovy pouze položky 1-8. Optimistická prognóza předpokládá, že položky 1-18 budou dokončeny. A nejpravděpodobnější prognóza, založená na průměrné rychlosti týmu 20, je, že položky 1-13 budou dokončeny za šest týdnů.

Pokud by týmy používaly nečíselné jednotky odhadu, jako jsou velikosti triček, algoritmy pro prognózu budou složitější. Doporučuje se převést velikosti na číselný systém, aby se snadněji generovaly podobné údaje. Například velikost Small by mohla být převedena na NUT 3, velikost Medium na NUT 5 atd. Lze je také převést na časové rozsahy (například Malý by mohl být 1-3 dny), ale to je ze své podstaty riskantní kvůli problémům, které již byly zmíněny v oddíle Odhadní jednotky.

Výkres 6. Odhadní jednotky. Příklad prognózy dokončení položky

Stanovení rozpočtu

V této části se zabýváme odpovědí na otázku: „Máme jen tolik peněz – jak dlouho nám vydrží a kolik toho stihneme udělat, než nám dojdou?“. Nejprve se použije jednoduchý vzorec pro určení nákladů na bod:

Σ (naložené platy týmu za období n) / body dokončené v období n

Vezměte součet platů týmu (naložených) za určité období, řekněme tři dvoutýdenní iterace, a vydělte jej počtem bodů, které tým dokončil ve stejném časovém období. Takže tým, jehož celkové načtené mzdy činí 240 000 USD za šest týdnů a který v těchto třech iteracích dokončil 60 bodů práce, bude mít náklady na jeden bod 4 000 USD. Nyní použijte následující vzorec pro stanovení rozpočtu:

(náklady na bod x celková bodová hodnota položek, které mají být dokončeny) + ostatní náklady = předpokládaný rozpočet

Dost často nejsou všechny funkce produktu definovány na začátku projektu, což je u agilních projektů očekávané. Odhady rozpočtu tedy vycházejí z toho, co známe dnes, plus z algoritmu prognózy, který je založen na historických datech nebo na pokynech odborníků. Řekněme například, že je zatím uvedeno pouze 20 funkcí, ale firma nebude moci poskytnout žádné další požadavky na funkce nebo upřesnění, dokud neuvidí, jak zákazník přijme první verzi. Rozpočet projektu, který je naplánován na tři verze, by měl k dispozici pouze prognostické údaje pro první verzi, nikoliv pro celý projekt. Tým by mohl použít výše uvedený algoritmus k předpovědi rozpočtu pro první verzi, pak předpokládat dalších 20 % pro druhou verzi a dalších 5 % pro poslední verzi na základě minulých zkušeností.

Stejně jako rychlost se předpovědi rozpočtu a předpovědi harmonogramu revidují každou iteraci. Jedná se o součást procesu plánování „rolling-wave“, ke kterému se agilní projekty hlásí.

Slova na závěr

V tomto článku není zmíněna absence strukturovaných technik odhadu, které se používají u štíhlých přístupů, jako je například Kanban. Namísto trávení (plýtvání) času odhadem položek se průměrná doba cyklu a doba realizace počítá na základě skutečné míry průchodnosti týmu. Kanban používá jako základ pro své vzorce matematickou větu Littleova zákona. Pomocí výpočtů průběžných dob odvozených z kumulativních diagramů toků týmy předpovídají harmonogramy projektů, aniž by předem trávily čas přípravou odhadů. Čtenáři doporučujeme provést nezávislý výzkum na toto téma, který by mohl být samostatným článkem sám o sobě.

Agilní projekty mají za cíl dodávat produkt nebo přírůstky produktu brzy a často, aby bylo možné zapracovat zpětnou vazbu od zákazníků a další poznatky do další verze. Tím, že se více času věnuje experimentování, provádění a učení a méně času spekulacím, se zkracuje doba cyklu dodávky. Agilní týmy jsou schopny lépe konkurovat na trhu a držet krok se stále se zvyšující rychlostí změn.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.