Jedna z vecí, ktorú som sa naučil o tom, ako sa vysvetľujú agilné metódy (alebo v podstate čokoľvek, čo je netradičné) je, že niet nad dobrú metaforu. Moja obľúbená hovorí o tom, že vývoj softvéru je ako krájanie torty. Raz za čas (zväčša na konci iterácie) chcete dať zákaznikovi ochutnať to, čo pečiete. Tak ako torta je najlepšia, keď sa reže vertikálne (pretože obsahuje všetky tie rôzne, chutné vrstvy) tak ten prírastok kódu v tejto iterácii by mal byť vo všetkých vrstvách aplikácie (od databázy až po zobrazovaciu vrstvu). Skončiť iteráciu s tým, že máme hotovú kompletnú databázu, ktorú ale zákazník nevie oceniť, je ako odrezať niekomu kruh piškótového cesta zospodu torty. Kniha The Art of Agile Development od Jamesa Shora a Shane Wardena obsahuje okrem iných drahokamov aj množstvo podobných metafór.
The Art of Agile Development je príručka extrémneho programovania. Je dobrá pre úplných začiatočníkov aj pokročilých agilistov. Hneď prvá časť je určená tej prvej skupine. Vysvetľuje základné myšlienky, ktoré sa skrývajú za praktikami extrémného programovania. Rozoberá roly, ktoré v takom tíme sú a nechýba kapitola s informáciami ako to celé začať. Tí pokročilejší tam môžu nájsť tabuľku porovnania praktík, ktoré odporúčajú autori v extrémnom programovaní voči praktikám z prvého a druhého vydania Extreme Programming Explained od Kenta Becka a Scrumu.
Najpodstatnejšia z knihy je druhá časť. Tá obsahuje zoznam 37 praktík rozdelených do 5 oblastí. Praktiky sa rôznia od vyslovene technických, ako napríklad Pair Programming, Iteration Demo, Ten-minutes Build až po pomerne filozofické ako Trust (dôvera medzi členmi tímu alebo tímom a zákazníkom), Energized Work (t.j. prečo nerobiť nadčasy) alebo Slack. Každá praktika je podrobne rozobraná (kniha má 400 strán) a obsahuje časti:
- Prečo to vôbec robiť?
- Ako to robiť?
- Podrobný popis
- Často kladené otázky ohľadom tejto praktiky
- Možné problémy
- Alternatívy k praktike
- Zhrnutie
- Zoznam literatúry na ďalšie štúdium
Okrem toho sú medzi praktikami krížové odkazy, ktoré hovoria o tom, ktoré postupy je dobré používať spolu (a získať tak synergický efekt). Každá z piatich oblastí, v ktorých sú praktiky rozdelené, obsahuje tiež jedno cvičenie na prehĺbenie pochopenia myšlienky, ktorá sa za ňou skrýva.
Pre tých, ktorým sú známe praktiky a ktorí hľadajú niečo viac, je určená posledná časť. Autori sa v nej snažia ukázať ako rozvíjať agilné praktiky ďalej (často krát ide už o ladenie detailov vo vzťahu projekt – metóda riadenia). Zaoberajú sa hlavnými myšlienkami extrémneho programovania a snažia sa ukázať možné smery, ktorými sa dá ísť ďalej. Tretia časť obsahuje kapitoly ako Values and Principles, Improve the Process, Rely on People, Eliminate Waste, Deliver Value a Seek Technical Excellence.
Kniha je celkom dobre postavená a napísaná. Postupne začína základnými myšlienkami, vysvetľuje praktiky až finišuje otvoreným koncom o smerovaní ďalšieho vývoja. Veľmi ťažko v nej budete hľadať hranice medzi technickými praktikami vývoja a praktikami riadenia tímu, čo je ale pre extrémne programovanie príznačné. Nedá mi ale nevytknúť jednu vec. Autori de-facto ignorujú testerov. Hovoria hlavne o programátoroch a analytikoch a len sem-tam utrúsia poznámku typu: „K tomuto môže prizvať aj testerov.“ Osobne sa s týmto neviem stotožniť, pretože považujem testerskú prácu za rovnako dôležitú a komplikovanú ako prácu vývojárov (hlavne ak sa začne brať do úvahy automatizované testovanie).
A kde sú metafory, ktoré som spomínal na začiatku? Sú rozhodené po celej knihe, ale najviac je ich v druhej časti. V tomto smere považujem túto knihu za najlepšiu, akú som kedy mal v rukách. Na záver jedna za všetky: Predstavte si balvan na vrchu kopca. Ako tak stojí na tom kopci, ma sám o sebe potenciál hýbať sa, ale potrebuje malé postrčenie, aby sa rozbehol, aby sa tá energia uvoľnila. Tvar krajiny sa ale časom mení a to čo je dnes kopec môže byť po čase rovina a tak váhanie môže spôsobiť, že balvan stratí svoj potenciál. Balvan = hotový softvér, postrčenie = zverejnenie (release).
Agilný tím by mal byť multiprofesný. Okrem architektov a staviteľov, ktorí ťažko pracujú a budujú produkt, by mal obsahovať niekoho, kto povie, že sa program dá používať. Niekoho, kto sa pozrie na celú vec z inej perspektívy a nájde chyby, ktoré možno z tej pôvodnej nebolo vidno. Niekoho, kto stojí na polceste medzi programátormi a zákazníkmi, a tak sa vie najlepšie dorozumieť s obidvoma skupinami. Tušíte správne, že ten niekto je tester. Aspoň tak ho vidia Lisa Crispin a Janet Gregory v ich knihe Agile Testing.
Ak zvyknete brať do rúk knihy o riadení zmien vo firme, skôr alebo neskôr pravdepodobne narazíte na meno John P. Kotter. Kotter je človek, ktorého niektorí označujú za guru v riadení zmien. Je autorom niekoľkých kníh, z ktorých najznámejšie sú Vedenie procesu zmeny a Náš ľadovec sa potápa. Teória úspešnej zmeny, ktorú John prezentuje, hovorí, že táto zmena by mala prebiehať v ôsmich krokoch:
Už sa vám niekedy stalo, že ste dali zákazníkovi niečo len preto, aby zistil, že v podstate chcel niečo iné? Teória Lean-u by na to povedala, že ste práve vyrobili odpad. Samotná chyba ale nemusela byť vo výrobnom procese, ale v tom, že zákazník nevedel vyjadriť, čo presne chce. Agilné metódy radia, že máte so zákazníkom komunikovať tak často ako sa dá. Menej rád už ale ponúkajú v tom, ako presne to máte robiť. Ako z neho dostanete informáciu, ktorú síce má, ale o tom, že ju vlastní ani sám netuší? Luke Hohmann vo svojej knihe Innovation Games odporúča zahrať si so zákazníkom hru.
Občas sa stáva, že pri zavádzaní Scrumu uviaznete v bludnom kruhu. Ten kruh je tvorený dvoma faktami: agilné metódy začnú fungovať až v momente, keď ich ľudia začnú používať a ľudia začnú nejaké metódy používať až v momente, keď vidia, že fungujú. Tento cyklus sa dá prerušiť tým, že používanie dostanú ľudia jednoducho príkazom, ale to nie je v duchu agilných metód, ktoré stavajú ľudí na prvé miesto (určite tým stratíte ich angažovanosť, čo je vzácna a ťažko nahraditeľná surovina). Našťastie má tento problém aj iné riešenie, ktoré môžete nájsť v knihe Coaching Agile Teams od Lyssa Adkinsonovej.




