Kanban – ďalší nástroj agilných projektov

Kanban je ďalší nástroj v skupine agilných metód, kde sa nachádza aj Scrum. Je kompatibilný s agilným manifestom a nepopiera agilné princípy. Oproti Scrumu je však menej reštriktívny a je založený na veľmi jednoduchej myšlienke:

Nedokončená práca (Work-in-progress alebo WIP) by mala mať svoje obmedzenie a nová práca sa môže začať len vtedy, keď sa iná práca dokončí (alebo posunie do iného stavu).

Kanban (v japončine “signalizačná tabuľka”) predpokladá, že vznikne vizuálny signál o tom, že sa môže rozpracovať novú úloha, pretože aktuálne množstvo rozrobenej práce ešte nedosiahlo svoj limit.

Kanban schéma

(c) Henrik Kniberg & Mattias Skarin: Kanban and Scrum – Making the most of both (InfoQ 2010)

Znie to zaujímavo ? Na prvý pohľad možno nie, možno je to malá, nenápadná myšlienka, ale môže zmeniť všetko v doterajšom procese! Kanban totižto nie je proces ani metodika, je to spôsob ako zaviesť zmenové riadenie (change management) do existujúceho životného cyklu softvérového vývoja. Bol vytvorený ako časť Lean iniciatívy s cieľom transformovať firemnú kultúru na nepretržité zlepšovanie (Continuous Improvement).

Princíp Kanbanu – začať s tým, čo robíme teraz. Pochopíme proces zobrazením dôležitých tokov a nastavíme limity na každý stav tohto procesu. Potom začneme pracovať s tokom úloh v systéme tým, že ich vyberáme len vtedy, keď je vygenerovaný Kanban signál. Toto spôsobí, že sa v niektorých stavoch začnú úlohy blokovať a upchávať systém. To je to, čo sme chceli – tím v čo najkratšom čase odstráni problém a obnoví tak tok úloh. Pochopením príčin, upravovaním limitov WIP prípadne zmenou stavov procesov sa celý tok stáva priechodným.

Kanban takto vďaka transparencii zviditeľňuje úzke hrdlá, fronty, nestálosti a zbytočnosti – toto všetko má vplyv na výkonnosť z pohľadu množstva užitočnej práce a doby cyklu (začaté – odovzdané). Prehľadnosť sa dá ľahko zabezpečiť tým, že sa použije tabuľa/stena s lístočkami. Lístoček (Post-it) je ten vizuálny signál, ktorý som spomenul na začiatku.

Pravidlá sú iba dve:

  1. vizualizuj svoj pracovný tok
  2. limituj svoj WIP

Ešte spomeniem stručné podobnosti Kanbanu so Scrumom:

  • sú Lean a Agile
  • používajú plánovanie vyberaním úloh
  • obmedzujú WIP
  • používajú prehľadnosť na riadenie procesu zlepšovania
  • sústreďujú sa na vytvorenie potencionálne dodateľného produktu rýcho a často
  • stavajú na samoriadenie sa tímu
  • požadujú rozdelenie práce na menšie časti
  • release plán je priebežne upravovaný na základe empirických dát (velocity/lead time)

Odlišnosti Kanbanu od Scrumu:

  • časovo obmedzené iterácie (Sprint) sú voliteľné, nie povinné
  • záväzok tímu je voliteľný, nie povinný
  • používa Lead Time ako metriku na plánovanie a vylepšenie procesu, nie Velocity
  • všestranný tím je voliteľný, špecializované tímy/jednotlivci su povolené
  • roly nie sú preddefinované
  • veľkosť úloh môže byť ľubovolný
  • burndown grafy nie sú povinné
  • WIP obmedzuje priamo, Scrum nepriamo
  • odhady sú voliteľné
  • nové úlohy sa môžu pridávať do zoznamu hocikedy, ak to dovoľuje WIP limit
  • Kanban tabuľa nie je špecifická pre jeden tím, môže ju zdieľať viacero tímov alebo jednotlivcov
  • Kanban tabuľa pretrváva a neruší sa po každej iterácii
  • prioritizácia nie je povinná ale voliteľná

Myslím, že stojí za to sa nad Kanbanom zamyslieť a zvážiť jeho výhody a prípadné dôsledky. Má menej obmedzení ako Scrum, takže jeho akceptácia v tíme môže byť jednoduchšia, navyše kto má skúsenosti so Scrumom a narazil na niektoré jeho obmedzenia, je možno toto ten správny impulz, že je čas sa posunúť zase o kúsok ďalej.

