Mike Acler – produktový design & konzultace

Co je agilní vývoj a skutečně si myslíte, že ho máte?

Za svou kariéru jsem prošel spoustou různých firem, spolupracoval s desítkami týmů a viděl různé přístupy k vývoji a řízení vývoje softwarových produktů.

Když jsem začínal, svatým grálem bylo mít projekt správně naplánovaný od začátku do konce. Nejcennější dovedností v týmu bylo projektové řízení a tvorba promyšleně vypadajících Gantt diagramů, které žádného klienta nenechaly na pochybách, že víte co děláte a že projekt doručíte tak, jak je to potřeba. Přece na to máte plán!

Většina firem ale časem zjistí, že plány a odhady jsou jen teorie, která se často míjí s dennodenní praxí a fungováním softwarových týmů.

Osvícení manažeři a šéfové softwarových týmů tak začnou pošilhávat po tom, jak dělat svou práci jinak, lépe. Tak, aby byli více spokojení oni, členové jejich týmů, zákazníci a samozřejmě také uživatelé, kteří budou s vyvíjenými produkty pracovat.

Pomyslné prozření přijde, když objeví agilní vývoj.

Všechno najednou začne dávat smysl:

A tak dále a tak dále.

Na první pohled je agilní vývoj oproti tzv. vodopádu no-brainer.

Postulát dnešní doby je jasný: Agilní vývoj je jediná správná metodika podle jaké by moderní softwarové týmy měly vyvíjet produkty.

Rigidní plánování a vodopádový vývoj patří ve spoustě firem na seznam zakázaných praktik.

A přesně tyhle firmy se také budou navenek bít do prsou a tvrdit vám, jak k vývoji přistupují moderně a pracují agilně. Jasně, co jiného by měly říkat?

Ovšem nic není černé nebo bílé.

Mezi oběma extrémy existují stupně šedi. A vězte, že jejich paleta je pěkně široká. Skoro se nabízí říct, že těch odstínů je víc jak hvězd na obloze...

Když se firmy ale zeptáte, jestli je její vývoj vodopádový nebo agilní, dostanete jednu odpověď (agile) a málokdo bude zabíhat do detailů, které by vám o jejím fungování napověděly více.

Chápu, lidi mají rádi zkratky.

A pokud máte o agilním vývoji něco málo načteno (a ideálně také na vlastní kůži prověřeno), odpověď na tuhle otázku vám s sebou nese i jistá očekávání.

A tady se podle mé praxe teorie rozchází s realitou. Častokrát více, než je zdrávo.

Co tím myslím?

Inu – i když vám firma skálopevně bude tvrdit, jak agilně funguje, ve chvíli kdy se zanoříte do denní operativy a přičichnete k některým interním procesům a praktikám, bude vám nad slunce jasné, že agilní vývoj ve své ryzí podobě je pouze zbožné přání a praxe má mnohem blíže k vodopádu...

Pojďme se mrknout na ty nejčastější prohřešky, s nimiž jsem se za 20 let mé praxe setkal:

Celé to píšu hlavně proto, že nemám rád absolutní pravdy.

Ani v politice nikdy nejste úplně nalevo nebo úplně napravo.

Ve skutečnosti vlastně neoperujete ani na přímce, ale v ploše.

Je tedy vlastně jedno, jakým buzzwordem slovem svůj proces označujete, protože jím bez dalšího kontextu nejste schopni popsat svoje fungování a předat tuto informaci v celé její komplexitě někomu dalšímu.

Nejvypovídající reprezentací vývoje digitálních projektů by byl spider chart, na kterém byste jednoduše viděli, kde přesně se daná firma v jednotlivých oblastech nachází. (Příklad pro ilustraci níže - doporučuju projít tímto jednoduchým cvičením v týmu a potom porovnat výsledky s dalšími týmy; budete překvapeni, jak moc se to může lišit i v rámci jedné firmy 🙂)

Graf ilustrující přístup k vývoji

Na závěr ještě přihodím tabulku porovnání scrumu a kanbanu, což jsou dva nejčastější frameworky využívané v agilním vývoji. Třeba to někomu pomůže, protože i zde spousta lidí mylně zaměňuje jeden za druhý (anebo prostě mixují jednotlivé aspekty obou dohromady - i to už jsem zažil...).

Aspekt Scrum Kanban
Struktura Časově ohraničené iterace (sprinty, obvykle 1–4 týdny) Kontinuální tok práce
Role Definované role: Product Owner, Scrum Master, vývojový tým Žádné povinné role; adaptabilní pro jakoukoliv strukturu týmu
Plánování práce Na začátku každého sprintu se vytváří plán z backlog Žádný přísný backlog; úkoly se přidávají na tabuli dle potřeby
Scope práce Zaměřuje se na dokončení cílů sprintu; nová práce se přidává až v dalším sprintu Další úkoly se přidávají podle potřeb a toho, jak se odbavuje předchozí práce
Prioritizace úkolů Product Owner určuje priority nebo cíle pro každý sprint Prioritizace je dynamická; úkoly jsou definovány dle kapacity týmu
Schůzky Pravidelné ceremonie: plánování, denní standupy, sprintu review, retrospektiva Denní standupy jsou volitelné; Kanban má pouze ad-hoc meetingy
Cíl Dokončit sadu úkolů do konce každého sprintu pro doručení hodnoty Udržovat plynulý tok úkolů, zkracovat dobu dokončení a eliminovat překážky
Přizpůsobivost změnám Změny úkolů v rámci sprintu nejsou možné, což přispívá k dosažení naplánovaných cílů Vysoce flexibilní; úkoly lze kdykoli přeřadit či přidat
Metriky Rychlost, tzv. velocity (počet dokončených bodů za sprint) Lead time, cycle time, WIP (sleduje čas a efektivitu úkolů)
Vhodné pro Týmy, které chtějí strukturu, předvídatelnost a jasně definované role a cíle Týmy potřebující flexibilitu, nepřetržitou dodávku a zaměření na efektivitu toku práce

Meme scrum vs kanban

A něco málo o tom, proč je vlastně kanban nejlepší framework pro agilní projekty