čtvrtek 17. července 2014

Jak by dopadl Messi, Levák Bob a Němci v softwarovém vývoji

Právě ukončení Mistrovství Světa ve fotbale 2014 bylo pro fanouška hry odehrávající se v intencích - 22 hráčů, jeden míč, rozhodčí a vítězství Německa - balzámem na duši. Přihrávky, góly, trapasy, nějaký ten faul, nafilmované pády, zavedení video rozhodčího, prostě do kupy hromada emocí, které stálo za to rozebrat s přáteli u piva. Bývalá hvězda anglického fotbalu David Backham se nechala před finále slyšet, že Němci nevyhrají, protože v týmu nemají ani jednu hvězdu erste Klasse. Finálový zápas ukázal, jak dalece se tento pán mýlil. Němci, tím že vyhráli, jenom potvrdili vlastní cestu, kterou se rozhodli jít před deseti lety. Shodou okolností k tomu přispěl ostudný výprask od Českého B-týmu na EURO 2004. Při pročítání denního tisku jsem narazil na podobné vlastnosti popisující charakter a cestu Německého týmu. To mě inspirovalo k zamyšlení nad tím, co jsme mohli poslední čtyři týdny sledovat během Mundialu v Brazílii, a tím s čím se potkáváme v každodenním pracovním životě softwarového vývoje.





Jak je dobré nemít svého Neymara či Messiho nebo Robbena?

Týmy spoléhající na jednu svojí hvězdu, skončily těsně pod vrcholem. V softwarovém inženýrství se tomu říká Bus factor 1. Volná definice by mohla znít: kolik vašich inženýrů musí přejet autobus, aby se váš projekt zhroutil jako domeček z karet. Na pokraji vyčerpání hrající argentinský polobůh Lionel Messi a zraněný brazilský super-hrdina Neymar jasně ukázali, že v kolektivním snažení nemůže rozdíl mezi úspěchem a neúspěchem ležet na jednom člověku. Udělejte si retrospektivu s vaším týmem a zjistěte si, jaký je jeho bus factor. Čím nižší to číslo bude, tím větší problém máte. Němci vyhráli protože žádná z jejich ztrát neměla fatálníma vliv na chod týmu.



Teď trochu odbočím z fotbalového prostředí a přejdu k mému oblíbenému mysliteli Nassimu Talebovi. Ten v knize Antifragile mluví o myšlence, že neustálým vnášením neočekávaných fatálních událostí do systému posilujeme jeho robustnost. Vývojáři z firmy Netflix tuhle myšlenku přenesli do praxe tím, že napsali rodinu nástrojů, která jim zcela náhodně shazuje produkční servery, clustery a dokonce geograficky distribuované farmy. Ty nástroje nejsou nic jiného než deterministické generátory Černých labutí (další Talébova myšlenka, díky Křečáku) - tedy událostí, se kterými systém resp. vývojář nepočítá, jejich výskyt nejde předpovědět, a přitom mají nedozírné následky pro jeho fungování. Zcela programovým vnášením katastrofických chyb se Netflixu daří neustále zlepšovat spolehlivost celého systému.


Výše uvedenými řádky jsem nechtěl rozhodně naznačit, že Argentinci měli zkušebně kopnout Messiho pod koleno, aby svůj tým připravili na hru bez něj. Nenaznačuji tím ani to, abyste nějakého nebohého vývojáře nechali zavřít do ústavu, jenom proto, abyste zjistili, jak hodně na něm váš tým závisí. Fungují i méně invazivní metody. Stačí si porovnat výkonost týmu ve sprintech v závislosti na tom, kdy byli jednotlivý členové na dovolené. Pokud se vám vývoj zastavil, třeba při absenci jedné třetiny vývojového týmu, je z toho patrné, jaký máte bus factor. Jedinou a správnou možností, jak tomuto problému čelit, je budovat tým, kde se dokáží jeho členové zastoupit. Je to složité, pracné, bolí to, ale vyplatí se to. Jediná jistota černého scénáře totiž je, že se někdy naplní.


