Tvoríme produkt agilne

Softvérové produkty tvoríme mnohokrát ako domy. No dá sa to aj inak a lepšie.

Článok bol publikovaný na Zajtra.sk

Story je v Scrume základným prvkom popisujúcim požiadavky. Je to jednoduchý a zrozumiteľný popis o tom kto, čo a prečo danú vlastnosť potrebuje.

Ako ale popísať komplexný systém v takejto jednoduchej forme? Práve táto otázka je často kladená pri prechode na agilný vývoj.

Stavba

Ako staviate dom? Najprv základy, potom prízemie, prvé spochodie, ďalšie poschodia no a nakoniec strecha? Výsledok, teda dom, je odovzdaný ako celok. Až potom ho zákazník začne používať.

Softvérové produkty budujeme často podobne. Po vrstvách. Najprv datábaza.
Potom (celý) dátový model, ktorým presne zmapujeme požiadavky klienta. Potom pridáme vrstvu s obchodným modelom. Potom vrstvu webových služieb no a nakoniec užívateľské rozhranie.

Výsledok je, rovnako ako dom, použiteľný až na konci. Dôsledkom je, že
vznikajú tímy orientované podľa odbornosti. Tímy databázových špecialistov, web dizajnérov, vývojárov služieb a podobne.

Vertikálne?

Softvér sa však dá vytvoriť aj vertikálne. Skúsme vytvoriť iba jednu vlastnosť. Implementujme iba časť databázy popisujúcej danú vlastnosť, potom časť obchodnej logiky, pridajme metódy do webovej služby a sprístupnime užívateľské rozhranie. Vytvorme funkčný blok. Všetko iba pre jednu vlastnosť. Tú dodajme klientovi. Zákazník ju hneď môže začať používať a poskytnúť nám spätnú väzbu.

Až potom pokračujme ďalšou vlastnosťou. Akokeby náš dom bol zostavený z väčších komponent, napr. izieb, ktoré k sebe už iba primontujeme.

Inkrementálne a iteratívne

Takýto inkrementálny vývoj sa dá ešte zlepšiť iteratívnym vývojom. Iteratívny vývoj zdokonalí detaily. Farba na stenách bude v prvej verzii iba biela. Až potom sa rozhodneme pre detaily a pridáme ich. Podobne ako pracuje maliar. Najprv obrys, potom farby, tiene až nakoniec.

Increment vs iterative

Ako nato v softvérovom vývoji? Najprv vytvorte jednoduchý formulár pre zber údajov. No aj s databázovou časťou a webovou službou. Funkčné zadávanie údajov, nielen jednu vrstvu aplikácie. A používateľ môže zadávať údaje bez ohľadu na krásu formulára.

Potom pridajte kontroly. Prispôsobte poradie prvkov lepšej editácii. Zmeňte vzhľad, aby oslovil klienta.

No v tomto momente je to pre klienta už možno zbytočné. Klient totiž potreboval upraviť, zadať, údaje. A to dostal už dávno. Spýtajte sa ho teda ešte predtým, či to skutočne potrebuje.

Záver

Vždy keď píšete novú story na kartičku, vždy si všimnite či na kartičke nie je napísaný technický termín (databáza, webservice, business model a pod.). Ak áno,potom je táto story podozrivá. Pretože pravdepodobne popisuje horizontálnu stavbu domu. Klienta nezaujíma, že ste pridali tabuľku do databázy, ale nemôže ju použiť. Aká je teda hodnota takto implementovanej
vlastnosti?

0

Zamyslite sa teda už na začiatku, pri písaní kartičiek, na výsledok, ktorý je použiteľný. Prinesie vám veľmi skorú spätnú väzbu ešte v čase, keď kód je ešte v hlavách tímu. V čase keď sa dá jednoducho opraviť.

Úlohy alebo aj niečo viac?

Projektový manažment je o ľuďoch, peniazoch a produkte. Tieto tri časti reprezentujú úlohy. Sú ale úlohy postačujúce?

Náš život je riadený úlohami

