Co je to Agile?

Anotace

Agilní metodiky, buzzword posledních let, je odlehčená skupina metodik používaná k vývoji software. Agilní metodiky jsou založené na interativním a inkrementálním vývoji a jejich klíčovou součástí je důraz na komunikaci. Agilní přístup k práci a organizaci lidí našel v poslední době uplatnění také dalších oblastech lidské činnosti.

The most important thing to know about Agile methods or processes is that there is no such thing. There are only Agile teams. The processes we describe as Agile are environments for a team to learn how to be Agile.

(Dan Wells)

Historie

Během 90. let začalo několik lidí nezávisle na sobě kriticky hodnotit, co je pro vývoj softwaru podstatné. Kent Beck přišel s Extrémním programováním, Jeff Sutherland a Ken Schwaber formalizovali nový framework nazvaný Scrum a Alistair Cockburn pracoval na sérii metodik zvané Crystal Clear.

Techniky užívané Agilními metodikami existovaly už dříve, ale pojem Agile se poprvé objevil až v únoru 2001. Kent Beck, Jeff Sutherland, Ken Schwaber, Alistair Cockburn a dalších třináct respektovaných odborníků se sešlo v lyžařském středisku Snowbird v Utahu, aby diskutovali o odlehčených metodikách vývoje. Výsledkem setkání byl Manifest Agilního vývoje softwaru.

Agilní manifest

Agilní manifest si uvědomuje, že tým pracující společně je důležitější než proces. Nový proces může zvýšit produktivitu týmu o několik procent. Umožníme-li týmu pracovat efektivně jako sebedisciplinované a samoorganizující se jednotce, můžeme zvýšit produktivitu násobně. Jeff Sutherland (Sutherland and Sutherland 2014) uvádí, že rozdíl v produktivitě vývojářů se liší desetkrát, zatímco rozdíl v produktivitě týmů je až 4000krát. Týmy pracující na zlomku svého potenciálu tedy nejsou výjimkou.

Druhou změnou prosazovanou Agilním manifestem je přístup k zákazníkovi. Ve chvíli, kdy tým nestíhá slíbený termín, je tradiční přístup nechat vývojáře rozhodnout, co bude fungovat a co se „ošidí“. Příkaz nadřízeného „všechno musí fungovat“ je ve skutečnosti při nedostatku času ekvivalentní příkazu „nic nemusí fungovat“. Naopak v Agilním vývoji necháme o budoucnosti projektu rozhodnout zákazníka. Protože je zákazník člen týmu, může dělat drobné korekce kdykoli během vývoje. V mnoha případech může být také levnější rozběhnout vývoj s flexibilními požadavky než zajistit, aby se požadavky nikdy nezměnily.

Manifest Agilního vývoje software

Objevujeme lepší způsoby vývoje software tím, že jej tvoříme a pomáháme při jeho tvorbě ostatním. Při této práci jsme dospěli k těmto hodnotám:

  • jednotlivci a interakce před procesy a nástroji,
  • fungující software před vyčerpávající dokumentací,
  • spolupráce se zákazníkem před vyjednáváním o smlouvě,
  • reagování na změny před dodržováním plánu.

Jakkoliv jsou body napravo hodnotné, bodů nalevo si ceníme více.

(agilemanifesto.org)

Principy stojící za Agilním Manifestem

Řídíme se těmito principy:

  • Naší nejvyšší prioritou je vyhovět zákazníkovi časným a průběžným dodáváním hodnotného softwaru.
  • Vítáme změny v požadavcích, a to i v pozdějších fázích vývoje. Agilní procesy podporují změny vedoucí ke zvýšení konkurenceschopnosti zákazníka.
  • Dodáváme fungující software v intervalech týdnů až měsíců, s preferencí kratší periody.
  • Lidé z byznysu a vývoje musí spolupracovat denně po celou dobu projektu.
  • Budujeme projekty kolem motivovaných jednotlivců. Vytváříme jim prostředí, podporujeme jejich potřeby a důvěřujeme, že odvedou dobrou práci.
  • Nejúčinnějším a nejefektnějším způsobem sdělování informací vývojovému týmu z vnějšku i uvnitř něj je osobní konverzace.
  • Hlavním měřítkem pokroku je fungující software.
  • Agilní procesy podporují udržitelný rozvoj. Sponzoři, vývojáři i uživatelé by měli být schopni udržet stálé tempo trvale.
  • Agilitu zvyšuje neustálá pozornost věnovaná technické výjimečnosti a dobrému designu.
  • Jednoduchost – umění maximalizovat množství nevykonané práce – je klíčová.
  • Nejlepší architektury, požadavky a návrhy vzejdou ze samo-organizujících se týmů.
  • Tým se pravidelně zamýšlí nad tím, jak se stát efektivnějším, a následně koriguje a přizpůsobuje své chování a zvyklosti.

(agilemanifesto.org)