Scrum Eventy: Sprint Planning

Na začátku každého Sprintu tým říká, co si myslí že dokončí, tedy vybírá Sprint Backlog. Je to taková předpověď toho, co asi budou dělat, tedy je možné ji kdykoliv v průběhu Sprintu změnit. Tým se ale zavazuje, že udělá maximum pro dosažení cíle Sprintu, který se naopak v průběhu Sprintu nemění.

Cíl: Na Sprint Planning přichází Product Owner se Sprint Goalem na základě kterého potom členové týmu (Developers) vybírají Sprint Backlog a domlouvají se, jak budou jako tým spolupracovat.

Délka: Když tým rozumí Product Backlogu, business hodnotě jednotlivých položek backlogu a prioritám je Sprint Planning je poměrně jednoduchý a netrvá déle než dvacet minut. Když ovšem tým dělá Backlog Refinement až na planningu, takový Sprint Planning trvá klidně i několik dní.

Jak na to: Prerequisitou Sprint Planningu je dobré porozumění Backlogu. Prioritní položky Backlogu by měly být připravené v takové kvalitě, aby tým rozuměl dané potřebě zákazníka a věděl, jak jí bude řešit.

  • Sprint Planning je dobré vizualizovat například na Scrum Boardu, aby všichni členové týmu viděli, co plánují dělat.
  • Začínající týmy si většinou na planningu rozpadnou vybrané položky Backlogu na konkrétní tásky aby každý člen týmu rozuměl konkrétním činnostem a lépe se jim plánovalo, jak na dané položce backlogu budou spolupracovat.
  • Sprint Goal se během Sprintu nemění, položky Sprint Backlogu a tásky se mohou měnit kdykoliv existuje lepší cesta, jak maximalizovat hodnotu vzhledem ke Sprint Goalu.
  • Sprint Goal je pro Sprint jenom jeden, aby určoval směr, položek Sprint Backlogu může být více. Obvykle týmy plánují 3-5 položek backlogu na Sprint, kde ta největší by měla být týmem dokončitelná maximálně za půl Sprintu.
  • Sprint Goal je řízený potřebou zákazníka, Sprint Backlog naopak definuje, co můžeme udělat my abychom potřebu zákazníka naplnili. Tásky potom reprezentují konkrétní činnosti například business analýzu, změnu backendu, frontendu, testování apod.

Scrum Eventy: Sprint

Sprint je největší event, který ve Scrumu máme. Je to takový kontejner na všechno ostatní. Mezi jednotlivými Sprinty není žádná mezera, když jeden skončí, další začíná.

Cíl: Cílem Sprintu je dodat co nejvíce business hodnoty zákazníkovi. Tato hodnota je definovaná Sprint Goalem.

Délka: Nejčastější délka Sprintu je 2 týdny, ale v dnešní době týmy často přechází na týdenní Sprinty, aby byly flexibilnější. Obecně platí, že čím kratší, tím lepší. Cokoli delší než 2 týdny se v současné době nepovažuje za dostatečně adaptivní, nebo chcete-li agilní. Sprint je fixní časový úsek, tedy jeho délka by se neměla měnit. Pravidelnost totiž přináší předvídatelnost. Všichni si zvyknou, tým i zákazníci.

Jak na to: Scrum nedefinuje kdy má Sprint začínat, ale ukazuje se, že začínat v pondělí a končit v pátek není moc praktické. Proto týmy začátek obvykle posouvají, aby běžel například od středy do úterý.

  • Business hodnota je ve Sprintu definovaná takzvaným Sprint Goalem, tedy cílem Sprintu. Cíl Sprintu se v průběhu Sprintu nemění a určuje tak pro tým směr, kterým se daný Sprint mají ubírat. Vybrané položky Sprint Backlogu se naopak v rámci Sprintu můžou změnit, kdykoliv existuje lepší cesta jak maximalizovat hodnotu vzhledem ke Sprint Goalu.
  • Sprint Goal se v rámci Sprintu nemění. Když ale Sprint Goal přestane být relevantní, může Product Owner Sprint zrušit. V takovém případě se všechna práce vrátí na začátek a naplánuje se nový Sprint. Je to poměrně nepříjemná a drahá situace, takže se to v praxi děje poměrně výjimečně například při akvizici nebo zásadní změně na trhu.
  • Sprint Goal definuje směr, kterým v rámci Sprintu směřujeme. Product Owner může definovat i produktové cíle (Product Goals) ve formě businessových KPIs nebo OKRs, které by naopak měly být konkrétní a dlouhodobé. Většinou trvá několik Sprintů, než se týmu podaří jich dosáhnout.
  • Sprint Goal definuje směr, ne co konkrétně se má dokončit.

