Výběrová řízení SW projektů implementovaných pomocí agilních projektových metodik

Moderátoři: Rada resortních týmů - členové, Resortni tym Bezpecnost

Odpovědět
Uživatelský avatar
Filip.Varecha
Komunální zastupitel/ka
Příspěvky: 342
Registrován: 02 úno 2018, 20:10
Profese: dev lead & agile evangelist
Dal poděkování: 615 poděkování
Dostal poděkování: 394 poděkování
Kontaktovat uživatele:

Výběrová řízení SW projektů implementovaných pomocí agilních projektových metodik

Příspěvek od Filip.Varecha »

Zdravím všechny Pirátky a Piráty!

Rád bych zde na fóru rozvířil diskusi ohledně tématu, které mi v souvislosti s pirátským programem přijde velmi důležité. Jak známo, statní (ale i soukromé, lze aplikovat klidně i na Piráty jako takové) zakázky na dodávky SW jsou dlouhodobě zdrojem problémů, neefektivity a vyhozených finančních prostředků.

Nejprve krátký úvod

Jako logické řešení výše uvedeného problému se nabízí na všechny takové zakázky uskutečňovat kvalitně připravená výběrová řízení, která zajistí, že ten, kdo výběrko vyhraje, bude vhodným dodavatelem. Zde ale narážíme na problém. Ve světě softwaru se již poměrně dlouho tuší, že tzv. waterfall model, často navíc spojený s fix time -- fix price zadáním v mnoha projektech selhává.

Důvodem je především to, že vývoj softwaru není to samé jako vyrábění bot. Každý software je jedinečný a jeho výroba je svým způsobem blíž kreativní tvorbě než repetitivnímu výrobnímu procesu. Proto je takřka vždy nemožné odhadnout, kolik práce vývoj zakázky nakonec zabere. Dodavatelé to tedy řeší jedním z následujících způsobů:
  • do cenové nabídky si dají dostatečný buffer, aby v případě problémů "neprotekli"
  • jdou do vlastního rizika a doufají, že to nějak vyjde
  • zakázku raději odmítnou než riskovat reputační riziko, nebo ztrátu peněz
Všechny varianty jsou jak pro dodavatele, tak i pro objednatele nevýhodné. Krom toho, že je problém již na vstupu, další dávka problémů typicky následuje v průběhu implementace. Odhad náročnosti je totiž vždycky jen odhad a nikdy není přesný vzhledem k absenci kompletních funkčních požadavků které naopak není schopen sestavit objednatel. Protože dokud to před sebou nevidí, všechno si prostě uvědomit nemůže. Výsledkem běžně bývá:
  • nabobtnání nákladů na několikanásobek
  • prodloužení délky implementace na několikanásobek
  • soudní spory mezi objednatelem a dodavatelem
... a podobně.

Jak to řešit jinak

Již dlouhou dobu se ví, že výše uvedené problémy jsou inheretně spojeny s waterfallem a v rámci jeho konceptu nemají žádné řešení. Jako odpověď na to vzniklo v roce 2001 Agile manifesto, které doporučuje k vývoji softwaru přistupovat zcela jinak. Klíčové charakteristiky tzv. agilního vývoje jsou mj.:
  1. vývoj je iterativní, v každém cyklu se odbaví kousek (tzv. sprinty)
  2. upfront analýza se nedělá, stačí mít big picture a analýzu dělat v rámci každé iterace
  3. testování je průběžné v každé iteraci
  4. na konci každé iterace je software v produkční kvalitě a potenciálně ho lze vypustit na veřejnost
  5. klíčové je sledování business value a rizik: nejprve se implementuje to nejpodstatnější a eliminuje se tím častý jev u waterfallu, kdy se čas mnohdy utrácí na kravinách
  6. kontrakty nejsou na dodávku celku, ale na jednotlivé iterace
  7. objednatel může kdykoliv říct "stop, tohle už mi stačí"
Agilní vývoj exceluje svojí transparentností a předvídatelností. Oproti waterfallu je vždy jasné, kde se zrovna nacházíme, a kolik nám toho ještě schází. Stejně tak dokážeme po několika sprintech mnohem přesněji odhadnout jak dlouho to celé vlastně potrvá. Neutrácí se čas na funkcích, které využije 5% uživatelů, protože se jede podle priority. Objednatel v každou chvíli ví, kolik peněž už utratil a co za to obdržel. Může tedy kontrolovat jestli do toho chce ještě něco nasypat, nebo jestli už je to za něj OK a může tedy vývoj ukončit. Stejně tak může velmi rychle celý proces ukončit pokud je nespokojen s kvalitou dodavatele.

