Agilné vzory riadenia I.

Za mojich chlapčenských čias ma vždy fascinovala skladačka Lego. Úžasné na tom bolo, že z jednoduchých kúskov ste mohli postavať čokoľvek. Potrebovali ste len tie správne kúsky a vedieť, čo chcete postaviť. Mohli ste si kúpiť pirátsku loď, postaviť ju, potom ju rozobrať, niektoré kúsky dať nabok a postaviť prístav. Čím menšie tie kúsky boli, tým väčšiu ste mali voľnosť v stavaní.

Keď som sa neskôr počas svojej práce stretol s prvými návrhovými vzormi v objektovo orientovanom programovaní, našiel som v nich opäť rovnaký princíp ako malo Lego. Pomocou jednoduchých prvkov, ako je napríklad dedenie, preťaženie, prekrytie metódy alebo polymorfizmy, je možné vytvoriť veľké množstvo rôzne spolupracujúcich tried, ktoré umožňujú pomerne elegantne riešiť aj zložitejšie problémy.

Príklady takýchto problémov a ich riešení:

Problém: Potrebujem vymieňať niekoľko druhov algoritmov, ktoré realizujú jeden proces počas behu aplikácie na základe určitých stavových premenných.

Riešenie: abstraktná trieda + rozhranie + prekrytie metódy + odvodená trieda x počet rôznych algoritmov = vzor „strategy“

Problém: Potrebujem, aby akcia v systéme bola reprezentovaná objektom (kvôli povoľovaniu, Undo / Redo funkciám a pod.)

Riešenie: rozhranie + agregácie + odkaz na metódu = vzor „command“

Samozrejme použitie vzorov nie je také jednoduché, ako som tu popísal, ale mojím cieľom bolo ukázať, že vzory sú skladačky jednoduchých prvkov, ktoré poskytuje objektovo orientované programovanie za účelom riešenia nejakého konkrétneho problému. Existencia vzorov nie je samozrejme obmedzená len na programovanie, ale dá sa nájsť aj v procese testovania, komunikácií klient-server alebo mimo počítačových vied, napríklad v architektúre alebo medziľudských vzťahoch.

A teraz k agilnému riadeniu. Vezmime si napríklad taký Scrum. Je to metóda, ktorá obsahuje niekoľko agilných praktík (produktový backlog, retrospektíva atď.). Čo sa stane, ak si vypíšem agilné praktiky, ktoré obsahuje, niektoré šktrnem, iné dopíšem a potom to zložím naspäť? No mohol by som dostať Kanban. Scrum s Kanbanom sa totiž prekrývajú v niektorých praktikách, ktoré používajú.

Scrum Na Kanban

A práve to ma viedlo k tomu, že agilná metóda môže byť skladačka. Ako Lego. Môžete jednu metódu rozobrať, niektor súčiastky vymeniť a zložiť inú metódu. Stačí len poznať časti, ktoré máte k dispozícii a vedieť, čo chcete postavíť.

Čo sa týka tých častí, tak nám na začiatok postačí The Big List of Agile Practices od Jurgena Appelo-a (mimochodom, jeho blog www.noop.nl vrele odporúčam). Určite nie je úplný, ale obsahuje aspoň základne veci.

Čo sa týka problému, ktorý má metóda riešiť, tak tu sa vrátime späť k návrhovým vzorom. Ako som písal, tie sú určené na riešenie niektorého konkrétneho problému. Ak mám jasné, o aký problém ide, použijem vzor, ktorý ho rieši. Rovnaký postup by sa dal použiť aj pri výbere metódy riadenia projektu. Stačí si len ujasniť, čo potrebujeme.

Takže napríklad: Máme projekt, kde zákazník bude určite meniť požiadavky, ďalej sa projektu bude účastniť tím, ktorý nie je úplne dobre zabehnutý a na záver projekt nemá veľký rozpočet.

Čo potrebujeme:

  • krátke alebo žiadne sprinty, aby sme vedeli reagovať na požiadavky

  • denné meetingy, aby sme zamedzili chaose v tíme

  • Personas, aby sme neprodukovali niečo, čo nikto nebude používať (t.j. odpad)

Takýmto postupom viem identifikovať agilné praktiky, ktoré v metóde potrebujem, aby som sa vyrovnal s požiadavkami na projekt. Treba si totiž uvedomiť, že praktiky, ktoré sú v metóde obsiahnuté určujú jej vlastnosti. Tieto vlastnosti sú zase vyžadované prostredím, v ktorom sa projekt nachádza (t.j. prístup zákaníka, organizácia a pod.).

Prostredie Projektu

A teda na záver. Ak máme návrhové vzory objektovo orientovaného programovania, ktoré sú na riešenie problémov, môžeme mať aj návrhové vzory agilného riadenia na riešenie projektov. Tak ako pri návrhových vzoroch, by časom mohol niekde vzniknúť zoznam vzorov agilného riadenia, kde by boli vypísané zoznamy agilných praktík, ktoré tento vzor obsahuje a vlastnosti, ktoré daný vzor má.

Praktiky v Jurgenovom zozname môžeme v zásade rozdeliť do dvoch kategórií: procesné a objektové (ceremónie a artefakty). Na to, čo to znamená a aké vlastnosti tieto praktiky prenesú na celú metódu, sa pozrieme v ďalšej časti.