Jump to content

Jak uspořádat verzování kódu při více knihovnách: Difference between revisions

From Dusty Ways: Rebirth
Created page with "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?<br><br>Č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ří..."
 
mNo edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
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?<br><br>Č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ť jde o soubor, funkci nebo chování.<br><br>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.<br><br>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.<br><br>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.<br><br>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ě.<br><br>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ů.<br><br>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.<br><br>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.<br><br>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.
Při řešení konfliktů se zaměřte na to, co je skutečně potřeba změnit. Než začnete konflikt ručně upravovat, podívejte se na obě verze kódu a pochopte, proč ke konfliktu došlo. Často se stává, že konflikt je pouze zdánlivý — obě větve dělají stejnou věc jiným způsobem. V takovém případě je lepší konzultovat s autorem druhé změny a domluvit se na jednotném řešení. Po vyřešení konfliktů vždy spusťte testy a zkontrolujte, že vaše změny nezpůsobily regresi.<br><br>Retrospektiva je srdcem zlepšování, ale jen pokud ji berete vážně. České týmy často sklouznou k tomu, že si postěžují, ale nenavrhnou žádná konkrétní opatření. Zkuste metodu „start, stop, continue" – každý člen navrhne jednu věc, kterou začneme dělat, jednu, kterou přestaneme, a jednu, kterou budeme dělat dál. Na konci si vyberte maximálně tři akční body a přiřaďte jim vlastníka. Bez vlastníka a termínu se retrospektiva mění v tlachání. A pozor – změny z retrospektivy musí být viditelné v dalším sprintu, jinak tým ztratí motivaci.<br><br>Nakonec se vyplatí investovat čas do automatizace testů, které ověří, že projekt funguje s novou verzí knihovny. Před uvolněním nové verze knihovny spusťte testy všech projektů, které ji používají. Tím odhalíte případné problémy dříve, než se dostanou k uživatelům. Když se přesto stane, že nová verze knihovny rozbije projekt, mějte připravený postup pro rychlé vrácení zpět – ideálně pomocí reverze commitu. S tímto přístupem bude vaše verzování přehledné a projekty bez zbytečného chaosu.<br><br>Mezi časté omyly patří i to, že „bez licence" znamená volné použití. Není tomu tak – autorský zákon chrání vaše dílo automaticky, a kdokoli by ho chtěl použít, musí žádat o svolení. Pokud chcete být opravdu otevření, musíte licenci explicitně udělit. Také se vyhněte vlastním vymyšleným licencím, které kombinují prvky různých standardů – to vede k právní nejistotě a většina vývojářů se jim vyhne. Držte se osvědčených šablon, které jsou srozumitelné a mají jasnou judikaturu.<br><br>Když už zvládáš jednoduché volání, zkus přidat parametry dotazu. Třeba pro filtr nebo stránkování. To je častý bod, kde začátečníci tápou – nevědí, jestli parametry patří do URL, nebo do těla. Pro GET je používej v URL za otazníkem, pro POST je dej do těla jako JSON. Vždy si přečti dokumentaci konkrétního API, protože formát se liší. A hlavně: nikdy neposílej citlivé údaje v URL – může se ti to vymstít v logách.<br><br>Jednotkové testy jsou základem udržovatelného kódu. Framework NUnit patří mezi nejpoužívanější nástroje pro testování v ekosystému .NET. Pokud začínáte, první kroky jsou jednoduché: vytvořte testovací projekt, přidejte balíček NUnit a napište první třídu s atributem [TestFixture]. Každá testovací metoda pak nese atribut [Test]. Důležité je, aby testy byly nezávislé, rychlé a jejich výsledek nebyl ovlivněn pořadím spuštění.<br><br>Verzování kódu při paralelním vývoji více feature větví je častým zdrojem konfliktů a ztráty času. Klíčem k efektivní práci je disciplína a jasná pravidla, která platí pro celý tým. Než začnete s jakoukoli větví, ujistěte se, že máte aktuální stav hlavní větve a že vaše lokální změny jsou založeny na stabilním bodu. Ideálně si před vytvořením nové větve stáhněte nejnovější změny z remote a vytvořte větev až z aktuálního stavu. Tím se vyhnete zbytečným konfliktům, které vznikají při mergování starých větví.<br><br>Scrum není o tom, že budete dělat víc věcí za kratší dobu. Je o tom, že budete dělat ty správné věci a budete mít zpětnou vazbu dřív. Pro české týmy je klíčové, aby si ujasnily role, definici hotového a hlavně aby se nebály říct managementu, že něco nestihnou. Začněte malým pilotním projektem, ne celou organizací. Až uvidíte první výsledky, rozšiřte působnost. Jinak skončíte s byrokratickým monstrem, které nemá s agilitou nic společného.<br><br>Začni s voláním GET na veřejné API, které nevyžaduje registraci ani klíč. Otevři si terminál a použij nástroj pro příkazovou řádku, nebo si vytvoř malý skript v jazyce, který už znáš. Tvůj první požadavek může být jen načtení dat ve formátu JSON. Odpověď si vytiskni na obrazovku. Důležité je sledovat, jakou strukturu data mají – jestli je to pole, objekt, nebo vnořený objekt. To je základ pro to, abys uměl data zpracovat dál.<br><br>Největší český problém je vztah k odhadům. Tým často vnímá odhady jako závazek vůči managementu, a proto buď nadhodnocuje, nebo se bojí říct pravdu. Odhady jsou ale pouze nástroj pro plánování, ne výkonnostní kritérium. Pokud management začne měřit rychlost týmu (velocity) a tlačit na vyšší čísla, tým začne uměle navyšovat odhady. Místo toho se zaměřte na stabilní tempo – pokud je rychlost konstantní, můžete plánovat s větší jistotou. A pokud tým dodává méně, než slíbil, řešte příčiny, ne čísla.

