Agilní vývoj softwaru vznikl jako reakce na tradiční metody vývoje softwaru, které často vedly k prodlužování doby vývoje a problémům při změnách požadavků. V kontrastu s ním klade důraz na vývoj softwaru v krátkých cyklech s rychlejší zpětnou vazbou a průběžným zlepšováním. Pojďme se podívat na jeho přínosy, ale také na možná rizika s ohledem na reálné zkušenosti z českého IT prostředí. Zajímat by vás mohlo i to, jak se s nimi vypořádat.
Historie agilního vývoje sahá do 90. let 20. století, kdy vývojáři diskutovali o nových metodách práce, které by lépe reagovaly na dynamiku softwarového průmyslu. „Agilní vývoj softwaru se vyznačuje flexibilitou, adaptabilitou a úzkým vztahem mezi vývojovým týmem a zadavatelem. Je založen na iterativním a inkrementálním vývoji, což umožňuje rychlou a pružnou reakci na změny požadavků během celého vývojového cyklu,“ popisuje Michal Bulánek, odborník na agilní vývoj a ředitel divize pro komerční sektor ve společnosti Ness Czech. V současné době statistiky ukazují, že agilní postupy se stávají preferovanou metodou softwarového vývoje.
Transformace vývoje a dodávek softwaru
Při správné implementaci a s podporou všech zúčastněných stran může agilní metodika transformovat způsob, jakým firmy vyvíjejí a dodávají software, a poskytnout jim konkurenční výhodu.
„Jedním z hlavních přínosů agilního vývoje je zvýšená spokojenost zadavatele, díky pravidelnému a častému dodávání funkčních verzí produktu. Zákazníci mohou vidět pokrok a vývoj produktu v reálném čase a poskytovat zpětnou vazbu, která je zohledněna v dalších iteracích,“ říká Michal Bulánek. Zapojení zadavatelů do vývojového procesu ve výsledku znamená, že konečný produkt lépe odráží jejich potřeby a očekávání, protože mají možnost ovlivnit jeho vlastnosti a funkčnost.
Další výhodou agilního vývoje je zlepšení kvality produktu. Díky krátkým vývojovým cyklům, známým jako sprinty, a neustálému testování je možné rychle identifikovat a opravit chyby. Agilní metodologie také podporují transparentnost vývojového procesu, takže všechny strany mají o projektu jasný přehled, což pomáhá předcházet nedorozuměním.
Flexibilita a adaptabilita agilního vývoje umožňují přizpůsobit se změnám, které mohou nastat během vývojového cyklu, ať už jde o změny v požadavcích, technologiích nebo tržních trendech. Jak už bylo řečeno, agilní metodologie podporují kontinuální zpětnou vazbu a iterativní proces, což týmům umožňuje rychle identifikovat a řešit problémy, zlepšovat produkt a procesy a reagovat na zpětnou vazbu. Díky tomu mohou agilní týmy udržet krok s rychlým tempem inovací a konkurenčním tlakem.
Zvyšuje se také produktivita a morálka týmu, protože jeho členové jsou více zapojeni do rozhodovacího procesu a mají jasnější představu o cílech projektu. V neposlední řadě agilní vývoj podporuje inovace, protože týmy jsou povzbuzovány k experimentování a zkoušení nových věcí.
Agilní vývoj přináší také ekonomické výhody. Kratší vývojové cykly a rychlá adaptace na změny mohou snížit celkové náklady na vývoj a zvýšit návratnost investice díky dřívějšímu uvedení produktu na trh.
Agilní výzvy
Týmy agilního softwarového vývoje však také čelí řadě výzev. „Ty souvisí především s průběhem a rychlostí vývoje a jeho zaměřením na výsledek. Přestože jsou flexibilita, adaptabilita, komunikace a spolupráce považovány za klíčové výhody agilních metodik, v praxi se právě v těchto oblastech často vyskytují problémy,“ upozorňuje Michal Bulánek.
Klíčovým faktorem bývá nedostatečná komunikace a špatně definované role v týmu. Agilní vývoj vyžaduje častou a otevřenou komunikaci, ale pokud nejsou role a odpovědnosti jasně stanoveny, může to vést k nedorozuměním a konfliktům. Pro efektivní spolupráci musí mít týmy jasno v tom, kdo za co zodpovídá a jaká jsou očekávání. Pokud komunikace selhává, objevují se nejasné požadavky, špatně definované cíle a nespokojenost zadavatele. Mnohdy jsou pak podle Michala Bulánka výsledkem funkce a vlastnosti, které neodpovídají potřebám klienta.
Běžným interním problémem bývá také nedostatečná dokumentace. Agilní metodologie sice upřednostňuje práci na produktu před detailní dokumentací, ale její nedostatek způsobuje ztrátu kontextu a přináší komplikace novým členům týmu.
Rychlé iterační cykly mohou na tým navíc vyvíjet nadměrný tlak, který pak negativně ovlivňuje komunikaci, protože členové týmu jsou příliš zaměstnáni svými úkoly, než aby spolupracovali s ostatními. Mohou nastat také komplikace při škálování agilních metod na větší týmy nebo složitější projekty, protože agilní praktiky jsou často navrženy pro malé týmy, a mohou být obtížně aplikovatelné na velké nebo rozptýlené skupiny.
Důležitým aspektem, o kterém se ale moc nehovoří, je podle Michala Bulánka také výkonnost jednotlivých vývojářů i celých agilních týmů: „Pro management může být agilní vývoj méně transparentní a obtížně měřitelný. Kromě hodnocení výkonnosti či kvality kódu jde třeba i o přínos týmů za celý rok, nebo poměr plánovaných vlastností vůči těm reálně dodaným.“
Praktické dopady na IT projekty
Tradiční lineární vývojová metodika se označuje jako vodopádový model. „Každá fáze projektu zde musí být dokončena, než může začít další. Přístup je vhodný pro projekty s jasně definovanými požadavky, omezenou potřebou změn a prioritou dodržení stanoveného harmonogramu a rozpočtu,“ uvádí Michal Bulánek. Agilní přístup je podle něj oproti tomu preferován v prostředí, kde neexistuje přesné zadání a prioritou je rychlá reakce na změny požadavků během celého vývojového cyklu.
Agilní přístup
Agilní vývoj softwaru se nejlépe hodí do prostředí, kde je počáteční zadání nejasné nebo se očekává, že se bude v průběhu času měnit. „Cena zakázky v agilním prostředí se obvykle stanovuje na základě kapacity týmu a odhadovaného času potřebného k dokončení projektu s tím, že rozsah práce může být flexibilní,“ přibližuje Michal Bulánek. Přístup je ideální pro startupy a vývoj nových produktů, kde je důležité rychle dosáhnout funkčního prototypu a postupně jej vylepšovat na základě zpětné vazby. Agilní model také umožňuje lepší kontrolu nad vývojem, protože změny jsou viditelné a mohou být uváděny průběžně.
Výzvou je však podle Michala Bulánka při fixní ceně řízení rozsahu projektu. Zásadní je efektivní komunikace se zákazníkem, neboť porozumění potřebám zákazníka je pro úspěch klíčové. Výhodou agilního přístupu je možnost přizpůsobit rozsah práce a dodání klíčových požadavků v rámci stanoveného rozpočtu a časového plánu.
Vodopádový přístup
Tradiční vodopádový přístup k vývoji softwaru je vhodný pro projekty s pevně danými požadavky a rozsahem, kde je důležité zafixovat čas a náklady předem. „Model je ideální pro státní zakázky a projekty, kde zadavatel vyžaduje přesně specifikované dodání a chce přenést veškeré riziko na dodavatele,“ shrnuje Michal Bulánek. Tento přístup umožňuje dodavatelům stanovit podmínky potřebné k práci, včetně součinnosti se zákazníkem, a zajistit tak, že projekt bude dodán v souladu s požadavky. Přístup je méně flexibilní v případě změn požadavků během vývoje, ale poskytuje jasnou strukturu a řád. Vodopádový model je také vhodný pro projekty, kde je potřeba důkladné dokumentace a kde jsou požadavky dobře zadány a stabilní od samého začátku.
Dvousečná zbraň
„V Nessu máme s vývojem rozsáhlých IT projektů mnohaleté zkušenosti jak s vodopádovým tak i agilním vývojem. Podíleli jsme se na dodávkách softwaru na míru pro zákazníky z mnoha oborů, od státní a veřejné správy, přes finanční sektor, až po telekomunikace,“ uvádí Michal Bulánek.
Na základě zkušeností s oběma přístupy v Nessu vznikl tzv. hybridní vývojový model Ness Agile, pod kterým je Michal Bulánek podepsán jako jeho autor: „Na začátku projektu se na nejvyšší úrovni zadání definuje fixní cena a čas projektu. V Nessu pak garantujeme dodávku zadání s tím, že dle agilního přístupu probíhá plánování a jednotlivé iterace.“ Pokud je během vývoje potřeba upravit či doplnit zadání, vyměňují se nové prioritní požadavky za ty existující s menší prioritou nebo se přidávají dodatečné iterace do projektu. V Čechách někteří mobilní operátoři a banky vytvořily interní agilní týmy pro postupný vývoj aplikací. Ty pracují samostatně, řídí se vlastními pravidly a dodávají nezbytné změny, což však může vést k plýtvání finančními prostředky. Bez pevných plánů a rozsahů projektů se totiž může stát, že týmy investují do méně prioritních úkolů a chybí jim tlak na dodržování termínů a spolupráci ze strany zákazníka. Na druhou stranu, agilní přístup může podporovat lepší atmosféru a týmového ducha, protože nejsou pod takovým tlakem při využívání tradičních metodik.
Také v Nessu museli podle Michala Bulánka v minulosti čelit výzvám spojeným s agilním vývojem: „Na základě těchto zkušeností jsme vyvinuli Ness Matrix, nástroj, který shromažďuje konkrétní data o týmech a jejich práci a následně predikuje efektivitu jejich přístupu. Ness Matrix umožňuje porovnávat jednotlivce i týmy uvnitř jedné firmy nebo mezi různými firmami a identifikovat slabá místa v agilních procesech.“ Nástroj pomáhá nejen upozornit na problémy, ale také poskytuje doporučení pro zlepšení metrik a celkové efektivity vývoje.
V praxi se agilní vývoj může ukázat jako dvousečná zbraň. Na jedné straně poskytuje flexibilitu a podporuje inovace, na straně druhé může bez správného řízení a kontroly vést k neefektivnímu využívání zdrojů. Důležité je podle zkušeností Michala Bulánka najít rovnováhu mezi agilitou a disciplínou, aby bylo možné využít výhody agilního přístupu, aniž by došlo k jeho negativním dopadům. S vhodnými nástroji mohou firmy lépe porozumět a optimalizovat své agilní procesy, což vede k lepšímu výkonu a konkurenceschopnosti na trhu.