Každý Sprint má obvykle jiný Sprint Goal.

Jak hodnotit ScrumMastera

Jedna z takových častých otázek je, jak na Performance review ScrumMasterů. Já si myslím, že to je vlastně od samého základu špatná otázka. Agilní organizace totiž od takzvaných performance review upouští a nahrazují je tzv. peer review, tedy vlastně otevřenou zpětnou vazbu od kolegů. Když se bavíme o self-organized a self-managed týmech, role managerů v celkovém fungování organizací se umenšuje a přechází na týmy. Ale to je asi na jiný článek.  Cílem ScrumMasterů není týmu říct jak mají pracovat, nastavit iniciální proces a pak ho jen udržovat, což by šlo měřit a dát do cílů docela dobře, ale cílem ScrumMastera je neustále challengovat to jak pracují, pomáhat jim se zlepšovat, měnit a adaptovat na nové podněty a změny. To se ale špatně měří a tedy i hodnotí. Takže na co se máme zaměřit?

Jak tedy poznáme, že ScrumMaster funguje dobře? Často tak, že ho tým nepotřebuje a ScrumMaster má tak čas pomáhat organizaci na její agilní cestě. Umět postavit dobře fungujícího samoorganizovaný tým je totiž jenom začátek. Jeden agilní tým toho zas až tak moc nezmění. Abychom si rozuměli, jeden dobře fungující agilní tým má potenciál změnit životy jeho členů tak, že budou mít radost z dobře vykonané práce, budu mít dobrý pocit, že něco smysluplného vytvořili. Budou spokojeni a motivovaní a to je něco co stojí za trochu práce a energie. Dobře fungující tým bude mít také dobrý výsledek, budou dodávat hodnotu, mít spokojenější zákazníky. A to taky stojí za trochu práce a energie. Ale to je jen začátek fungování ScrumMastera v rámci #ScrumMasterWay  modelu – Můj tým, kde je zajímavé se dívat, jak se tým zlepšuje, začíná si věci řešit sám a čím dál tím méně spoléhá na ScrumMastera. Jinými slovy, jestli je self-organized, cross-functional, a v krátkých cyklech dodává hodnotu zákazníkovi. Je dobré si při tom uvědomit, že ScrumMaster rozhodně nemá na starosti updatovat žádné nástroje (Jira, …), ani reportovat status produktu (velocity, story points, …), ani řídit a organizovat ceremonie (tedy eventy).

Většina organizací ale nemá tak malé produkty, aby je stačilo dodávat jedním týmem a potřebuje spolupráci více týmů, aby dodalo reálnou hodnotu zákazníkům. Určitě musí jednotlivé týmy fungovat dobře, aby měly dobrý výsledek, ale to je jen začátek. Je vhodné ho neodbýt, protože když nepostavíte dobře fungující self-organized, ale hlavně cross-functional týmy, tak se většinou jejich spolupráce stává noční můrou a nefunguje ať děláte co děláte.

K tomu, aby jednotlivé týmy spolu dobře fungovaly, potřebujete ještě zajistit, že i spolupráce mezi těmi týmy funguje dobře, tedy že se nezastaví na úrovni jednoho týmu, ale že se společně zlepšují, posouvají, hledají nové cesty a adaptují. Takže ScrumMaster, který nastavil fungování na úrovní jednoho týmu, si vlastně uvolnil ruce pro práci na větším celku organizace a jeho cílem je nyní pomáhat více týmům se samoorganizovat, a najít si lepší cestu jak budou společně fungovat a dodávat produkty. Tedy mluvíme o fungování ScrumMastera v rámci #ScrumMasterWay  modelu – Vztahy, kde cílem ScrumMastera je podpořit spolupráci a samoorganizovanost tohoto většího ekosystému složeného z více spolupracujících týmů. Díváme se na to, jak se společně zlepšují, adaptují, přebírají zodpovědnost a vlastnictví. Tedy stávají se samoorganizovanými. Stejně jako v předchozím bodě je dobré si uvědomit, že ScrumMaster není jejich asistent, který má řešit závislosti mezi týmy (třeba na Scrum of Scrums, … ), ani dodávku produktu.

