Ohodnocení úloh body

Jedním z těžko uchopitelných praktik Agilu je ohodnocení body. Ze zkušeností vím, že pochopení toho ‘co to vlastně ten bod je‘ a jak můžu ohodnotit úlohu něčím, co vlastně nemá pevnou jednotku, patří k nejsložitějším úkolům při zavádění Agile.

Ale vezměme to popořádku. Na začátku projektu máte seznam oblastí (Story) na kterých budete pracovat v Backlogu. Vezměte tým složený z project managerů, architektů a technical leaderů a udělejte odhady náročnosti tak, jak jste byli zvyklí. Pak převeďte odhady na body: 1bod=1man/day. A teď to přijde. V tom to momentě zapomeňte rozměr bodu a pracujte už jen a pouze s bodem. Jeho hodnota bude v začátku projektu, zvlášť bude-li to první Agile projekt, jistě měnit svou hodnotu, obvykle devalvovat. My jsme měli po cca dvou prvních měsících hodnotu bodu 0.6man/day. Nicméně od té doby se drží stabilní a to i na dalších projektech.

Co chcete docílit:
  • Zlepšit/zpřesnit odhady lidí v týmu
  • Zvýšit důvěryhodnost plánu vzhledem k managementu
  • Aktivně zapojit tým do plánování
  • Motivovat lidi na výsledku a včasném ukončení projektu
  • Zapojit tým do hry

Ohodnocení body je jen jeden střípek do mozaiky, sám o sobě toho moc nezmůže, ale je to dobrý začátek pro zkvalitnění odhadů náročnosti jednotlivých úloh. Jestli jste někdy zkoušeli nechat vývojáře odhadnout kdy práce bude hotová, jistě se Vám často stalo, že při odhadu zapomněli na část aktivit, např. testování, nebo Vás přesvědčovali, že práce odhadnout nejde, protože nikdo neví, co se může ještě objevit za problém.

Prvním krokem pro učení ohodnocení jednotlivých členů týmu je ohodnotit Story zkušeným týmem a pak nechat tým jen jednotlivé Story rozpadnout na menší úlohy ohodnocené body v rámci původního odhadu. Ohodnocení body zbaví jednotlivé vývojáře přímé vazby na čas, nicméně časem vytvoří bodu jakýsi ‘rozměr složitosti‘ který tým vstřebá a naučí se automaticky používat.

Každou další novou úlohu či Story nechte ohodnotit už přímo tým, který na ní bude pracovat. Tím tým zapojíte do hry a budete-li správně prezentovat výsledky (Burndown), zajistíte si tím správnou motivaci.

Produkt Backlog a ohodnocení úloh

Na začátku každého projektu je nutné nějak formálně popsat požadavky na systém. Co se má vlastně udělat a jak. Přepsat uživatelské požadavky do trochu techničtějšího popisu, takže mu budou vývojáři rozumět. Agile v tomto kontextu pracuje s pojmem Backlog.

Jak by měl takový backlog vypadat a do jakých detailů by měly úlohy zacházet? Řekněme, že to záleží na fázi projektu. Na začátku je nutné identifikovat high-level oblasti – Story, přidat odhad ohodnocení a základ backlogu je hotov. V průběhu projektu, jak budete vědět více, se Story budou postupně rozpadat na jednotlivé konkrétnější úlohy ohodnocené v rámci původního odhadu a backlog získá více detailů. Samozřejmě se může stát, že některé Story se budou muset přidat a některé se ukážou nadbytečnými.

Takto nadefinovaný backlog tedy pokrývá veškeré aktivity na projektu, spolu s ohodnocením je základním vstupem pro odhady celkové náročnosti. Zároveň je to prvním kamínkem do mozaiky Burndownu, ale o tom až později.

V této podobě (tabulka v Excelu) se nám vyplatilo sledovat jen relativně high-level úlohy. Pro popis detailů jednotlivých úloh či jejich stavu je vhodné použít některý z online trackovacích systémů – jako je třeba Mantis. Pro větší názornost a zpětnou kontrolu odpracovaných bodů jsme posléze přidali pravou část tabulky znázorňující, v kterém sprintu se pracovalo na které úloze.

