Waterfall vs Agile

V tomto článku vysvětlíme, proč jsme přešli z Waterfall na Agile a jaké výsledky z toho vyplynuly.

25 Apr 2023
7 min read

Od samého začátku

Při řízení našich produktů jsme používali metodiku vodopádu. Bylo to přirozené, protože je snadno pochopitelná a široce používaná v různých odvětvích. Vyučuje se také ve všech oborech managementu na univerzitách.

Metodika, kterou se řídíme, zahrnuje shromáždění všech vstupů od zákazníka na začátku projektu, což slouží jako základ pro celý projekt. Veškeré změny nebo rozdíly se nejprve řeší z hlediska smlouvy a teprve poté se implementují do kódu. Na základě dohodnutých vstupů nabízíme pevnou cenu za projekt. Abychom projekt efektivně řídili, rozdělíme jej na fáze a zákazník platí po každé dokončené fázi.

Naše metodika krok za krokem

Naše metodika se skládá ze čtyř fází:

Fáze předimplementační analýzy:

V této fázi provádíme důkladnou analýzu vstupů, obchodních cílů, procesů a marketingových strategií zákazníka. Stanovíme také funkční a nefunkční požadavky a podporovaná zařízení. Tato analýza nám pomáhá vytvořit projektovou dokumentaci, která nastiňuje navrhované řešení, někdy včetně wireframů. Dále provádíme technickou analýzu, která popisuje navrhovanou architekturu, technologii a databázi.

Fáze plánování:

V této fázi rozdělíme projekt na technické úkoly, odhadneme je, vytvoříme rozpočet a poskytneme zákazníkovi přehled očekávaných nákladů na implementaci.

Fáze implementace:

Tato fáze zahrnuje práci na grafickém návrhu řešení. Před zahájením realizace plánovaných úkolů poskytujeme zákazníkovi 2-3 iterace zpětné vazby k návrhu. V průběhu této fáze zákazník dostává pravidelné informace o průběhu projektu, na jejímž konci je dodání finálního produktu. Veškeré nové požadavky zavedené během této fáze jsou považovány za dodatečné práce a musí být odhadnuty a schváleny zákazníkem.

Fáze údržby:

Po dodání hotového produktu zákazníkovi se obvykle dohodneme na smlouvě SLA a poskytujeme průběžnou podporu řešení po stanovenou dobu. Pokud by chtěl zákazník v kterékoli fázi projektu odejít, museli bychom se dohodnout na podmínkách zrušení objednávek a smlouvy.

Je to proveditelné, ale...

Netvrdíme, že tento přístup je zcela špatný. Může se hodit pro některé malé projekty nebo budování stejného softwarového řešení pro každého zákazníka. Ale my to obvykle neděláme. Pro naše zákazníky vytváříme software na míru. Na základě našich předchozích zkušeností jsme schopni poskytnout rouch odhady, ale čím je projekt složitější nebo větší, tím je pro nás nebo i pro zákazníky nemožné specifikovat každý detail na začátku projektu.

Někdy se nám stalo, že se v průběhu vývoje změnila odpovědná osoba ze strany zákazníka nebo jeho firemní proces. Nebo že když zákazníci konečně viděli vyvinutou funkci nebo grafiku, zjistili, že musí fungovat jinak nebo že je třeba něco změnit kvůli změnám v chování koncových uživatelů nebo na trhu. Všechny tyto věci znamenaly změny v požadavcích obvykle již vyvinutého produktu. Nakonec zákazník nebyl s projektem spokojen, protože původní požadavky neodrážely skutečné potřeby, a my jsme nebyli spokojeni s projektem kvůli rostoucím nákladům na projekt a velmi těžkému vyjednávání s klienty o dalších potřebných zdrojích.

Omezení vodopádové metodiky:

  • Vodopád je vhodný pouze pro některé projekty;
  • Na začátku složitého projektu není možné specifikovat všechny detaily;
  • Pro softwarovou společnost je nemožné odhadnout každý kousek úkolu;
  • V projektu může dojít ke změnám v důsledku změn v chování koncových uživatelů nebo na trhu;
  • V průběhu vývoje může dojít ke změnám v požadavcích;
  • Původní požadavky nemusí odrážet skutečné potřeby;
  • Rostoucí náklady na projekt mohou způsobit problémy klientovi i softwarové společnosti.

Hybridní model

Proto jsme pomalu začali měnit přístup k novým klientům.