Pokud máte pochybnosti jestli tohle lze aplikovat na cokoliv většího než eshopy, tak vězte, že to lze. Použili ho např. v FBI při implementaci softwaru na sledování jednotlivých casů, další info např. zde a zde.

Další info o tom jak to funguje lze nalézt třeba tady.

Super, takže proč je tady tohle vlákno?

S agilním vývojem je ale jeden problém. A to konkrétně ona zmiňovaná výběrová řízení. Narozdíl od FTFP projektů, kdy se dají kritéria jako cena a délka dodání napsat do podmínek, u agile vývoje tohle jednoduše nejde. Znovu zmiňuji: kontrakty se neobjednávají na celou dodávku, ale na odvedenou práci. A to je problém. Jak tohle zakotvit do výběrka?

Nad problémem jsem chvíli uvažoval a jediné co mě napadlo by byl následující mechanismus:
  • nad zakázkami by drželo záštitu např. ministerstvo informatiky
  • ministerstvo by si objednávalo jednotlivé dodavatelské týmy
  • primárním hodnotícím kritériem jsou: reference, cena za MD, zkušenosti
Muselo by se tedy poodstoupit od poptávání celých zakázek, místo toho by se kupovaly týmy.

Napadá vás jak tomu přistoupit nějak jinak?

Díky za pozornost. Pojďme být leadery i v přístupu k SW zakázkám!
Tito uživatelé poděkovali autorovi Filip.Varecha za příspěvky (celkem 5):
Andrej.Ramaseuski, Vit.Fux, Robert.Magni, Ondrej.Profant, Jitka.Novotna
Uživatelský avatar
Vit.Fux
Příspěvky: 1319
Registrován: 24 led 2012, 16:41
Profese: Programátor
Bydliště: Brno
Dal poděkování: 9886 poděkování
Dostal poděkování: 2538 poděkování

Re: Výběrová řízení SW projektů implementovaných pomocí agilních projektových metodik

Příspěvek od Vit.Fux »

Obecně se mi ten koncept líbí, ale je hodně zásadní otázka jak to mít prakticky vyřešené - ideální je koukat na to z hlediska našich vlastních procesů.
- Jak bysme stavěli výběrová řízení a finanční záměry? Napřed bysme interně schválili záměr a big picture a pak bysme soutěžili na cenu MD? A rovnou bysme soutěžili jinou firmu na SW audit při každém přidávání?
- Jak by se řešilo větší množství menších zakázek aniž by to nezahltilo systém administrativou?
- Jaký máš odhad na rozumnou velikost sprintu? Týdenní iterace jsou asi dost naprd, protože dělat předávací protokoly tak často by nikoho ani na jedné straně nebavilo.
// Jestli to dobře chápu, tak tenhle koncept je možný v podstatě jen v případě vlastnictví zdrojových kódů zadavatelem. Což je dobře, ale bude to komplikovat věci.

Nebo by to mělo fungovat tak, že by se "nahoře" vysoutěžilo pár firem na blind (resp rámcovou smlouvu) a ty by dostávaly konkrétní práci už bez VŘ od oblastních sdružení (třeba na úpravy webů) nebo od TO dle potřeby a podle toho jak by se dotyčný vyspal? Chtělo by se firmám do něčeho takového, kde by neměly jasné na jak dlouho tu práci mít budou?

Nebo by se pro každý typ práce (správa webů, vývoj stranických systémů, audity, ...) vysoutěžila jedna firma a ta by dělala všechno dokud by jsme my nebo oni nezrušili rámcovou smlouvu?

Waterfall+výběrové řízení mi dává smysl, ale Agile+VŘ ve mě vyvolává hromadu otázek. Resp. chápu tě "proč", ale nechápu tě zatím "jak"
Tito uživatelé poděkovali autorovi Vit.Fux za příspěvky (celkem 2):
Robert.Magni, Ondrej.Profant
Uživatelský avatar
Robert.Magni
Člen KS Plzeňský kraj
Příspěvky: 5558
Registrován: 18 led 2013, 17:08
Profese: dělník
Bydliště: Břasy 264,okr.Rokycany
Dal poděkování: 22540 poděkování
Dostal poděkování: 4545 poděkování
Kontaktovat uživatele:

Re: Výběrová řízení SW projektů implementovaných pomocí agilních projektových metodik