No jak asi tušíte, ten největší impact dosáhnete, když se posunete na úroveň organizace jako celku a pomůžete celé organizaci se zeštíhlit, descalovat, a pracovat jako spolupracující síť samo organizovaných týmů. Tedy mluvíme o fungování ScrumMastera v rámci #ScrumMasterWay  modelu – Celý Systém, kde cílem ScrumMastera je pomoci organizaci změnit kulturu, leadership styl, a celkové fungování. V jednoduchosti aplikovat business agility. A asi nemusím říkat, že to není o aplikaci žádných frameworků.

Abych se obloukem vrátila k původní otázce, tedy jak na hodnocení ScrumMastera. Prvním bodem je identifikace, na které úrovni #ScrumMasterWay modelu se ScrumMaster primárně pohybuje. Následně se zaměřte na to, jak pomáhá týmům a organizaci převzít zodpovědnost za samo(organizaci), jestli #ScrumMasterWay modelem roste od úrovně Můj tým, přes Vztahy, až po Celý systém, a jestli se zaměřuje na neustálé hledání lepší cesty.

ScrumMaster není asistent, procesní policie ani maminka. Je to kouč a leader který dokáže organizaci změnit. Ale o tom zase příště.

Nejčastější nepochopení Scrumu

Scrum je velmi jednoduchý framework. Bohužel ale není vůbec snadný aplikovat. Je to velká změna myšlení, přístupu, hodnot. Když se půjdete do běžné firmy podívat, tohle asi budou nejčastější nedorozumění, a nepochopení, na které narazíte:

Scrum

Daily Scrum jako status meeting

Daily Scrum alias Standup meeting je tak triviální věc, že by jeden řekl že se snad ani nedá zkazit. Chyba lávky. 80% firem ho bere jako status meeting, kde každý jednotlivec referuje (managerovi, ScrumMasterovi, nebo ostatním členům týmu) co dělal. A kosmetické změny ScrumGuidu, které se snaží vysvětlit, že je to celé o synchronizaci týmu, jejich diskusi, jak dosáhnou cíle Sprintu (Sprint Goal), zůstávají bez povšimnutí. Kde jinde bychom ty líné vývojáře kontrolovali a řídili, vždyť jinak nebudou nic dělat.

“Cílem Daily Scrumu je synchronizace členů týmu a jejich dohoda, jak budou dále pracovat na dosáhnutí cíle Sprintu, tedy Sprint Goalu.“

Sprint Backlog se nesmí měnit, je klíčový

Když už jsem zmínila Sprint Goal, pojďme u něj zůstat. Většina firem žádné Sprint Goaly nepoužívá. Vystačí si se Sprint Backlogem, který navíc mylně vnímá jako neměnnou specifikaci, která do detailu popisuje, co přesně má tým (rozuměj ‘coding monkeys‘) naimplementovat. Sprint Backlog je ale jen rámcovou dohodou, jak chceme dosáhnout cíle Sprintu. Klíčovým artefaktem je Sprint Goal, který definuje, čeho z pohledu business value chceme dosáhnout. Ten by se měnit neměl, protože to je to do čeho v rámci Sprintu investujete. Sprint Backlog se naopak v závislosti na situaci a dohodě týmu klidně měnit může. V podstatě s tím, jak se ve Scrumu začal Sprint Goal více používat, přestal být Sprint Backlog téměř potřeba, natož aby byl neměnný.

“Sprint Goal definuje smysl Sprintu, čeho chceme z pohledu business value dosáhnout. Sprint Backlog nám pouze pomáhá udělat dohodu ‘jak’ toho chceme dosáhnout. “

Sprint Review je o akceptaci

