Ako to je „Agilne“?

„Osobne som nepredpokladal, že táto skupina sa vôbec dohodne. Hovoriac za seba som potešený výsledkom. Dohodli sme sa na niečom veľmi podstatnom.“

Alistair Cockburn.

Agile bolo dlho označované za moderný spôsob tvorby produktov. Po desiatich rokoch sa Agile stalo de facto štandardom, ktorý sa používa predovšetkým keď:

  • je potrebné rýchlo, priebežne a pravidelne dodávať produkt,
  • je potrebné angažovať do vývoja klienta tak, aby bolo možné reagovať na časté zmeny dané realitou klienta,
  • je potrebná vysoká úroveň transparentnosti stavu projektu,
  • je žiadúce zvýšiť angažovanosť vývojových tímov so zameraním na kvalitu a funkčnosť dodávaného výsledku.

Myslieť inak. Agilne.

Agile je súhrnom praktík a metód, ktoré však vyžadujú zmenu myslenia, filozofie vývoja.

Myslieť agilne znamená:

  • Zamerať sa na výsledok dodávaný priebežne, pričom každá časť výsledku musí byť hodnotná, funkčná a mať zmysel pre klienta.
  • Poznať dobre klienta a používateľov daného produktu. Poznať ich prácu, denné aktivity, problémy a výhody, ktoré im produkt má pomôcť vyriešiť, alebo poskytnúť.
  • Poznať víziu a ciele produktu.
  • Aktívne zapojiť klienta do spolupráce s tímom, pretože chcem funkčný produkt podľa mojich predstáv. Tie nestačí iba zapísať do dokumentu. Tím potrebuje dennú koopoeráciu s dôrazom na detaily.
  • Pracovať a myslieť tímovo, pretože iba dobrý a skutočný tím je schopný rýchlo zareagovať.
  • Akceptovať, že zmeny zadania tu sú a vždy budú, pretože zadanie sa mení kvôli potrebám klientov našich klientov. Neznamená to však, že zmeny sú neriadené. Zmeny sú plánované do jednotlivých iterácií podľa dôležitosti, nie urgentnosti.
  • Uprednostňovať osobnú komunikáciu pred nástrojmi.
  • Pravidelne koordinovať vzájomnú spoluprácu v tíme.

Agilné princípy

V roku 2001 sa skupina 17 ľudí stretla v Utah. Každý z nich hľadal minimalistické prístupy a praktiky vývoja softvéru, ktoré by na rozdiel od v tej dobe tradičných prístupov, umožnili sústrediť sa na funčknú hodnotu dodávanú klientom a nie dokumentáciu a sledovanie procesov.

Dokument s názvom Agile Manifesto postuloval tieto hodnoty:

  1. Ľudia a komunikácia sú viac ako len procesy a nástroje.
  2. Funkčný softvér je viac ako vyčerpávajúca dokumentácia.
  3. Spolupráca so zákazníkom je viac ako dojednávanie zmluvy.
  4. Radšej reagovať na zmenu ako sa držať plánu.

Ľudia a komunikácia

Agilný tím je:

  • malý tím do 10 ľudí,
  •  inter-disciplínny tím, v ktorom pracujú ľudia rôznych rolí,
  • tím bez vedúceho, tím sa samoorganizuje.

Ľudia pracujú v tom istom čase, priestore a na tej istej veci. Ich pracovné prostredie podporuje spoluprácu. Často sú to tzv. open-space pracoviská, v ktorých je jednoduché fyzicky sa presúvať podľa potreby.

Kód vlastní celý tím a každý ho môže meniť bez nutného schválenia ostatnými členmi. V tíme sa aplikuje tzv. párové programovanie a stav vývoja je zdieľaný počas pravidelných denných stretnutí. Umožňuje to vytvoriť tak udržateľné tempo vývoja produktu.

Funkčný softvér