Na začátku jsme dělali něco mezi agilním a vodopádovým modelem, spíše jako hybrid. Zákazníci nebyli na agile zvyklí a zpočátku mu moc nevěřili, takže jsme přistoupili na kompromis. Na základě zadaných požadavků jsme se dohodli na pevném časovém plánu a přibližném rozpočtu. Rozdíl oproti předchozí vodopádové metodice je v tom, že jsme od agilní metodiky využívali úzkou spolupráci se zákazníky. Dodávku jsme rozdělili do sprintů, každé dva týdny jsme zákazníkovi udělali ukázku a na upřesnění požadavků jsme pracovali minimálně sprint dopředu. Spolupráce s klientem a jeho spokojenost s výsledným produktem byla mnohem lepší, ale přesto v průběhu projektu rostl produktový backlog, takže se musel posunout i časový harmonogram. Nevýhodou této spolupráce bylo opět mnoho času stráveného reportováním a obhajováním každé hodiny navíc, kterou jsme museli strávit. Nebyla to spolupráce, která by byla výhodná pro obě strany, jak jsme si přáli. Věděli jsme, že další spolupráce musí být čistě agilní. Přepracovali jsme naše smlouvy a v průběhu let se agilní metodika a její výhody začaly dostávat více do povědomí zákazníků.

Proč agilní?

  • Agilní metodika klade důraz na spolupráci, flexibilitu a přizpůsobivost v průběhu celého životního cyklu projektu.
  • Agile rozděluje projekt na menší, zvládnutelné části a dodává funkční software brzy a často.
  • Agile umožňuje průběžnou komunikaci a spolupráci se zákazníkem
  • To pomáhá budovat důvěru, zajišťuje, že projekt zůstane na správné cestě
  • Díky tomu, že reaguje na měnící se požadavky, výsledný produkt lépe odpovídá potřebám a spokojenosti klienta.

Zahájení nové spolupráce

Při zahájení projektu s klientem dáváme přednost upřímnosti a transparentnosti. Místo slibování pevných termínů a cen poskytujeme hrubé odhady na základě počátečních představ nebo specifikací.

S klientem však úzce spolupracujeme na upřesnění potřeb a požadavků konečného uživatele a na úpravě rozsahu projektu tak, aby se vešel do možného rozpočtu.

  • Věříme, že jasná komunikace a spolupráce s klientem je pro úspěšné projekty zásadní, a proto je pro nás prioritou úzká spolupráce s klientem při upřesňování potřeb a požadavků koncového uživatele. To nám umožňuje upravit rozsah projektu podle potřeby tak, aby se vešel do možného rozpočtu, a zajistit, že dodáme vysoce kvalitní práci, která splní jejich specifické potřeby.
  • Naším cílem je vždy poskytnout klientům co nejlepší výsledek, a proto s nimi úzce spolupracujeme na upřesnění požadavků projektu a úpravě rozsahu podle potřeby. Tím je zajištěno, že jsme schopni dodat vysoce kvalitní produkt, který splňuje jejich potřeby a zároveň se vejde do jejich rozpočtu.
  • V naší společnosti chápeme, že požadavky na projekt se mohou v průběhu času vyvíjet, a zavazujeme se úzce spolupracovat s našimi klienty, abychom zajistili, že se těmto změnám dokážeme přizpůsobit. Zpřesněním potřeb a požadavků koncových uživatelů a úpravou rozsahu projektu podle potřeby jsme schopni dodat vysoce kvalitní práci, která splňuje jejich potřeby a zároveň se vejde do rozpočtu.

Naše hlavní zaměření

Naším hlavním cílem je poskytovat našim klientům výjimečně kvalitní práci, a proto se v každém sprintu opíráme o naše rozsáhlé zkušenosti, odborné znalosti a neochvějné odhodlání. Věříme, že úzkou spoluprací s našimi klienty a důsledným upřesňováním potřeb a požadavků koncových uživatelů dokážeme dodat vysoce kvalitní práci, která je v souladu s jejich očekáváními. Kromě toho se snažíme zajistit, aby naši klienti měli nad svými projekty plnou kontrolu a mohli si kdykoli vybrat jiného poskytovatele softwaru, pokud nebudou s našimi službami spokojeni.

Jsme přesvědčeni, že náš úspěch jako společnosti zabývající se vývojem softwaru v konečném důsledku závisí na spokojenosti našich klientů, a snažíme se zajistit, aby každý náš projekt vedl k pozitivnímu výsledku pro obě strany.

Co používáme

Z agilních metodologických rámců používáme především Scrum, ale u některých projektů také kanban. Většinou pracujeme v krátkých - dvoutýdenních iteracích a na konci sprintu ukazujeme, diskutujeme a iterujeme výsledky se zákazníky. Sbíráme zpětnou vazbu, přenášíme ji do úkolů a na základě dohody se zákazníkem určujeme priority. Pokud zákazník potřebuje náhlou změnu směru, není to problém, protože v agilním přístupu nejsme vázáni žádnými fixními smlouvami ani rigidními procesy. Jen si se zákazníkem vyjasníme jeho potřeby a v případě potřeby naplánujeme změnu od dalšího sprintu.

Proč tedy dáváme přednost agilnímu přístupu před vodopádem?

  • Protože nám záleží na tom, co vyvíjíme, záleží nám na konečném produktu.
  • Dáváme přednost úzké spolupráci se zákazníky na vytváření fungujících a smysluplných produktů před nekonečným vyjednáváním o každé minutě strávené na projektu.
  • Dáváme přednost agilitě a flexibilitě před slepým následováním původních plánů.