Rola: ScrumMaster

ScrumMaster je jeden z najdôležitejšách prvkov Scrumu, ak chceme byť úspešní.

Prvý kľúčový bod a zároveň najčastejšie nepochopenie tejto role – ScrumMaster nie je manažér Tímu, neriadi ho. Vyplýva to už z názvu tejto role – “ten kto ovláda Scrum”. ScrumMaster teda Tím podporuje, slúži mu, ochraňuje ho pred vonkajšími vplyvmi a usmerňuje ho, aby bol Scrum pochopený a správne aplikovaný. Prechod na agilné princípy nie je jednoduchý, od samého začiatku zviditeľňuje skryté prekážky v organizácii – práve počas týchto náročných zmien je potrebná úloha ScrumMastera.

Rola ScrumMastera teda zahŕňa následovné zodpovednosti:

  • ochraňuje Tím pred vonkajšími vplyvmi, ktoré by mohli jeho prácu narúšať
  • odstraňuje každodenné prekážky, ktoré by mohli znížiť efektivitu práce Tímu
  • koučuje Tím, Product Ownera a celkovo organizáciu, aby dodržiavali pravidlá Scrumu a integrovali agilné praktiky, sledujúc pritom cieľ – úspešné a efektívne nasadenie Scrumu
  • koučuje Tím, aby správne nasadil a používal vhodné XP praktiky
  • koučuje Product Ownera, aby pracoval efektívne s Product Backlogom, s požiadavkami na produkt, aby maximalizoval návratnosť investícií
  • podporuje dosiahnutie zhody medzi očakávaniami Product Ownera a prísľubom Tímu – mediátor v ich komunikácii
  • organizuje a pomáha viesť porady predpísané Scrumom

Zo začiatku sa na túto rolu odporúča priradiť osobu na plný úväzok. Členovia Tímu sa ešte len zoznamujú so Scrumom v ich každodennom živote, manažment hľadá možnosti, ako zasahovať do iterácií,  vývojové prostredie a testovacie nástroje nie sú pripravené na agilné procesy… toto všetko predpovedá, že ScrumMaster bude mať plné ruky práce.  Neskôr, ako sa Scrum a agilné myšlienky stávajú samozrejmosťou, nástroje sú automatizované a XP praktiky sa plnohodnotne využívajú, význam dedikovaného ScrumMastera klesá a jeho kapacita sa môže postupne presúvať na členov Tímu, napríklad rotovaním tejto role.

Koho do role ScrumMastera dosadiť ? V prvom rade takú osobu, ktorá už má skúsenosti s agilnými princípmi a vývojom, je do Scrumu zaškolená a verí v agilné princípy. Tieto predpoklady netreba podceniť, medzi agilnými projektami a chaosom je relatívne tenká línia, takže neskúsený ScrumMaster môže narobiť viac škody ako úžitku. Je to teda ten, kto vie o Scrume najviac a je ochotný a schopný tieto vedomosti šíriť ďalej a presadzovať ich nielen v Tíme ale aj v celej organizácii. Je tiež užitočné, ak má ScrumMaster zároveň praktické znalosti z projektového manažmentu, dizajnu, kódovania a testovania, takže sa ľahko stotožní so vznikajúcimi problémami a vie ich promptne riešiť. Ak však bol ScrumMaster pred prechodom na Scrum vedúcim tímu / projektovým manažérom, jeho zmena myslenia môže byť veľmi ťažká – musí v sebe potlačiť tendenciu prikazovať členom čo a ako robiť, plánovať, rozhodovať za nich o riešeniach alebo prideľovať konkrétne úlohy. Samoriadenie Tímu ako nástroj na zvýšenie efektivity potom nezafunguje.

Ako už bolo spomenuté, časom sa môže rola ScrumMastera obsadiť členom Tímu. Neplatí to však v prípade kombinácie ScrumMaster-Product Owner. Tieto roly sú často vo vzájomnom rozpore a človek na dvoch takýchto stoličkách má ťažké sa rozhodnúť, koho rolu má v ktorej situácii hrať. Napríklad Product Owner je pod tlakom priorít v požiadavkách a ak v sebe potlačí zodpovednosť ScrumMastera, tak môže urobiť takú zasadnú chybu ako meniť Tímu úlohy počas Sprintu. Bez druhej osoby mu chýba jasný protiklad, ktorý by ho upozorňoval na potencionálne chyby a riziká a nasadenie Scrumu by sa minulo účinkom.