Každý inženýrský tým se čas od času dostane z různých důvodů do potíží. Někdy tým zaskočí explozivní růst. Nebo se pohotovost vymkla kontrole a výstrahy se spouštějí každých pět minut. Nebo si prostě vývojový a provozní tým přestanou rozumět. Ať už je důvod jakýkoli, tým je na tom špatně a je třeba něco udělat, aby se to vyřešilo.
Je-li to nový problém, náprava může být snadná: přidat několik dalších serverů, vrátit se ke známé dobré verzi aplikace nebo všechny svolat na pizzu a pivo, aby si vyjasnili situaci. Často se však problém plíživě objeví v průběhu času a najednou je díra tak hluboká, že nemůžete najít cestu ven. Ve společnosti LinkedIn tým, který se dostane do tohoto bodu, často vyhlásí stav známý jako „žlutý kód“.
Žlutý poplach
Někteří lidé se domnívají, že název žlutý kód vychází ze semaforů, ale přesnější – a s geekovským nádechem – je ve skutečnosti z vašeho oblíbeného seriálu „Star Trek“. Přesněji řečeno, je to způsob, jakým posádka hvězdné lodi Enterprise označuje svůj aktuální obranný stav. Ať tak či onak, definice je jasná: něco je špatně a je třeba postupovat opatrně. Věrni oběma metaforám máme také červený kód. Ten je lépe popsán jako okamžitá krize, kdy všichni pracují 24 hodin denně, dokud není vyřešena. Žlutý kód je o něco klidnější: Všichni se na něj soustředí především, ale pouze v pracovní době. Žlutý kód má také tendenci trvat řádově měsíce, zatímco červený kód by měl trvat řádově dny.
Jiné společnosti mohou používat jiný termín než žlutý kód, ale efekt je stejný: Tým sděluje zbytku společnosti, že identifikoval závažný problém, který je prioritně třeba vyřešit, aby byl zajištěn úspěch týmu, a tedy i společnosti. Schopnost takového postupu je důležitým aspektem otevřené a upřímné komunikace, což je hodnota, která je pro zdravou kulturu zásadní a která může být často přehlížena. Mluvit o problémech je stejně důležité, ne-li důležitější, než oslavovat úspěchy. Týmy se mohou naučit více z řešení problému než z celkového úspěchu.
Toto není neúspěch
Prvním krokem při zahájení žlutého kódu je pochopit, že toto není neúspěch. Není ostuda přiznat, že tým má problém, který je třeba vyřešit. Chyby se stávají, přestože se jim snažíme vyhnout. Jediné, co můžeme udělat, je diagnostikovat problém a napravit ho. Selháváme pouze tehdy, když před těmito problémy zavíráme oči. To platí pro vzájemnou interakci našich inženýrských týmů stejně jako pro software a systémy, které vytváříme a provozujeme.
Je však velmi důležité, aby se řešily správné problémy. Většinou jsme se do současné situace dostali kvůli pomalému varu – rostoucímu technickému dluhu, mnoha malým problémům nebo poruchám v procesu – který nakonec přerostl v krizi. Cílem žlutého kódu musí být nejen náprava současných problémů (reaktivní složka), ale také zajištění toho, aby se v budoucnu neopakovaly (proaktivní složka).
Plánování úspěšného žlutého kódu
Pro úspěšný žlutý kód je zapotřebí několika složek a také nezbytných částí pro získání souhlasu zbytku organizace:
- Vyjádření problému: Musí existovat jasné a odsouhlasené prohlášení o problémech, kterým tým čelí a které jsou důvodem pro Code Yellow. To by mělo zahrnovat nejen to, jaké jsou aktuální problémy, ale také jaké je současné chápání jejich hlavní příčiny.
- Kritéria ukončení: Dále je třeba stanovit konkrétní cíle, na jejichž dosažení bude tým pracovat, aby mohl žlutý kód opustit. Mělo by jít o tradiční cíle SMART: specifické, měřitelné, dosažitelné, relevantní a časově omezené. Právě tyto cíle umožňují, aby tým do žlutého kódu vůbec vstoupil, protože pokrývá pevně stanovený rozsah a není otevřený.
- Komunikace: Veškeré informace o žlutém kódu, včetně oznámení (které obsahuje popis problému a výstupní kritéria), úspěšného uzavření a pravidelných aktualizací stavu by měly být zasílány širší organizaci. Může to být vaše oddělení nebo celá inženýrská organizace. V závislosti na povaze problémů to může být i celá společnost.
- Řízení projektů: Stejně jako u všech velkých projektů musí být někdo zodpovědný za organizaci práce a předávání informací. Vzhledem k tomu, že se jedná o scénář „všechny ruce na palubě“ pro zasažený tým, je obvykle užitečné mít specializovaného projektového manažera (PM), který s tím pomůže. Obvykle se jedná o PM, který má znalosti o týmu a práci, ale není přímo zapojen do realizace. To uvolní vedoucím a jednotlivým přispěvatelům ruce, aby se mohli soustředit na práci.
Po promýšlení každého z těchto aspektů a rozhodnutí o vstupu do žlutého kódu je prvním úkonem týmu přeorganizovat své priority podle výstupních kritérií. To často znamená odložit čtvrtletní cíle na poličku. Může být také nutné zřídit speciální schůzku kolem projednávání stavu výstupních kritérií.
Prostor k nadechnutí
Je sice dobře, že tým vstoupí do žlutého kódu a pracuje s jednotným zaměřením na cíle, které byly stanoveny k nápravě, ale to k úspěchu týmu nestačí. Pro skutečný úspěch musí všichni v okolí týmu pochopit situaci a dát mu prostor pro jeho práci. To je místo, kde zdravá inženýrská kultura povstává, aby čelila výzvě.
- Očekávejte zpoždění: Nejčastějším způsobem, jakým bude tangenciální tým ovlivněn, jsou zpoždění. Musí počítat s tím, že všechny požadavky, které byly vzneseny vůči ovlivněnému týmu, mohou být zpožděny, pokud nejsou v rámci výstupních kritérií. Žlutý kód zahrnuje ve své podstatě změnu pořadí priorit s cílem řešit uvedený problém. Externí týmy musí tuto skutečnost vzít v úvahu a pochopit, že může být nutné upravit jejich vlastní časový plán projektu.
- Minimalizujte nové požadavky: Ostatní týmy by se také měly zdržet požadování nových věcí od ovlivněného týmu, které jsou mimo rámec definovaných výstupních kritérií. Minimalizace těchto požadavků, kromě akceptování odkladů u všech stávajících požadavků, umožní ovlivněnému týmu věnovat své omezené inženýrské hodiny na to, aby se dostal na druhou stranu žlutého kódu.
- Žádosti o pomoc od ostatních týmů: Tým ve žlutém kódu může zjistit, že k dosažení svých cílů potřebuje pomoc zvenčí. Pokud například dojde k náhlému, explozivnímu nárůstu provozu, mohou potřebovat urychlit zajištění nového hardwaru. Když se ocitnete na straně příjemce takové žádosti, může to vyžadovat změnu vašich vlastních priorit. Vždy mějte na paměti, že celý tým je součástí jedné společnosti, a proto všichni společně uspějí nebo selžou.
Inženýrské týmy málokdy stojí osamoceně a je důležité, aby všichni chápali hodnotu toho, že tyto týmy dobře fungují a dobře spolupracují. Malé dočasné zpoždění cílů, které má zajistit, že tomu tak je, se vyplatí.
Světlo na konci tunelu
Žlutý kód představuje značné množství práce s vysokou prioritou a práce na něm bude pro tým často stresující. Říci „ne“ spolupracovníkům, kteří vznášejí rozumné požadavky, je těžké a práce, která je v rozsahu, zřídkakdy zahrnuje trávení času nad zajímavými novými funkcemi. Pokud navíc řešené problémy zahrnují problémy s komunikací mezi skupinami, bude nutné vést obtížné rozhovory. Jakmile se však tým přiblíží ke konci práce, bude mnohem snazší prohlédnout, co leží na druhé straně výstupních kritérií.
Konečným cílem Code Yellow je dostat tým z reaktivního režimu, kdy běhá od krize ke krizi, do proaktivního stavu, kdy je schopen pracovat na správných velkých projektech. Dosažení výstupních kritérií bude znamenat, že inženýři budou efektivnější a schopni pracovat proaktivně. Tím je tým silnější – inženýři jsou spokojenější, protože nejsou pod velkým stresem z provozní práce, tým pracuje dobře, protože spolu efektivně komunikují, a zákazníci jsou spokojeni, protože požadavky jsou vyřízeny buď automatizovaně, nebo v rozumném čase.
Má vaše společnost interní proces, který je podobný tomu, jak LinkedIn provádí Code Yellow?
– Todd Palino
.