A do třetice všeho dobrého, nebo spíš zlého :), takové běžné Sprint Review alias Demo velmi často skončí jako prezentace technických scénářů Product Ownerovi. Proč prezentujeme něco někomu, kdo měl být celou dobu přitom, je mi záhadou. Někde prezentujeme Product Ownerovi proto, že nikoho jiného technické scénáře nezajímají, jinde protože se bojíme členy týmu komukoli ukázat, aby neudělali ostudu, jinde ani Product Owner nechodí a děláme to jen protože Scrum. Sprint Review je klíčovým prvkem Scrumu, protože právě tady získáváme zpětnou vazbu na doručený Sprint Goal, tedy funkční inkrement produktu, nebo jinak řečeno dodanou business hodnotu. Jdeme správným směrem? Je tohle opravdu business hodnota? Dosáhli jsme očekávaného impactu? To jsou otázky, které je dobré si v rámci Sprint Review položit.

“Cílem Sprint Review je získat zpětnou vazbu od zákazníků, stakeholderů, uživatelů abyste se na jejím základě mohli adaptovat. Je to klíčovým prvkem a by vám fungoval proncip Inspect and Adapt.“

 

Jestli jste se ve výše zmíněných příkladech nepoznali, dobrá zpráva. Asi jste se už vymanili z područí ‘Technického Scrumu’, nebo ’Dark Scrumu’ a jste o krok blíže změně mindsetu. Jen tak dál 🙂

Sprint Review

Sprint Review je jednoduchý meeting, který ale většina firem nepochopila. Jak se jako Agilní Coach chodím dívat na různé Scrum týmy, nejčastější chybou je, že Sprint Review považují za Sprint nebo Release status. A tak se tenhle zajímavý meeting stává pro spoustu firem noční můrou. Rozhoduje se zde, jestli byl tým úspěšný, kolik slíbil a kolik dodal. Ale to je zcela mimo definici toho, co by se tu mělo dít.

Jestli jste si oddychli, že takhle to u vás není, mám pro vás druhou nejčastější chybu, a to že na Sprint Review prezentuje tým Product Ownerovi co dokončil. Je to asi o chlup lepší, ale pořád úplně vedle. Product Owner je součást Scrum týmu a tedy dokončenou funkcionalitu akceptuje hned jak je hotová, tedy v průběhu Sprintu. Tedy na review už ji dávno viděl a dal na ni zpětnou vazbu.

Další chybou v pořadí je, že neprezentuje tým, ale Product Owner. Tým je přeci banda introvertů co nerozumí businessu, tak jak by mohli předstoupit před zákazníka, že? No alespoň oproti předchozím variantám něco ukazujete zákazníkovi a dostáváte zpětnou vazbu. O tu jde totiž na Sprint Review především.

Ideálním stavem je, že tým prezentuje zákazníkovi, co dokončil. A na oplátku získá zpětnou vazbu od zákazníka. Není to žádná technická prezentace jak je to naimplementované, ani přehlídka jednotlivých User Stories, ale souhrnná prezentace toho, jak jsme doručili za daný Sprint hodnotu definovanou cílem Sprintu.  Jak již jsem naznačila, prezentuje tým. Kdo konkrétně? No to je snadné, kdokoli. Z výborně fungujících týmů je schopný hodnotu Sprintu prezentovat kdokoli. Jak to vypadá v praxi? Přijdete na Sprint Review, tým vylosuje jednoho člena a ten prezentuje. Že to není možné? Když tým spolupracuje v rámci Sprintu vždy na jedné UserStory (viz praktika “One UserStory at a time“), není to problém. Je důležité si uvědomit, že neprezentujeme detailní řešení, ale Sprint Goal, tedy hodnotu dodanou v daném Sprintu.

Žádný meeting ve Scrumu není klasický status meeting

Víte, že žádný meeting ve Scrumu není klasickým status meetingem?

Daily Scrum (Standup meeting)

Začněme Standupem, kde antipaternem je, že jednotliví členové týmu reportují, co všechno dělali a co dělat budou. Asi aby je ScrumMaster nebo ostatní členové mohli kontrolovat.

Standup je tu ale proto, aby se tým a jeho členové každý den rychle zastavili a řekli si, jestli jdou správným směrem a jestli ještě stále věří tomu, že zvládnou dodat Sprint Goal. Proto nekontrolujeme, čím trávili čas, ale soustřeďujeme se na to, co je hotovo, a jak budou spolupracovat na tom, co mají teprve dokončit.

Sprint Review

Dalším v řadě je Sprint Review, kde antipatern je prezentovat, které konkrétní UserStory se dokončily a které ne. Spousta týmů status dotáhla do dokonalosti a dokonce ukazuje prezentaci a jakési grafy a vyhodnocuje úspěch a neúspěch Sprintu.