Začínáme s Agile (Agilní metody)

Jedním z nejoblíbenějších Agilních přístupů je Scrum proces. Scrum proces se snaží škálovat velké a komplexní softwarové projekty, které je těžké najednou obsáhnout a pochopit, na menší celky a stanovit priority jednotlivých úloh. Od běžného požadavku „Chci všechno a hned“ zapojuje Scrum proces různé zájmové skupiny do procesu plánování a tím je zaváže na výsledku.

Dobrým výchozím bodem bude proces zobrazený na následujícím obrázku:

Jak to celé funguje? Máte nějaké zadání, vizi, požadavky. Z toho sestavíte Produkt Backlog – což v praxi znamená relativně high-level seznam úloh. V průběhu projektu ho můžete rozšiřovat či upřesňovat. A teď už začíná cyklus. Pravidelný. Pokaždé stejně dlouhý. Říká se mu Sprint. Na začátku je seznam úloh z backlogu co se mají za daný časový úsek dokončit a na konci hotová práce, prezentace výsledků zákazníkovi a případně update backlogu o nové úlohy.

Jednotlivým krokům a pojmům se budu detailněji věnovat v dalších příspěvcích, ale co to má vlastně celé za smysl? Takže naučit tým pracovat konstantní rychlostí, každý sprint pravidelně dodávat stejný objem práce. Dodat vývoji SW rytmus. A tím získat lepší či chcete-li kvalitnější odhady od engineerů. Současně zajistit pravidelný feedback od zákazníků a zainteresovat je na vývoji. Propojit je s týmem vývojářů a dát tak developerům větší motivaci na jinak často příliš abstraktním projektu.

Proč něco měnit?

Tak samozřejmě důvodů může být hned několik. Začněme zvýšením efektivnosti. Nicméně s tím je úzce spojená firemní kultura, konkrétně týmová spolupráce. Jak přesvědčit své zaměstnance aby jednali jako tým a ne jako jednotlivci a individuality? Aby sdíleli informace, pomáhali si a učili se navzájem? Jak týmy nechat soutěžit ale přesto spolu spolupracovat? To je jen několik prvních otázek které člověka napadnou, když začne přemýšlet o efektivnosti.

Dalším z častých problémů je jak zajistit aby projekt byl dokončen včas. Podíváte-li se na svůj tým SW engineerů a designerů, kolik z nich umí odhadnout náročnost úlohy a v jaké granularitě a jak přesně? Kolik z nich úlohu nadhodnotí klidně na dvojnásobek, aby pak měli klid, a kolik z nich zapomene na polovinu aktivit, takže ve výsledku je práce ‚hotová‘ několik týdnů ale pořád se na ní ještě pracuje?

Agile a SCRUM jsou jen jedny z mnoha metod jak předcházet těmto problémům už v počátku jejich vzniku. Obsahují soubor metodik jak pracovat s lidmi na projektu jak je motivovat a zapojit do plánování projektu, jak docílit kvalitnějšího výstupu a jak zapojit zákazníka do vývojového procesu.

Řízení projektů v outsourcingu, Agile a SCRUM

Hlavní motivací tohoto blogu bylo podělit se o své zkušenosti v oblasti řízení projektů a lidí v SW outsourcingu a zavádění metodologií Agile (Agilní metody) a SCRUM v praxi. Softwarový outsourcing business je velmi různorodý, projekty se liší jeden od druhého jak prostředím a procesy, tak technologiemi, takže metody řízení musí být dostatečně flexibilní vzhledem k požadavkům konkrétních zákazníků.

Podle Standish Group Study více než 70% IT projektů končí neúspěchem, vezmeme-li jako kritérium úspěchu dokončení včas, v rámci budgetu a s požadovanou funkcionalitou. V rámci tohoto blogu, bych se ráda zaměřila na metodologie, které se nám v praxi osvědčily nejvíce – Agile a SCRUM. Vzhledem k poměrně malé rozšířenosti těchto metodik v rámci České Republiky je mým cílem se o své zkušenosti s Vámi podělit a touto cestou soustředit komunitu lidí zajímajících se o tyto metody.