Příspěvek od Robert.Magni »

Zkuste virtuálně použít jako model to naše trápení s nadstavbou účetnictví
Tito uživatelé poděkovali autorovi Robert.Magni za příspěvky (celkem 2):
Josef.Spak, Filip.Varecha

Robert Magni
zabzicek@gmail.com
799796575
Nelíbí se vám moje názory ? Tak vypadněte na bar !
Roger Waters, Praha 2023

Uživatelský avatar
Filip.Varecha
Komunální zastupitel/ka
Příspěvky: 342
Registrován: 02 úno 2018, 20:10
Profese: dev lead & agile evangelist
Dal poděkování: 615 poděkování
Dostal poděkování: 394 poděkování
Kontaktovat uživatele:

Re: Výběrová řízení SW projektů implementovaných pomocí agilních projektových metodik

Příspěvek od Filip.Varecha »

Vit.Jurasek píše: 04 srp 2018, 20:56 Waterfall+výběrové řízení mi dává smysl, ale Agile+VŘ ve mě vyvolává hromadu otázek. Resp. chápu tě "proč", ale nechápu tě zatím "jak"
To, že nechápeš moje "jak" je zcela v pořádku, neboť v tom sám rozhodně nemám jasno.

Ale k věci.
Vit.Jurasek píše: 04 srp 2018, 20:56 Obecně se mi ten koncept líbí, ale je hodně zásadní otázka jak to mít prakticky vyřešené - ideální je koukat na to z hlediska našich vlastních procesů.
- Jak bysme stavěli výběrová řízení a finanční záměry? Napřed bysme interně schválili záměr a big picture a pak bysme soutěžili na cenu MD? A rovnou bysme soutěžili jinou firmu na SW audit při každém přidávání?
Je určitě vhodné nechat dělat stejnou věc stejný tým. Není až takový problém do smlouvy zakotvit něco jako garanci budoucích prací (opět za nějakou cenu za MD).
Vit.Jurasek píše: 04 srp 2018, 20:56 - Jak by se řešilo větší množství menších zakázek aniž by to nezahltilo systém administrativou?
V tomhle ohledu nevidím žádný zásadní rozdíl oproti waterfall stylu. Ty ano?
Vit.Jurasek píše: 04 srp 2018, 20:56 - Jaký máš odhad na rozumnou velikost sprintu? Týdenní iterace jsou asi dost naprd, protože dělat předávací protokoly tak často by nikoho ani na jedné straně nebavilo.
Délka sprintů je většinou na dohodě devel team - zástupce objednatele (Product owner). Nejčastěji to bývají dva týdny, ale může to být i týden, nebo měsíc. Delší sprinty už bývají problematické. Jinak: v čistě agilním přístupu se nic jako předávací protokol nevytváří. Odpovědnost za podobu produktu nese zástupce objednatele (výše zmíněný product owner). Ten vybírá co se bude dál dělat. Zároveň se v každé iteraci dělá "showcase" pro ostatní stakeholdery, aby viděli, jestli se to vyvíjí dle jejich představ. Odpovědnost dodavatele (devel team) je pak za technické zpracování a samozřejmě také konzultace jestli v danou chvíli je technicky možné a smysluplné danou funkcionalitu implementovat.

Je jasné, že to vyžaduje poměrně hodně práce na straně objednatele. Ale to je dobře. Při výrobě softwaru je iluze, že stačí napsat funkční požadavky a ono se to nějak zázračně stane. Aby byl výsledek kvalitní, je potřeba i na straně objednatele alokovat osobu, která se o to bude naplno starat. Je to normální náklad v rámci ceny toho SW.
Vit.Jurasek píše: 04 srp 2018, 20:56 // Jestli to dobře chápu, tak tenhle koncept je možný v podstatě jen v případě vlastnictví zdrojových kódů zadavatelem. Což je dobře, ale bude to komplikovat věci.
Ano, to je víceméně standard. Ale nevylučuje se to. Samozřejmě to není úplně nejvhodnější přístup v případě využití nějakého existujícího proprietárního sotwaru, který je pouze nutné nějak upravit. Je to vhodný přístup u nových projektů a u softwaru dodávaného na klíč.
Vit.Jurasek píše: 04 srp 2018, 20:56 Nebo by to mělo fungovat tak, že by se "nahoře" vysoutěžilo pár firem na blind (resp rámcovou smlouvu) a ty by dostávaly konkrétní práci už bez VŘ od oblastních sdružení (třeba na úpravy webů) nebo od TO dle potřeby a podle toho jak by se dotyčný vyspal? Chtělo by se firmám do něčeho takového, kde by neměly jasné na jak dlouho tu práci mít budou?
Firmy typicky bývají kontraktované na daný projekt. Forma rámcové smlouvy je taky alternativa, nicméně agile nejlíp funguje pokud spolu ten team funguje nějakou dobu. Když lidi neustále pendlují mezi projekty, je to na škodu. Takže mi spíš připadá vhodné dělat výběrka na jednotlivé projekty. Co se týče následné údržby, to už jsem zmínil na začátku - mělo by to být součástí kontraktu.

