Jak uspořádat verzování kódu při více knihovnách
Retrospektiva je nejdůležitější ceremonie agile týmu, ale často skončí u obecného tlachání, které nikam nevede. Klíčem k posunu je strukturovaná zpětná vazba, která nutí každého mluvit konkrétně a měřitelně. Bez ní se diskuse točí v kruzích a stejné problémy se vracejí každý sprint. Jak na to?
Častou chybou je psát zprávy v minulém čase, jako byste popisovali hotovou věc. Lepší je použít rozkazovací způsob nebo přítomný čas, protože to odpovídá tomu, co commit dělá, když je aplikován. Například „Přidej testy pro přihlášení" je jasné a akční. Vyhněte se také vágním slovům jako „úpravy", „oprava" nebo „refaktoring" – pokud neřeknou, co konkrétně je upraveno, opraveno nebo refaktorováno. Vždy doplňte, co je předmětem změny, ať už jde o soubor, funkci nebo chování.
Typickou chybou je verzování celého projektu jako jedné velké verze, která zahrnuje i změny v knihovnách. Pak není jasné, která verze knihovny je v které verzi projektu obsažena. Při hledání chyby pak musíte procházet celou historii, místo abyste se podívali na seznam závislostí. Další častou chybou je, že knihovny mají příliš časté aktualizace, které mění veřejné rozhraní. To pak nutí všechny projekty k okamžitým úpravám. Proto pro knihovny platí pravidlo: měnit veřejné rozhraní pouze ve větších, předem oznámených verzích.
Testovací pyramida není jen teoretický model, ale praktický nástroj, který vám pomůže udržet náklady na testování pod kontrolou. Základní myšlenka je jednoduchá: čím níže v pyramidě test stojí, tím by ho mělo být více, a naopak. Na dně jsou rychlé a levné jednotkové testy, uprostřed integrační testy a na vrcholu pomalé end-to-end testy. Když tohle rozdělení nedodržíte, skončíte s testy, které běží desítky minut, jsou křehké a při každé změně kódu vyžadují ruční opravy.
Když procházíte historii projektu, každá commit zpráva by měla odpovědět na dvě otázky: co se změnilo a proč. Většina vývojářů ale píše zprávy jako „oprava bugu" nebo „úpravy". Takové popisy jsou k ničemu, protože neříkají, co přesně se dělo, a hlavně proč. Bez kontextu se po pár měsících vracíte k hádankám a musíte ručně procházet diff, abyste zjistili, co se vlastně stalo. Cílem není psát romány, ale dodat dostatek informací, aby se kdokoli v historii rychle zorientoval.
Dalším bodem je délka zprávy. Krátké shrnutí je povinné, ale podrobný popis by měl být maximálně pár odstavců. Pokud potřebujete vysvětlit více, je lepší rozdělit změny na menší commity. Nepište ale ani zprávy, které jsou jen shrnutím diffu – to je zbytečné. Místo toho se zaměřte na kontext: jaké problémy změna řeší, jaké jsou její vedlejší účinky, co by mohlo být překvapivé. Tím pomůžete kolegům i budoucímu sobě.
Jakmile je jednotková vrstva pevná, přejděte na integrační testy. Ty ověřují, že vaše komponenty spolupracují správně – typicky s databází, externími službami nebo frontendem. Zde platí pravidlo: testujte jen to, co jednotkově nejde pokrýt. Například mapování ORM, SQL dotazy nebo synchronizaci mezi moduly. U integračních testů si dejte pozor na stav prostředí. Vždy používejte izolovanou testovací databázi a po každém běhu ji vracejte do původního stavu. Jinak se vám testy navzájem ovlivňují a vy strávíte hodiny hledáním chyby, která je jen artefaktem pořadí testů.
Na závěr si zkuste přečíst svou zprávu očima někoho, kdo projekt nezná. Pokud by mu dávala smysl a věděl by, proč byla změna provedena, máte vyhráno. A pokud si nejste jistí, podívejte se na historii svých posledních commitů – často uvidíte, co je třeba zlepšit. Psaní kvalitních zpráv je dovednost, která se dá trénovat, a odměnou je vám přehledná historie, která šetří čas při každé spolupráci.
Nakonec si pamatujte, že retrospektiva není jen o zpětné vazbě, ale i o oslavě úspěchů. Pokud tým splnil cíl nebo zvládl náročnou situaci, řekněte to nahlas. Pozitivní zpětná vazba posiluje důvěru a motivaci, a to je základ pro to, aby lidi vůbec chtěli mluvit o tom, co se nedaří. Strukturovaná vazba vám dá rámec, ale teprve bezpečné prostředí z ní udělá skutečný nástroj růstu.
Klíčové je rozlišovat mezi „co" a „proč". Diff vám ukáže, co se změnilo, ale ne proč. Proto v popisu vždy vysvětlete důvod. Například místo „Změněna barva tlačítka" napište „Změněna barva tlačítka na tmavší, aby byl lépe viditelný na světlém pozadí". Taková informace šetří čas při revizi kódu i při budoucí údržbě. Pokud je změna složitější, rozdělte ji do více commitů, ať každý dělá jednu věc. To usnadní reverz a hledání příčiny chyb.