Aj vy to tak pociťujete? Taká úloha je často definovaná ako odpoveď na otázky:

  • Čo?
  • Kto?
  • Ako?
  • Ako dlho?

Projekty sú tak tvorené množstvom úloh, ktoré navyše navzájom komplikovane súvisia. Navyše úlohy sú vytvárané v projekte veľmi skoro, už počas tvorby projektového plánu kedy nie je celkom jasné čím daný projekt je, kto ho bude riešiť a aký je rozpočet. Skoro nič nie je isté. Poznáte to aj Vy?

Vo firmách, ktoré sú riadené iba úlohami často postrehnete určitý vzor chovania.

Ľudia si ráno typicky otvoria ďalšiu úlohu (v nejakom elektronickom systéme) a keď je dokončia, tak (v lepšom prípade) ju uzavrú a otvoria si ďalšiu. Pracovný život sa tak časom zmení na cyklus OTVOR-VYRIEŠ-UKONČI. Tím zrazu po nejakej dobe nevie odpovedať na otázku PREČO?. Stráca sa tak poznanie produktu, zákazníka a jeho potrieb. Stráca sa tak chápanie prvotných príčin prečo je vlastnosť potrebná, chápanie kontextu riešeného problému. A tieto straty mňa, produktového manažéra, by mali trápiť. Veľmi. Priam bolieť. Tím dokonca nerozumie pre koho vyvíja a ako je to dôležité pre vašu firmu. Ako to zmeniť?

Stories

Prepáčte, že použijem anglický termín, ale zatiaľ som dobrý preklad do slovenčiny nenašiel. ‘Príbeh’ mi v tomto prípade znie čudne.

Story je požiadavka. No, nie tak celkom, ale v podstate sa tak dá chápať.

Požiadavka, ktorá je náročky v agilnom projekte zapísaná inak. Jednoducho a prehľadne. Na kartu, s ktorou sa dá manipulovať. Story je zapísaná v tejto forme:

 

 

Príklad (a môj odkaz pre Zajtra.sk :))

 

Rozdiely voči úlohe? Story jasne popisuje kto, čo a hlavne prečo to potrebuje. Tým, že je popis stručný, je aj požiadavka pomerne presne popísaná a je navyše malá rozsahom. A teda ľahko manažovateľná. Dá sa pomerne ľahko určiť kto je schopný story riešiť a ako dlho bude trvať jej riešenie. Dá sa ľahko implementovať v krátkom časovom intervale a sledovať jej priebeh.

Všimnite si veľmi dôležitú vec. Story nepopisuje AKO problém riešiť. Prečo? Lebo človek, ktorý požiadavku zadáva to nevie. A ani by nemal chcieť vedieť. Nato tu máme lepších expertov, vývojový tím.

Backlog

Bohužiaľ ďalšie anglické slovo. Backlog je utriedeným zoznamom stories.
Na rozdiel od zoznamu úloh je tak backlog popisom produktu, nie činností a aktivít. Tento zoznam nie je len utriedený, ale navyše stories sa líšia v detailoch popisu. Čím dôležitejšie tým presnejšie. Tie najmenej dôležité sú často popísané iba titulkom, napr. Finančná analýza

Backlog je spravovaný produktovým vlastníkom. Iba on určuje dôležitosť, poradie, stories v backlogu. To on pridáva detaily tak, aby najdôležitešie úlohy boli popísané čo najpresnejšie. Tak aby vývojový tím ich vedel implementovať.

Hey dude, where is my backlog?

Kde je backlog v agilnom projekte? No predsa na tabuli! Všimnite si prvý stĺpec s názvom Product backlog. Všimli ste si to keď ste čítali minulý diel o viditeľnosti?

Každá sivá kartička popisuje story. Potrebujete zmeniť prioritu? Presňte kartu vyššie alebo nižšie. Na základe čoho? Na základe obchodnej hodnoty vlastnosti.