Od úplného začiatku sa tím snaží priebežne dodávať funkčný produkt. Funkčnosť je overovaná testami riadeného vývoja a automatizáciou testovacieho procesu.

Produkt je vytváraný automaticky použitím kontinuálnej integrácie, ktorá zabezpečuje aj otestovanie a vytvorenie inštalácie hneď po tom, čo vývojár ukončil vývoj novej verzie.

Spolupráca so zákazníkom

Zákazník by mal byť s tímom čo najčastejšie. Umožňuje mu to spoznať aktuálny stav vývoja produktu a zároveň skoro ovplyvniť ďalšie smerovanie vývoja podľa jeho potrieb.

Blízkosť zákazníka sa dosahuje priebežnými prezentáciami, spoločným plánovaním nových verzií, spôsobom zápisu požiadaviek formou tzv. user stories, prototypovaním a mapovaním používateľov prostredníctvom tzv. personas.  Tím potrebuje mapovať aj tok hodnoty (value stream mapping).

Reakcia na zmeny

Tradičný vývoj v dnešnej dobe nedokáže dodať potrebný produkt aj napriek skvele splnenému kontraktu. Biznis klienta v realite tiež nie je statický, mení sa. Pravidelné  dodávky v krátkych iteráciách s predvídateľnou rýchlosťou umožňujú priebežne riadiť požiadavky a prispôsobenie sa trhu.

Princípy agilného tímu

Agilné tímy aplikujú nasledovné princípy:

  1. Našou najvyššou prioritou je uspokojiť zákazníka skorým a sústavným dodávaním hodnotného softvéru.
  2. Zmeny požiadaviek sú vítané, dokonca aj v neskorých fázach vývoja.
  3. Agilné procesy dokážu pretaviť zmenu na konkurečnú výhodu zákazníka.
  4. Dodávame funkčný softvér často, od niekoľkých týždňov po niekoľko mesiacov, s uprednostnením čo najkratších intervalov.
  5. Ľudia z biznisu a vývojári musia denne spolupracovať počas celého projektu.
  6. Postavte projekty na motivovaných ľuďoch.
  7. Poskytnite im prostredie, podporu a dôverujte im, že svoju úlohu splnia.
  8. Najlepším spôsobom odovzdávania informácií vývojovému tímu a v tíme je osobný rozhovor.
  9. Základným ukazovateľom napredovania je funkčný softvér.
  10. Agilné procesy podporujú trvalo udržateľný rozvoj.
  11. Sponzori, vývojári a užívatelia by mali byť schopní trvalo udržať konštantné tempo.
  12. Sústavný dôraz na technickú vyspelosť a kvalitný návrh podnecujú agilitu.
  13. Jednoduchosť – umenie vykonať naozaj len to potrebné je nevyhnutnosť.
  14. Samoorganizované tímy vytvárajú najlepšie koncepty, požiadavky a návrhy riešení.
  15. Tím v pravidelných intervaloch vyhodnocuje sám seba s cieľom byť efektívnejší a prispôsobuje tomu svoje správanie.

Výsledkom aplikovania týchto pravidiel je úplná zmenu spôsobu vývoja produktov.

  • Vysoká interakcia s klientom pri tvorbe produktu.
  • Prioritizácia na základe jeho požiadaviek.
  • Odhad zložitosti poskytuje vývojový tím a nielen projektový manažér.
  • Z manažérov sa stávajú lídri.
  • Tím je samoorganizovaný, nikto mu úlohy neprideľuje ani neodhaduje. Tím je sám zodpovedný za rozdelenie práce.
  • Tím sa pravidelne zaoberá zlepšením pracovných postupov.
  • Produkt zákazníkovi dodáva pravidelne a často.
  • Zákazník riešenie akceptuje alebo nie.
  • Tím pravidelne dostáva spätnú väzbu od zákazníka.
  • Práca je neustále prioritizovaná zákazníkom alebo niekým, kto ho zastupuje.
  • Opakované činnosti sa tím snaží automatizovať.