V bývalém týmu hodně pomohlo, když jednotlivé role rotovaly. Existovala například role Elitního opraváře chyb s týdenní expirací. Vývojář měl v první řadě na starosti odstranění menších chyb, které přicházely z manuálního testování, a které by narušovaly fungování týmu ve sprintu. Ve zbytku času pracoval na vylepšování infrastruktury a dalších úkolech mimo produktový backlog. Ideálně měl pomoci odmazávat technologický dluh. Zastupitelnost člena týmu zodpovědného za produkční nasazení a produkční zásahy jsme budovali vývojem nástroje pro automatizované nasazování změn v produkčním clusteru a nástrojem, který umožňoval provádět operační úkoly přímo týmu zákaznické podpory.


Levák Bob a cargo kult defenziva

Historická a potupná prohra 1:7 Brazílie s Německem v semifinále turnaje odhalila vážné nedostatky kanárků. Říká se tomu cargo cult. Kmeny na Polynéských ostrovech si stavěly napodobeniny letadla a věřily, že se díky tomu vrátí bílý muž, jehož příchod měly historicky spojený právě s příletem nákladního letadla. Brazilci si mysleli, že složením obrany z hráčů hrajících v nejlepších klubech, získají nepropustnou obranu. To že máte v obrané řadě hráče Realu Madrid, Barcelony, Bayernu Mnichov a k tomu Chelsea - to jest absolutně nejlepších mužstev na klubové úrovni - neznamená, že bude vaše obrana fungovat lépe než banda nekopů Jirky Luňáka ze seriálu Okresní přebor. Podobný cargo cult je často vidět při pokusu o agilní vývoj. Napodobování technik jednotlivých agilních metodologií ještě neznamená, že děláte agilní vývoj. Střízlivění Brazilců z cargo cultu jejich defenzívy potrvá dlouho dobu. Pokud se týká agilního vývoje, doporučoval bych pročtení Manifest Agilního vývoje software, abyste si ověřili, jestli jste opravdu agilní a nebo pěstujete cargo cult. Sebepoznání bývá často prvním krokem k nápravě...



Jogiho mantra

Němci se k zlaté sošce Niké nedostali náhodou, nebyl to tým, který by především spoléhal na vrtkavou přízeň štěstěny. Mimochodem byla to jejich pátá medaile v řadě. Na každém Mistrovství Světa nebo Mistrovství Evropy od roku 2006 postoupili minimálně do semifinále. Kromě dodržování propracovaného systému bránění nesvazoval trenér Joachim Löw útočnou činnost žádnými pravidly. Po hráčích chtěl, aby se do útoku zapojovali v co největším počtu. Strávil jsem část své kariéry tím, že jsem dělal věci, které po mě nikdo nechtěl. Nebyly v žádném backlogu, prostě jsem měl pocit, že je správné je v určitou chvíli dělat. Zakutat se do nějakého frameworku, refaktorovat kód, který mi pil krev v žilách, udělat prototyp něčeho co jsem považoval za užitečné. Nežádal jsem o povolení, ale o odpuštění, když to náhodou nevyšlo. Kreativitu není možné nařídit. Je možné pouze vytvořit prostředí, ve kterém pro ní nejsou formální či neformální zábrany. Německy tým dodržoval systém, který byl dostatečně bezpečný, ale zároveň poskytoval hráčům dostatek volnosti, která byla nezbytná pro jejich kreativitu. Každé pracovní prostředí, organizace nebo tým by se měl budovat podle podobné mantry - minimum pravidel zajištujících spolehlivé fungování a dostatek volnosti umožnující rozvoj kreativních schopností.



Fotbal je hra s jednoduchými pravidly a v podání těch nejlepších vypadá jednoduše. Paralela se softwarovým vývojem není čistě náhodná. Věřím, že nejlepší softwarové týmy fungují a mají podobnou charakteristiku jakou měl ten Německý na tomto Mistrovství Světa.

Autor tohoto článku je amatérský hráč fotbalu živící se vývojem softwaru