Tipy

  • Story by mala byť implementovaná maximálne počas polovice iterácie.
  • Story by mala mať aj akceptačné kritéria. Tie sú malým kontraktom. Zvyčajne zapísané počas plánovacích mítingov spolu so zákazníkom, produktovým vlastníkom a tímom.
  • Nezaoberajte sa odpoveďami na otázku AKO. V Scrume budete mať inú príležitosť kedy sa to spýtať. Nie pri definovaní produktu.
  • Story je buď dokončená alebo nie. Neakceptujte Dokončená na 90%. Už len 2 minúty.
  • Dokončená môže mať rôzny výklad. Dohodnite sa čo znamená HOTOVO.
  • Detaily v popise story pridávajte tak NESKORO ako sa dá. Predpokladajte zmenu. Ušetrite čas, ktorý strávite pri podrobnej špecifikácii požiadavky na vývoj. Aj tak sa požiadavka zmení.
  • A na záver najdôležitejšie. Každú novú požiadavku zapíšte na papierik a roztrhajte ho. Pretože iba 20% vlastností je použitých užívateľmi aplikácií. Ostatné je nepotrebný odpad.

Linky

Článok bol publikovaný na Zajtra.sk

Viditeľnosť v projekte je kľúčová

Sledovanie úloh, ich priradenia a progresu je v klasickom manažmente zväčša úlohou projektového manažéra. V agile/scrume je to ale úloha celého tímu. Prečo? Lebo manažment agilného projektu je založený na spolupráci ľudí (viď Roly).

Kľúčom je viditeľnosť, pretože podporuje dôveru klienta, manažmentu a aj ľudí v tíme samotnom. Koľkokrát ste mali pocit, že robíte podstatne viac ako kolega sediaci vedľa Vás? Je to ale skutočne tak? Projektový manažéri možno majú prehľad, no často táto viditeľnosť chýba na úrovni tímu.

Tabuľa

Zabudnite na Microsoft Project. Viditeľnosť projektu pre všetkých v ňom nie je možná. Použite jednoduchú tabuľu rozdelenú na viacero stĺpcov. Každý stĺpec popisuje stav úlohy.

Obrovskou výhodou je, že Vám stačí len letmý pohľad a okamžite viete stav projektu.

  • Máte viac papierikov na ľavej strane? Pravdepodobne je toho pred Vami ešte veľa.
  • Je veľa papierikov v strede? Máte veľa vecí otvorených. A je ich dokonca viac ako členov tímu? Pravdepodobne by ste si mali prečítať niečo o Getting Things Done (GTD).

Navyše ak takáto tabuľa je v miestnosti, v ktorej je aj tím, tak zmenu, resp. progress, v projekte postrehnete už len periférne keď kolega vstane a presunie papierik.

Distribuovaný tím?

Hmm, pre distribuovaný tím nebude asi jednoduché dosiahnuť takýto vizuálny manažment.

Niektorí sa snažia tabuľu fotiť, potom fotky posielať alebo zdieľať cez wiki do inej lokácie. Výsledok? Nepoužiteľné, pretože vidíte iba rozloženie papierikov, nie detaily. Jediným riešením je dobrá elektronická aplikácia.

Stačí vidieť a byť videný?

Nie, nestačí. Ak by manažment projektu mal byť iba v presúvaní papierikov, tak v podstate nemáte tím.
Základom je komunikácia. Scrum preto odporúča jednoduchú techniku nazývanú denný standup:

  • Tím sa stretne pred tabuľou každý deň v ten istý čas, ktorý vyhovuje všetkým.
  • Každý člen tímu má jednu minútu na zodpovedanie troch otázok. Len jednu minútu nič viac. Čas je najcennejším.
  • Na čom som pracoval včera?
  • Na čom budem pracovať dnes?
  • Aké mám problémy?
  • Potrebujte prebrať viacero detailov? Pokračujte na inej porade a len tí, ktorí majú čo povedať. NIe celý tím.