Sprint Review je tu ale proto, abyste ukázali Potentional Shipable Product Increment – tedy to, co tým dokončil – zákazníkovi a získali na základě toho zpětnou vazbu. Ta je potom cenným vstupem pro Backlog Refinement a pomáhá vám dodat úspěšný produkt.

Retrospektiva

Do třetice je tu Retrospektiva, kde antipaternem je začínat Retrospektivu tím že procházíte jednotlivé body z minula a hodnotíte, jak se vám povedly dokončit a jestli zabraly na daný problém.

Retrospektiva ale má být kreativním workshopem, kde se tým zamýšlí nad tím, co by chtěli změnit, co jim vyhovuje, co naopak chtějí zlepšit. Aby fungovala, musíte se na sebe umět podívat jinýma očima, z venku. A když začnete statusem, tak ten nadhled ztratíte a v další fázi pak jen zopakujete, co vám zbylo z minula. Máte-li pocit, že se věci nehýbou kupředu, určitě to na další retrospektivě zazní znovu i bez opakování. A status těch pár Action Items z minula můžete dát na tabuli a skouknout na Standupu.

Agilní praktiky XP – Kolektivní vlastnictví kódu

Chcete-li mít tým potažmo SW firmu opravdu efektivní, musíte se řídit pravidlem, že nikdo nevlastní kód ani jeho část. Narážíte-li na námitky vývojářů že to nejde, neboť jen oni opravdu rozumí dané části aplikace a ostatní by jim to jen zkazili, není to nikterak neobvyklé. Stačí věřit tomu, že to jde a mít schopnost zavést týmové metody spolupráce. Třeba Scrum proces nebo agilní metody řízení softwaru 🙂

Agilní praktiky XP – Kolektivní vlastnictví kódu

Abyste mi věřili, že to je možné i ve velmi složitých prostředích kritických na jakoukoli chybu, přikládám následující case study.

Case Study – “NENAHRADITELNÝ JAMES”

Prostředí
Mezinárodní firma operující v life critical oblasti, přes 50% světového trhu v daném sektoru. Vývojová centra v několika zemích.

Projekt
Migrace všech aplikací na novou platformu pro divizi A. Přes 60 aplikací, čtyři odlišné architektury. Několik sdílených knihoven a klíčových oblastí.
Současně s migrací probíhal vývoj nových funkcionalit v rámci původních aplikací na originální platformě.

Původní stav
Každá sdílená oblast měla jednoho vlastníka (skupinu vlastníků), který oblasti skvěle rozuměl, a nikdo jiný nebyl oprávněn oblast měnit.

Nejvíce kritická situace nastala v klíčové knihovně využívané všemi 60 aplikacemi. Tu měl na starosti James, který ji před mnoha lety navrhl, vymyslel, naimplementoval a celou dobu dělal všechny potřebné změny pro jednotlivé aplikační týmy.

Vzhledem k jeho unikátním znalostem a komplexitě problému bylo řešení v lokálním měřítku optimální, a jeho kapacita stačila požadavkům okolí.

Koncový stav
Po startu migrace, začal být velmi rychle James zahlcený požadavky na změnu knihovny, která byla sdílená přes nové i staré aplikace a v rámci migrace se musela výrazně měnit. Nepomohlo ani to, že některé týmy navrhovaly přímo konkrétní implementaci řešení, kterou stačilo zrevidovat a použít. Čekací doba na změnu kritickou pro migrační projekty byla několik měsíců, což ohrožovalo projekt jako celek.

Řešením byla změna přístupu k této sdílené knihovně a odstranění unikátního postavení Jamese, který už nadále nemohl knihovnu vlastnit a být jejím výhradním přispěvovatelem. Z knihovny se stal sdílený kód, ke kterému měly přístup všechny týmy. Nebyly zpočátku sice tak efektivní jako James, ale průchodnost systému jako celku se odblokovala. Změny samozřejmě probíhaly za Jamesova dohledu a podléhaly revizi Jamese i týmu architektů, aby se předešlo problémům s kvalitou.

Podobné oblasti jsou ve všech větších firmách s komplexnějším prostředím a udělat z nich sdílený kód obvykle pomůže systému jako celku.