Čo znamená Agile?

Nádejné produkty vznikajú často náhodne.  Ak je produkt úspešný, tak bude rásť. Bude potrebovať tím ľudí, ktorí musia byť navzájom koordinovaní, aby tvorili bez prekážok. A práve v tejto fáze sa experiment mení na projekt. Prirodzene sa začnete obzerať po procese, ktorý by stanovil pravidlá kooperácie tímu. Tím sa začne spoliehať na projektový manažment. Proces je často komplikovaný, a preto neskôr nedodržiavaný.

Agile je množina postupov a metód zameraných na manažment vývoja a praktiky, ktoré pomáhajú vytvárať kvalitné produkty s ohľadom na zákazníka. Agile navyše pomáha dodávať v pravidelných intervaloch.

Agile Manifesto

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ť.