Zo začiatku vám to bude pripadať ako ďalšia zbytočná porada, ale pri dobrej organizácii je tento míting veľmi efektívnźm spôsobom zdieľania informácii o stave projektu. Najdôležitejšie pre mňa pri tomto spôsobe je, že mnoho informácií vám prejde cez hlavu. Informácie, ktoré sa vynoria v momente keď ich budete potrebovať. Tzv. AHA moment.

Tipy

  • Papierik presúvajte v momente, keď sa mení stav úlohy, nie raz týždenne.
  • Použite rôzne farby pre rôzne typy úloh.
  • Niektoré tímy používajú farbu podľa toho, kto na úlohe pracuje. V agilnom projekte ale chceme mať tím multidisciplínnym, a preto ja osobne to neodporúčam.
  • Indikujte problémy s úlohou vizuálne. Pripnite farebný špendlík, resp. malý červený papierik.
  • Rôzne tvary zlepšia prehľad.
  • Rozdeľte stĺpce na viacero stĺpcov ak váš process je komplikovanejší.
  • Vyhradťte si čas tabule na tzv. parking lot. Parkovisko úloh, ktoré tím nie je schopný samostatne riešiť, resp. nie je zatiaľ jasné čo s úlohou.
  • Tabuľa nie je len pre IT projekty. Obrázok hore zobrazuje úlohy operation tímu.
  • Vytlačte si malé fotky alebo avatarov reprezentujúcich členov tímu. Urobte niečo pre rozveselenie.
  • Používate dovolenkovú aplikáciu? Dajte fotky dovolenkujúcich do samostatnej časti tabule. Jendoduché nie?

Užitočné odkazy

A nakoniec otázka, ktorú by ste sa mali spýtať pred odchodom z práce.

Článok bol publikovaný na http://www.zajtra.sk/zivot/340/manazment-projektu-inak-klucom-je-viditelnost.

Extrémne dobrý v extrémnom programovaní

the.agile.developmentJedna 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).

Agile Lean Network Europe

Možno ste postrehli na LinkedIn vznik veľkej ne-organizácie Lean Agile Europe združujúcej ľudí z rôznych krajín Európy, ktorí sa zaujímajú a praktikujú  Agile.
Dňa 7.-9. septembra sa v Berlíne uskutoční Lean Agile Europe ne-konferencia, na ktorej by ste sa mali zúčastniť.

Túto nekonferenicu organizuje tím 40 dobrovoľníkov z celej Európy. Konferencia prinesie zaujímavé nové formáty, ktoré ste doteraz možno nevideli nikde inde.

Cieľom bude sa stretnúť s ľuďmi z Európy a diskutovať o softvér, filozofii, vede, histórii a podobne.
Veľa detailov je ešte len spracovávaných. Sledujte vývoj na http://ale2011.eu alebo Twitter #ALE2011.

Dnes bola spustená pre-registrácia s možnosťou zľavy vstupného.
Chcete sa zúčastniť?  Ozvite sa mi: dusankocurek@hotmail.com

Dovidenia v Berlíne!

Meetup v Košiciach

Chcete prísť na prvý agile meetup organizovaný Agile@Slovakia, aby ste:

  • Spoznali ľudí, ktorí aplikujú agile prakticky ?
  • Spoznali odpovede na otázky ohľadom Agile/Scrum, s ktorými bojujete vo Vašej organizácii?
  • Stali sa členmi komunity?

Pripojte sa k nám 26.5.2011, 17:30 v reštaurácii U Starého Otca, Kováčska 9, Košice. Zväčšiť mapu

Prednášané témy

Automatizácia/ procesy a testovanie ako súčasť agilného vývoja

Peter Špireng, COOPEX Soft s.r.o.

Agile hry v tíme


Dušan Kocúrek, Agile@Slovakia

Lean vo firemnom prostredí

Ján Majoroš, Siemens

Témy (Backlog)

  • Zavádzanie Scrumu vo firemnom prostredí

  • Čo znamená byť dobrý ScrumMaster

Budú to krátke 15 minútové prezentácie s diskusiou.   Vsupné zadarmo, nápoje a jedlo na Vašu vlastnú útratu.

