Tolik teorie, v praxi ale z povzdálí pozoruji agilní vývoj mnohem většího projektu v řádu desetitisíců hodin, který už měl být dva roky hotový a vývoj se konci stále neblíží.
Klasické projektové řízení by je už dávno donutilo k nějaké akci a pořádné analýze.
Netvrdím, že to je vina agilního vývoje, ale problém je, že agilní vývoj firmy nemotivuje SW dokončit, právě naopak, protože zákazník platí a oni mají práci.
Ale samozrejme ze souvisi, soucasti analyz je pochopitelne mimo jine i hodnoceni pouzitelnosti projektu. To sice neznamena, ze se nestane totez, ale pravdepodobnost se znacne redukuje.
Kdyz nic jineho, vznika nejaky navrh finalni podoby, o ktere v pripade, ze se rovnou pise, vlastne nikdo nema potuchy.
Kazdy takto veliky projekt ma rozpocet, za ktery musi projektak predstavit investorovi finalni produkt, jestliže bude pred kazdym sprintem upresnovat pozadavky, ktere odhad dodavatele zvedne o X hodin, bude mu techto X hodin chybět na dalsi upravy a toto se muze postupně nabalovat az tak, ze dva mesice pred predanim bude budget (hodinovy nebo financni, to je fuk protoze to je to same) vycerpany a investor se bude zlobit. Klíčem je tedy mit dostatečný polstar na to, aby byl pri agilnim vyvoji prostor chovat se opravdu agilne a dostatecne skutecnosti dodavatele ci projektaka, ktery velikost polstare spravne odhadne.
Jinak s agilnim vyvojem souhlasim a nedokazu si predstavit rik dopredu nalajnovat neco, co dodavatel zavre na upravy pres kazdym dilcm vyvojem casti dila.
pri agilnim vyvoji platit vzdy za hodiny. a pokud je omezeny rozpocet, tak se pri agilnim vyvoji nemusi dostat na vsechny pozadavky (a proto by mely byt na zacatku zprioritizovane). kolegyne mela hezky obrazek, kde ukazovala rozdil mezi waterfallem s jeho dimenzemi/"trojimperativem" (cena-kvalita-cas) a agilnim pristupem (pri stanovenem rozpoctu se pracuje, dokud se nevycerpa, teda pokud se nahodou nestihne vsechno udelat)
nicmene dovedu si predstavit, ze kontrakt s dodavatelem kapacit na IT vyvoj bude znit "za 3 miliony kapacity analytika a za 3 miliony kapacity vyvojare" a kdyz bude chtit pak pokracovat, tak si priobjedna. ale to je zase platba "za hodiny".
Uvedu to hned ze začátku - dělám v ShopSys.
Souhlasím, že pro dodavatele je lepší dodat SW. Problém je, že u velkých projektů od zadání k předání uplyne několik měsíců a my sice dodáme SW podle zadání a analýzy, ale zákazník už to takto nechce a nepotřebuje, protože se změnila situace na trhu, je nový trend nebo se změnil obchodní ředitel a mají novou strategii (vše jsou reálné případy). Pro nás by bylo nejlepší jim to předat s tím, že vše je podle domluvy hotovo. Ale klient bude naštvaný. A to není situace, kterou chceme.
Proto se teď orientujeme na agilní kontrakty, protože zde může klient v půlce, kdy dostane část funkcí, říci, že toto už takto nechce a pak se řeší, jaké věci se odsunou. Také průběžně vidí, co je uděláno a průběžně si funkce přebírá... Je to pak více o komunikaci a domluvě a je mnohem větší pravděpodobnost, že na konci budeme jak my, tak klient spokojeni.
Dobrý den,
souhlasím. V naší branži jde typicky o migrace stávajících e-shopů na nové řešení.
I v tomto případě však zakázku realizujeme po sprintech, jakoby se měla aplikace po každém sprintu spustit do provozu. Postup je naprosto stejný s tím, že se na ostro spouští až např. po 8.sprintu (zákazník totiž nechce spustit e-shop s méně funkcemi, než měl předchozí a to je pochopitelné).
Petr Svoboda / ShopSys
Dobrý den,
v našem případě analyzujeme, specifikujeme, naceňujeme a kontraktujeme výsledný software. Relizujeme jej ale po sprintech (minimální životaschopný produkt + sprinty). Do jednotlivých sprintů se vybírají úpravy (či jejich části) ze specifikace. A postupně při dokončování sprintů vznikají nové požadavky. Podle jejich priority přeskakují původní zakontraktované úpravy, nebo z nich vzniká fronta "nice-to-have" funkcí, z kterých se pak vybírá po dokončení projektu. Záleží tedy případ od případu.
Petr Svoboda / ShopSys
Ahoj. Nemám co dodat a plně s napsaným souhlasím.
ad 3. Ideální je mít pro role samostatné lidi. Někdy s ohledem na velikost týmu, velikost projektu a rozpočet je z naší zkušenosti ovšem sloučení rolí nutné a vhodné.
ad 4. I to je důvod, proč nejsou agilní kontrakty nasaditelné na všechny projekty ale pouze na ty, kde pracuje více lidí (a mohou se zastoupit) a při delší absenci může být do týmu přidán další zdroj/člověk.
ad 5. Spolupráce klienta se nám u agilních kontraktů ukázala jako naprosto zásadní proměnná. Nechceme po klientovi volné rozpočty (i při agilních kontraktech garantujeme předem pracnost/cenu jednotlivých činností/úprav. Chceme však častý kontakt, prioritizaci, sledování dem a připomínky. I proto píšeme tento článek a pokoušíme se dělat osvětu.
Chápu jak to myslíte.
Jsme si vědomi této obavy klientů a proto všechny úpravy a funkčnosti i při agilních kontraktech naceňujeme předem a sami neseme riziko, když úprava zabere více času (jako u standardního modelu specifikace->cena->programování).
Realizaci ovšem dělíme na několik části (po sprintech) a v nich hotovou práci prezentujeme klientovi, jako část hotového díla a vyžadujeme společné odladění, jako by se takto mělo spouštět (vždy životaschoný produkt). Pokud nenarazíme na potřebné nové změny, pokračujeme dál již domluvenou prací dle analýzy. Pokud jsou ale potřeba úpravy, vydefinujeme jaké a opět předem naceňujeme. S klientem se dohodneme, jakou má změn prioritu a podle toho jde do dalších sprintů.
Pokud se po sprintech objeví chyby, jsou opravovány režijně a neodečítají hodiny alokované dalšímu sprintu.
Příklad: v každém sprintu se odpracuje např. 150 člověkohodin na úpravách (placených úprav s cenou definovanou v kontraktu), ale dalších např. 90 člověkohodin je věnováno režijním činnostem (včetně oprav).
Agilní kontrakty jak je používáme my, jsou jakousi kombinací standardních kontraktů (specifikací a cen tvořených předem při analýze) a agilních metodik vývoje softwaru. Klientům zachovává kontrolu nad rozpočtem, ovšem umožňuje jim rychlé změny zadání a rychlé odhalení nepřesností/nepochopení. Nám spolupráce zajišťuje hodnotný a detailní feedback po každém sprintu a nikoliv až před spuštěním finálního projektu, protože klient je do realizace vtažen po celou dobu téměř úměrně. (a je pravda, že to ne každému klientovi to může vyhovovat)
Petr Svoboda / ShopSys
K tomu přemýšlení a meditaci vám připojím link, pokud se sem náhodou ještě vrátíte...
https://www.youtube.com/watch?v=a-BOSpxYJ9M
Neznám podrobnosti vašeho kontraktu a platebních provázaností na předávané celky, takže to nedokáži zhodnotit.
Dle naší zkušenosti jsou klienti ochotni platit vždy až v případě, kdy je jim odprezentován sprint s dokončenou (a životaschopnou funkčností), které byla pro daný sprint předem určena. Na opravu případných chyb máme opět zase pouze čas po dobu příštího sprintu. Pokud se jedno nebo druhé neplní, klient platbu pozastaví.
V našich kontraktech neúčtujeme oproti zpětným výkazům hodin. Účtujeme funkce, předem naceněné a pro každý sprint se pouze vybírá dle priorit, co se má ve sprintu realizovat.
Petr Svoboda / ShopSys
[S agilním vývojem se to má podobně, když se sejde vhodný dodavatel s vhodným zákazníkem, může to fungovat. Jenže opravdu musejí být na obou stranách vhodní lidé, což není ani z jedné strany samozřejmé.]
To potvrzuji. Agilní metodiky nemusí být pro každého. Naší podobnou agilních kontraktů (zjednodušeně: předem specifikace a nacenění, ovšem realizace ve sprintech) se agilní realizaci snažíme přivést širšímu okruhu klientů. Vyžaduje ovšem jednoznačně ochotu a dostatek časových kapacit u zákazníka.
Dle naší zkušenosti tuto formu realizace oceňují a preferují nejčastěji společnosti/lidé, kteří již mají zkušenost s vývojem středních a větších webů či aplikací standardním modelem a chtějí se maximálně vyhnout bodu "finálního ladění a předělávání", které bývá zpravidla těsně před spuštěním aplikace a je nejvíce stresující a náročná. Na agilním kontraktu oceňují, že se tato fáze vlastně rozděluje do několika malých bloků (sprintů) a tím se předchází stresům, zpožděním a změnám před spuštěním.
Petr Svoboda / ShopSys
Když to zkusím paušalizovat, tak testování je zhruba stejně (ale průběžné a ne tolik na konci) možná vyšší, pokud se neaplikuje dostatečně automatické testování. Tvorba automatických testů je však také režie.
Takže z pohledu shopdevelopera:
Ano - náklady na testování jsou vyšší. Za včasné dodání, úspory v programování a spokojenost klienta to však rozhodně stojí. Proto naceňujeme testování u agilních kontraktů stejně jako u klasických a vícenáklady neseme my.
Petr Svoboda
Dobrý den,
...proběhne analýza, která má být úplná a jednoznačně definovat podklady pro programátorskou práci, jak postupovat v vpřípadě, že úplná a jednoznačná není...
Úplná a jednoznačná není, protože analytik se nezeptal na vše? Nebo protože, něco zákazník zapomněl říct? Nebo proto, že jsou v průběhu realizace do IS zadány jinak, než bylo domluveno při analýze? ...
Mířím tam, že toto je málo kdy jednoznačné a nedokáži to paušalizovat a odpovědět.
S jistými nepochopeními během analýzy jsme se samozřejmě setkali (a také si přiznali). Ještě nikdy to však nedošlo do bodu, že by byla analýza natolik špatná a mimo, že by se měla zahodit a vracet peníze. Nemám s tím tedy zkušenosti.
Přiznejme si jednu věc. IT firma mluví programátorských jazykem, zástupce e-shopu zase obchodním. Všichni se snaží si porozumět, ale v komunikaci může dojít k nepochopením a šumům (i přes wireframy, náčrty, popsané skruktury databáze,...).
Pokud se podle neúplné a nejednoznačné analýzy programuje standardním způsobem a např. po 3-4 měsících se zákazníkovi předloží pracovní podoba téměř dokončeného díla, je to problém. Upravit specifikaci a předělat podle toho dílo může být blízké tomu, vypovědět smlouvu a začít znovu (a handrkovat se, čí to je to počáteční neporozumění chyba).
Při agilním kontraktu problém odhalíte po prvním (max druhém) sprintu. Zpravidla máte podobné možnosti (včetně vypovězení), ale změnit specifikaci a upravit dílo po 1. sprintu bude mnohem mnohem méně bolestivé a pokud k tomu nastane (a obě strany mají vůli pokračovat) zpravidla se prostě malá část upraví a spolupráce jede dál.
Petr Svoboda / ShopSys
Dobrý den,
v našem případě:
analyzujeme, specifikujeme, naceňujeme a kontraktujeme hotový software. Relizujeme jej ale po sprintech (minimální životaschopný produkt + sprinty)
Do jednotlivých sprintů se vybírají úpravy (či jejich části) ze specifikace. Při předávání sprintů se však například začíná ukazovat, že:
- funkce je dle zadání a wireframu, ale aby byla užitečnější je potřeba ji ještě lehce rozšířit či modifikovat (což si jedna či druhá strana uvědomila až při živém použití)
- některé funkce není tak důležitá jako nápad na novou funkcí (který vznikl při zkoušení jiných živých funkcí)
- data pro definované parametrické filtry není možní v termínu zákazníkem dodat, tuto funkci je možné odložit a raději realizovat něco z "nice-to-have" nově vymyšlených funkcí
- při ukázání životaschopné verze dalším kolegům ve firmě zákazníka, přišly nové nápady na úpravy, ke kterým se na úrovni analýzy/wireframů neuměli vyjádřit (nedokázali si to představit)
Nové požadavky se tedy zařadí mezi seznam věcí k realizaci, specifikují, nacení a klient jim přidělí prioritu. Bude-li priorita vysoká, odsune to realizaci méně prioritní funkcí (přestože byly specifikovány a zakontraktovány).
Může samozřejmě nastat situace - a klient si jí je vždy při změnách priorit vědom - že některé funkce nebudou v aplikaci nakonec vůbec realizovány. Pokud je zastropovaný rozpočet, přidávaly se nové funkce a neodebraly žádné jiné, na funkce s nejnižší prioritou se už totiž nemusí vyjít zdroje (využily se na nové prioritnější požadavky).
Petr Svoboda / ShopSys
A jak je to při agile s testováním?
Při "klasickém" přístupu máte na konci ucelený SW produkt, který jste schopen komplexně otestovat na všechny závislosti a vlastnosti, než jej předáte. (Odhlédnu nyní od toho, že to již nemusí být ten produkt, který zákazník potřebuje.)
Při agile, jestli tomu dobře rozumím, tak na konci každého sprintu nejen abyste testoval to, co si při sprintu udělalo (a může to být funkce/vlastnost, se kterou se při původní analýze vůbec nepočítalo), ale abyste taky otestoval celý produkt, jelikož došlo k jeho změně. A nevíte, jestli nějaká nově nasazená záležitost neovlivnila již hotovou část.
Z textu a komentářů jsem pochopil, že náklady na režii bývají typicky větší než u klasicky řízených projektů (větší požadavky na součinnost zákazníka, management komunikace, atd.). Jsou zvýšené i náklady na testování?
Děkuji za postřeh. Nejsem však stejného názoru.
Naše zkušenost ukazuje, že čas ze strany zákazníka je v obou případech zhruba podobný. V případě agilních metodik vývoje je rozložen průběžně a v případě standardního modelu je největší množství věnováno až v konečné fázi (právě té stresující, kdy se předělává, opravuje, doprogramovájí se nové funkce, a kdy se odkládá termín spuštění).
Nemáme to však přesně kvantifikované - nikdy jsme nevyvíjeli velké e-shopy zároveň oběma způsoby, abychom to ve finále mohli porovnat.
Postupný vývoj, ladění a předávání vychází nákladově velmi podobně - ale verze ke spuštění dle očekávání klienta je dodána mnohem dříve a klient má průběžně nad projektem výrazně větší kontrolu.
V našem případě používáme pro agilní kontrakty naprosto stejnou kalkulaci cen prací.
V mnoha případech, kdy se některé části hotových funkcí po předložení klientovi zahazují, šetří postupný agilní vývoj také náklady (obou stran). Čas a peníze se tak mohou věnovat přínosnějším činnostem.
Petr Svoboda
Jsou činnosti, které se naceňují (a účtují) a které nikoliv. Režijní činnosti pokrývá rozdíl mezi kalkulovanou hodinovou sazbou a reálnými hodinovými náklady společnosti.
Čím větší rozdíl je, tím větší generuje vývojářská společnost hrubý zisk (ale také tím dříve práce dokončí a může dělat další). Je tedy motivovaná režijních činností provádět co nejméně (tedy např. generovat co nejméně chyb; vyjasnit si očekávání zákazníka každé funkce a programovat přesně to, co klient očekává namísto následného přepisování apod.)
Petr Svoboda
Nebudu psát za ShopSys, ale za sebe (firma, ve které působím má i odvětví e-commerce řešení, na jednom z produktů je aplikována scrum metodika).
Náklady na testování jsou vyšší zejména zpočátku. Testeři všeobecně jsou bráni jako "režie", protože jejich práci nelze úplně dobře měřit. U nás testeři připravují x test scénářů, každý z nich má y test cases. Za jeden sprint cénářů vznikne třeba 30, podle nich se testuje průběžně (in-time testování). Na konci sprintu se všech 30 scénářů vezme a otestuje se znovu, spolu s již zpracovaným základním flow produktu. Případné konflikty se řeší s Product ownerem, pokud je třeba přepracovat, přichází na pomoc Scrum master.
Je samozřejmostí, že každý programátor zároveň píše unit testy, pokud to čas dovolí, jednou za delší období testeři připraví testovací den i programátorům, ať si vyzkouší sedět na druhé straně.
Mnoho firem bere testing jako okrajovou věc, což rozhoně není dobře, ve finále se to podepíše pod kvalitou výsledného produktu
Zavadil jsem o článek a diskusi po delší době. Moje zkušenost je ale aktuální.
U Shopsysu jsou agilní kontrakty spíše prostým záměrem, jak ze zadavatele vytáhnou více peněz na dotažení chyb. Bude-li projekt realizován dle smlouvy a v termínu, lze úpravy dělat brzy po předání. Protahuje-li se projekt k devíti měsícům po termínu jako ten náš, těžko uvažovat o úpravách, když není hotovo nasmlouvané. Jak mi potvrdil pan Svoboda, hodiny jsou vyčerpány, ale eshop ke spuštění nemíří. V průběhu devíti měsíců od pokusu o předání eshopu jsem musel vypisovat chyby implementace a funkčnosti a bylo jich opravdu hodně. Kodér to hrubě neuměl a neprováděl elementární kontrolu FE po nakódování. Realizované práce působily, jako by kodér specifikaci vůbec nečetl.
Při urgování dalšího zpoždění mi pan Svoboda vysvětlil, že měli problém s cash flow, takže preferovali eshopy, které mají blíže k dodělání a tímpádem i k úhradě a můj eshop vyhodnotily, že tam bude více práce, proto není prioritní.
Shopsysu by agilní kontrakty jistě pomohly, protože za dílčí práce by mohli inkasovat průběžně a za implementaci designu by zbýval menší doplatek, který by Shopsys tolik nepálil. Vše by se ale vleklo donekonečna a zadavatel by zaplakal. Zadavatelé, kteří mají stejnou zkušenost, do agilních kontraktů nepůjdou. Možná by Shopsysu místo agilních kontraktů pomohlo zavedení osobní odpovědnosti za odvedenou práci a menší střídání konzultantů u projektů, pak bude cash flow ok.
Agilní kontrakty jsou aplikovány především ve veřejném sektoru - téměř všechny se hrubě prodražily a zdržely (OpenCard, Tunel Blanka atd.).
Díky za článek, jsem rád, že alespoň v obecné rovině jdu správnou cestou a poučen z let praxe stavím eshopy už téměř vždy v nějaké minimální/express životaschopné verzi s výhledem na další fáze rozvoje, kdy se mohou nasazovat méně zásadní funkcionality nebo dokonce finesy a nice 2 have záležitosti. Jinak agile moc neřeším, jen tahle jediná věc mi přijde logická a přirozená - má-li zákazník velké oči (dost často má) a chce eshop v plné palbě a přitom nemá business plán, nikdy neprodával online a spíš má nějaký sen a velké ambice ... je to ideální chvíle přesvědčit jej k rozfázování projektu.
Jen se zeptám, je to fix price, nebo cost-plus? Má zkušenost je že se všichni co mají něco společného (byť jen slovně) s agile snaží minimalizovat vývojové rozpočty a fixed priced kontrakty a produkt se dodělá, opraví se všechny chyby a doimplementují či přepracují všechny potřebné funkce až během SLA. Stane se pak ale přibližně toto.
Zadavatel nemá zvláštní potřebu moc přemýšlet o zadání. Objednává stylem: chci nové erp, nebo třeba eshop. Má vyčleneněn rozpočet a čas a ví, že produkt doopravdy dostane až po nějaké době běhu servisní smlouvy kdy bude podávat "reklamace". Dodavatel nemá zvláštní potřebu dojednat přesné zadání a ani vlastně jednat o ceně, protože předání je vlastně jen formální, cenu lze snadno uhlídat alokováním těch nejlevnějších lidí a že to bude mít chyby nikoho netrápí.
Během SLA pak nastává, že má zákazník motivaci čerpat co nejvíce hodin (opravy, konzultační hodiny, apod.), zatímco dodavatel ty hodiny již prodal a je motivován jich dodat co nejméně.
Na druhou stranu je to status quo akceptovaný již od začátku, takže to takto funguje. Je to ale výhodné, lepší?
Zadavatel zaplatí totéž a dostane tutéž funkčnost jako kdyby produkt objednal za fix a proběhla řádná analýza. Drobné plus je, že rozhodování můžu odložit, je to ale taky prvek nejistoty. Kupuju, ale nevím co. Mínus je, že produkt dostanu v nedeterministickém čase (zřejmě později).
Dodavatel má plus, že nemusí nic plánovat, nemusí nic rozhodovat, nemusí mít kvalitní zaměstnance, nemusí řešit termíny, kvalitu. Vlastně jediné co musí řešit je dohodnout ten kšeft a pak už je to bez rizika. Mínus je, že bez rizika není zisk.
____
Mluvím stále teoreticky, o vaší firmě nic nevím.
Dobře agilní metodiky, rozumím. Vrátím se na začátek, pokud proběhne analýza, která má být úplná a jednoznačně definovat podklady pro programátorskou práci, jak postupovat v vpřípadě, že úplná a jednoznačná není, tj při programování se pak musí značně improvizovat a upřesňovat. Vrací se peníze za analýzu, nebo jak v takovém případě postupujete?
Asi je nejlepší hned na začátku si rozmyslet za co chcete aby se platilo. Z pozice zákazníka i dodavatele. Jestli za dílo, nebo za hodiny.
Z pozice zákazníka pokud je obvykle vaší motivací obdržet hotový software, ale může být výhodné "uvázat" si pracovní sílu dodavatele pro adhoc úpravy když vlasně pořádně nevím co chci.
Z pozice dodavatele je obvykle výhodné dodat software a svou marži ovlivňovat interně řízením odpracovaných hodin (kvalitou pracovní síly), ale pokud nejsem schopen řídit firmu a motivovat lidi, může být výhodné "uvázat" svou pracovní sílu odběrateli a zajistit si pevný příjem.
Nechci soudit, ShopSys ani nejí zákazníky neznám, ale nemůže mít popisovaný neúspěch příčinu v souběhu těchto zmr.ehm jevů, tedy jakési neochoty podnikat v podnikání?
s tímhle bych nesouhlasil.
Hlavní vlastnostní agilního vývoje je, že samotný produkt je velice rychle funkční a postupně se mu staví nové a nové vlastnosti, tj. ikdyž dojde k vyčerpání budgetu, pořád se může použít již zaplacená a dodělaná část.
Agilní vývoj minimalizuje cenu slepých větvý a daleko dříve na ně upozorňuje. U plánování je velice drahé najít a podchytit slepé větve dopředu, u složitých produktů to je skoro nemožné a cena je astronomická.
Všude kolem sebe máme krásné příklady, facebook, google, AMD, operační systémy a další jedou spíše agilní vývoj, rychlé obrátky produktů a postupná validace změn, náklady se počítají průběžně (třeba měsíčně). Naopak veškeré státní zakázky jsou striktně plánované, náklady se počítají na celý několikaletý vývoj, částky jsou astronomické. Stejná situace panuje třeba u vývoj vesmírných družic u NASA.
Je-li pro mě důležitý přesný výsledek za předem jasnou cenu v přesném termínu, agilnímu vývoji se vyhnu, ale připlatím si za to. Pokud jedna z těch věcí není pro mě stěžejní, na agilním vývoji ušetřím.
Agile je ideální pro projekty řešené vlastními lidmi uvnitř firmy. V takovém případě je dle mého ale velmi reálné nebezpečí, že z původně efektivního a pružného agilního přístupu se stane nástroj pro krytí IT urvaného ze řetězu. Na takové IT nikdo nemůže, protože termíny plní, náklady jsou fixní (přece ty interní lidi stejně živíme) a s funkcionalitou si vždycky pohne, aby to zvládlo.
Agilní projekty s externím dodavatelem se pak vymykají chápání přímo na realizaci nezainteresovaných osob, takže se pak kvůli nim nedá udělat nic jiného, než oba přístupy kombinovat a udělat takového kočkopsa - jen tak ale může být pozice dodavatele a odběratele vyrovnaná.
Ahoj Petře, pěkný článek, je vidět, že nad agile uvažuješ a medituješ čím dál více:)
Zažila jsem pokusy o agile, agile stylem "nastudujeme si *vyber agilní metodiku*, skočíme na jedno školení a už všecko umíme" a pak jsem měla tu čest působit v týmu, kde se jelo na scrumu. Ale opravdu jelo, včetně aktivní účasti klienta během vývoje. Každodenní scrumy, plánování sprintů, sprint reviews, přesně dané role, okamžité řešení problémů... paráda:)
Jedna věc je mít agile nastudovaný horem spodem, ale jsou faktory, které agile minimálně hodně zadrhnou, ne-li absolutně zastaví. Ze zkušenosti je to hlavně:
1- neochota týmu dělat nové věci- ono je celkem jedno, jakou roli člověk v týmu zastává, pokud má s agilním vývojem nějaký problém, většinou to přenese i na ostatní a motivace i výsledky jdou dolů.
2- z nějakého důvodu nevhodně zvolení scrum masteři a product owneři- neboli role rozdělovače práce na člověkohodiny a člověk odpovědný za směřování vývoje a konečnou podobu produktu. To, že je někdo výborný projekťák ještě neznamená, že má na to být i výborným SM, stejně tak bezvadný analytik není vždycky nejlepším PO
3- jeden člověk ve více rolích- tohle úzce souvisí s dalším bodem. Zažila jsem pokusy sloučit roli scrum mastera a product ownera do jedné osoby, dopadlo to blbě (většinou pro toho člověka, protože toho měl prostě moc a žádný jiný pohled na věc). Stejně tak není dobré mít databázového specialistu, který se ale zároveň stará o kódování designu a ve volné chvíli testuje kolegům hotové úkoly. Taky tester/analytik/děvečka pro všechno není dobrý nápad. Proč? Člověk tak ztrácí své pevné místo v týmu, svou roli, kupí se mu práce a nastává u něj pracovní schíza, kdy má pět pohledů na jednu věc, kteoru nakonec stejně nestihne, protože se nedovede rozhodnout.
4- nedostatečná kapacita týmu
Viz výše, pokud už jdu do projektu agilně, musím mít dopředu přehled o volných kapacitách a zároveň musím počítat s nejhorším možným scénářem- jeden programátor dlouhodobě nemocný, druhý odejde, scrum master otěhotní a product owner zemře (ad absurdum, já vím:) ). A i když se nedá plánovat vše na 100%, musím se situaci přizpůsobit a nesnažit se přizpůsobovat tým projektu. Protože pak už se každé plánování sprintu stává vlastně přesouváním nedokončených úkolů do dalšího sprintu a člověk je tam, kde byl před agile vývojem
5- nespolupráce klienta
Každý druhý klient si o agile něco načte a pak to strašně vyžaduje, pak už mu ale nedojde, že ho bude během vývoje pořád někdo prudit a chtít po něm konzultace, akceptace, schůzky... zejména z tohoto důvodu u nás v týmu agile není aktuálně dost dobře možný. Klient, jakožto logistická firma, má zaměstnance permanentně vytížené na 110% a na takovou spolupráci jednoduše nemá lidi.
6- absence sprint reviews
Většina lidí to bere jako otravu a zbytečnou schůzku, když přece všichni ví, co šlo v posledním releasu ven, ale chce to komplexní pohled jak na to, co se povedlo, tak taky na to, co se nepovedlo, kde jsou slabiny, na čem je třeba zapracovat. A to všechno pokud možno bez hádek a vzájemného obviňování.
Na svou etapu se scrumem vzpomínám moc ráda, je pravda, že tým sám o sobě byl složen z výjimečných lidí a myslím, že havně díky tomu a pořádnému vedení jsme byli schopni výborně komunikovat a hlavně dodat produkt v očekávané kvalitě bez zpoždění.
Přirovnání ke komunismu je dost trefné, ovšem z jiných důvodů, než myslíte. Není totiž pravda, že komunismus nikdo nedokázal uvést do praxe, v určitých oblastech časoprostoru se to podařilo.
Základní problém komunismu je, že potřebuje velmi specifický "typ" lidí, proto může fungovat lokálně, když se takoví seberou a založí si na dostatečně odlehlém místě komunu, ale jako model pro celou společnost by to znamenalo "přeprogramovat většinu", což se líbí "programátorům", ostatním už méně.
S agilním vývojem se to má podobně, když se sejde vhodný dodavatel s vhodným zákazníkem, může to fungovat. Jenže opravdu musejí být na obou stranách vhodní lidé, což není ani z jedné strany samozřejmé.
Problem asi bude v tom, cemu rikate komunismus. Zapadni demokracie, nejspise aby svym obcanum zjednodusili pohled na svet, za nej jednoduse oznacili vsechny systemy/zeme, kde byli u moci komuniste. Klasikove marxismu-leninismu ovsem komunismus popisovali zcela jinak - doporucuji navstevu dobreho antikvariatu a studovat, studovat, studovat ;-).