Je jisté, že některé firmy bez garance rozsahu odebrané práce nebudou mít o takové zakázky zájem. Čím dál tím víc firem ale rádo tyhle podmínky akceptuje, protože si uvědomují, že je to výhodný formát spolupráce i pro ně. Nenesou totiž prakticky žádné riziko. Součástí kontraktu navíc klidně může být i nějaká rozumná výpovědní lhůta.
Vit.Jurasek píše: 04 srp 2018, 20:56 Nebo by se pro každý typ práce (správa webů, vývoj stranických systémů, audity, ...) vysoutěžila jedna firma a ta by dělala všechno dokud by jsme my nebo oni nezrušili rámcovou smlouvu?
Typ práce je dost nekonkrétní věc. V rámci vývoje webů může existovat desítky různých technologií a ne každá firma je tak hustá, že zvládne cokoliv. Tenhle model si myslím, že by nefungoval.
Tito uživatelé poděkovali autorovi Filip.Varecha za příspěvek:
Robert.Magni
Uživatelský avatar
Filip.Varecha
Komunální zastupitel/ka
Příspěvky: 342
Registrován: 02 úno 2018, 20:10
Profese: dev lead & agile evangelist
Dal poděkování: 615 poděkování
Dostal poděkování: 394 poděkování
Kontaktovat uživatele:

Re: Výběrová řízení SW projektů implementovaných pomocí agilních projektových metodik

Příspěvek od Filip.Varecha »

Robert.Magni píše: 05 srp 2018, 09:42 Zkuste virtuálně použít jako model to naše trápení s nadstavbou účetnictví
To je dobrý nápad. Kdybychom to měli aplikovat na tu strastiplnou nadstavbu účetnictví, postup dle mých představ by byl cca následující:
  • Nejprve by se muselo ověřit, že danou práci může vůbec dělat někdo jiný než dodavatel účetnictví (existuje nějaké otevřené rozhraní ven?)
  • V druhé fázi by bylo nutné se trochu zamyslet nad tím, co je vlastně obsahem naší poptávky - tedy vydefinovat si klíčové požadavky na to co od dodavatele budeme poptávat. Tím nemyslím detaily typu jak by měly fungovat všechny workflows a jak by technicky měla daná věc být řešená, ale měli bychom mít představu nad základními oblastmi, které by výsledný produkt měl obsahovat.
  • Následně by se vypsalo VŘ. Hodnotící kritéria by byla založena na referencích, ceně za MD, zkušenostech s agile, schopnostech dodat veškeré potřebné profese (často potřebujete i UXáka, grafika, atd., proto to předchozí zamyšlení se), časových možnostech v následujících měsících a možná bychom vymysleli i něco dalšího.
  • Po vyběru dodavatele by se začalo s výběrem product ownera na straně Pirátů. Takový člověk by měl ideálně mit fulltime alokaci.
  • Pokud by jako metodika byl zvolen SCRUM, je velmi žádoucí do procesu dostat i zkušeného Scrum Mastera.
  • Udělal by se výkop backlogu, nastřelily by se epicy a začlo by se s prvními user stories.
  • Domluvila by se délka sprintů
  • Začlo by se první iterací podle backlogu a tím by se celý proces nakopnul.
  • Už od cca druhého nebo třetího sprintu může nadstavba v beta režimu fungovat a lidé ji mohou používat. Nejdůležitější funkce se dělají jako první.
  • V momentě, kdy nám dojdou peníze, nebo kdy už nám rozsah funkcí stačí můžeme říct "dost" a projekt ukončit.
Tito uživatelé poděkovali autorovi Filip.Varecha za příspěvky (celkem 3):
Robert.Magni, Vit.Fux, Ondrej.Profant
Odpovědět

Zpět na „Transparentní organizace“