A aby to bolo zaujímavejšie, budeme sa snažiť spojiť aj s Bratislavou, kde bude meetup v ten istý deň organizovaný partnerom Agília.

Manažér v dobe Agile

V posledných týždňoch sa stretávam s manažérmi, ktorí sa zaujímajú o Agile. Záujem nepramení možno ani tak z chute ho nasadiť ako skôr z obáv z jeho nasadenia.

Otázka, ktorá je najčastejšia po školeniach je: “Kde je v Scrum-e manažér? Znamená to, že nie som potrebný?”. Tvrdá odpoveď  je, že časom nebudete potrební. Táto odpoveď je tvrdá, ale pravdivá. Na prvý pohľad a počutie to pre manažéra automaticky znamená, že Agile je pre neho ohrozením.  Túto prvotnú a často hlavne emotívnu úvahu však nenasleduje dôležité zamyslenie sa.

 “Čo môžem, z mojej pozície, robiť v agilnom tíme?”  A možno ešte lepšia otázka: “Ako môžem pomôcť agilnému tímu?”

Manažér typicky potrebuje dokončiť činnosti, ktoré v agilnom tíme zrazu môžu robiť,  iné roly.

Činnosť

 Typicky

Agilný tím

Reportovanie Týždenne
Excel 
Denne
Scrum board
Burn Down graf Celý tím 
     
Plánovanie Manažér plánuje typicky sám, neskôr ďalší skomentujú plán. 
Odhadovanie úloh robí typicky manažér.
Produkt je plánovaný celým tímom. Každý sprint je plán upravený podľa aktuálnych požiadaviek. 
Odhadovanie úloh je tímové (planning poker).Celý tím 
     
Manažment zdrojov Projektový manažér je zopodvedný za manažment zdrojov.
Manažér ľudských zdrojov najíma/prepúšťa ľudí. Požiadavky sú zvaäčša dané projektovým manažérom.
Tím identifikuje požiadavky na nové zdroje. Vybraní členovia  tímu sa zúčastnia prijímacích pohovorov a vyberú kandidátov, ktorí tímu pomôžu.Manažér ľudských zdrojov pomôže tímu s legislatívou a pod. 
     
Identifikácia rizík  Projektový manažér  sleduje možné riziká a snaži sa im predísť. Tím identifikuje riziká, Scrum Master riziká sleduje a pomáha tímu. Tím 
     
Odmeňovanie  Team leader, projektový manažér [Kontroverzné] Tím rozdeľuje tímovú odmenu 
     
Obchodné ciele, vízia a stratégia  Zákazník je kontaktovaný obchodnou zložkou, s ktorou uzavrie kontrakt bez komunikácie s realizačným tímom. Pevný dátum, rozsah a cena.Vízia a stratégia je zväčša nemenná. Zákazník je začlenený do realizačného tímu. Kontrakt je často daný na iterácie s možnosťou zníženia v prípade neodkončenia/odmeny v prípade ukončenia väčšieho rozsahu. Vízia a stratégia sa prispôsobuje požiadavkám a situácii na trhu.Produktový vlastník
     
     

Tento presun veľkej časti zodpovednosti samozrejme pre manažéra znamená viac možností sa venovať inému typu práce.  

Čím iným sa teda môže manžér zaoberať?

  • Leadership tímu –  konečne budete mať viac času sa venovať rozvíjaniu sa v tejto oblasti
  • Rozvoj ľudí – práca s ľudmi, ich kariériou
  • Tréningový program – zdieľanie vedomostí, nové technológie, rozvoj ľudí smerom, ktorý je potencinálne prospešný pre budúcnosť spoločnosti
  • Komunikácia v organizácii – aj agilné tímy potrebujú zástupcu v organizácii.

Samozrejme to nie je všetko…. No nezabudnite predtým, než sa rozhodnete s niečím pomôcť, spýtať sa PREČO PRE KOHO je danná činnosť potrebná. Možno je to odpad (waste podľa Lean).