Latest revision as of 14:34, 21 August 2026

Při řešení konfliktů se zaměřte na to, co je skutečně potřeba změnit. Než začnete konflikt ručně upravovat, podívejte se na obě verze kódu a pochopte, proč ke konfliktu došlo. Často se stává, že konflikt je pouze zdánlivý — obě větve dělají stejnou věc jiným způsobem. V takovém případě je lepší konzultovat s autorem druhé změny a domluvit se na jednotném řešení. Po vyřešení konfliktů vždy spusťte testy a zkontrolujte, že vaše změny nezpůsobily regresi.

Retrospektiva je srdcem zlepšování, ale jen pokud ji berete vážně. České týmy často sklouznou k tomu, že si postěžují, ale nenavrhnou žádná konkrétní opatření. Zkuste metodu „start, stop, continue" – každý člen navrhne jednu věc, kterou začneme dělat, jednu, kterou přestaneme, a jednu, kterou budeme dělat dál. Na konci si vyberte maximálně tři akční body a přiřaďte jim vlastníka. Bez vlastníka a termínu se retrospektiva mění v tlachání. A pozor – změny z retrospektivy musí být viditelné už v dalším sprintu, jinak tým ztratí motivaci.

Nakonec se vyplatí investovat čas do automatizace testů, které ověří, že projekt funguje s novou verzí knihovny. Před uvolněním nové verze knihovny spusťte testy všech projektů, které ji používají. Tím odhalíte případné problémy dříve, než se dostanou k uživatelům. Když se přesto stane, že nová verze knihovny rozbije projekt, mějte připravený postup pro rychlé vrácení zpět – ideálně pomocí reverze commitu. S tímto přístupem bude vaše verzování přehledné a projekty bez zbytečného chaosu.

Mezi časté omyly patří i to, že „bez licence" znamená volné použití. Není tomu tak – autorský zákon chrání vaše dílo automaticky, a kdokoli by ho chtěl použít, musí žádat o svolení. Pokud chcete být opravdu otevření, musíte licenci explicitně udělit. Také se vyhněte vlastním vymyšleným licencím, které kombinují prvky různých standardů – to vede k právní nejistotě a většina vývojářů se jim vyhne. Držte se osvědčených šablon, které jsou srozumitelné a mají jasnou judikaturu.

Když už zvládáš jednoduché volání, zkus přidat parametry dotazu. Třeba pro filtr nebo stránkování. To je častý bod, kde začátečníci tápou – nevědí, jestli parametry patří do URL, nebo do těla. Pro GET je používej v URL za otazníkem, pro POST je dej do těla jako JSON. Vždy si přečti dokumentaci konkrétního API, protože formát se liší. A hlavně: nikdy neposílej citlivé údaje v URL – může se ti to vymstít v logách.

Jednotkové testy jsou základem udržovatelného kódu. Framework NUnit patří mezi nejpoužívanější nástroje pro testování v ekosystému .NET. Pokud začínáte, první kroky jsou jednoduché: vytvořte testovací projekt, přidejte balíček NUnit a napište první třídu s atributem [TestFixture]. Každá testovací metoda pak nese atribut [Test]. Důležité je, aby testy byly nezávislé, rychlé a jejich výsledek nebyl ovlivněn pořadím spuštění.

Verzování kódu při paralelním vývoji více feature větví je častým zdrojem konfliktů a ztráty času. Klíčem k efektivní práci je disciplína a jasná pravidla, která platí pro celý tým. Než začnete s jakoukoli větví, ujistěte se, že máte aktuální stav hlavní větve a že vaše lokální změny jsou založeny na stabilním bodu. Ideálně si před vytvořením nové větve stáhněte nejnovější změny z remote a vytvořte větev až z aktuálního stavu. Tím se vyhnete zbytečným konfliktům, které vznikají při mergování starých větví.

Scrum není o tom, že budete dělat víc věcí za kratší dobu. Je o tom, že budete dělat ty správné věci a budete mít zpětnou vazbu dřív. Pro české týmy je klíčové, aby si ujasnily role, definici hotového a hlavně aby se nebály říct managementu, že něco nestihnou. Začněte malým pilotním projektem, ne celou organizací. Až uvidíte první výsledky, rozšiřte působnost. Jinak skončíte s byrokratickým monstrem, které nemá s agilitou nic společného.

Začni s voláním GET na veřejné API, které nevyžaduje registraci ani klíč. Otevři si terminál a použij nástroj pro příkazovou řádku, nebo si vytvoř malý skript v jazyce, který už znáš. Tvůj první požadavek může být jen načtení dat ve formátu JSON. Odpověď si vytiskni na obrazovku. Důležité je sledovat, jakou strukturu data mají – jestli je to pole, objekt, nebo vnořený objekt. To je základ pro to, abys uměl data zpracovat dál.

Největší český problém je vztah k odhadům. Tým často vnímá odhady jako závazek vůči managementu, a proto buď nadhodnocuje, nebo se bojí říct pravdu. Odhady jsou ale pouze nástroj pro plánování, ne výkonnostní kritérium. Pokud management začne měřit rychlost týmu (velocity) a tlačit na vyšší čísla, tým začne uměle navyšovat odhady. Místo toho se zaměřte na stabilní tempo – pokud je rychlost konstantní, můžete plánovat s větší jistotou. A pokud tým dodává méně, než slíbil, řešte příčiny, ne čísla.