Druhým pravidlem je limit rozpracované práce. Ten musí být nižší, než je počet lidí v týmu. Pokud máte pět lidí, nastavte limit tři až čtyři karty v jednom sloupci. Vyšší číslo znamená, že lidé začnou pracovat na všem najednou a nic nedokončí. Limity se týkají sloupců, kde vzniká hodnota, ne fronty čekajících úkolů. U fronty naopak držte počet položek co nejnižší, ideálně jen to, co zvládnete do dvou týdnů.
Kanban vypadá jednoduše: pár sloupců, barevné kartičky a limity na rozpracovanou práci. V praxi ale většina týmů skončí u tabule, která se po měsíci přestane aktualizovat. Metodika pro kanban není o nástroji, ale o dohodě, jak tým pracuje. Než začnete cokoli nastavovat, sepněte si na papír, co chcete zlepšit: příliš mnoho rozdělané práce, čekání na schválení, nebo neviditelné priority. Bez tohoto cíle skončíte u estetické tabule bez užitku.
Typické chyby se opakují. Lidé kopírují hlavičku z jiného projektu, aniž zkontrolují, zda sedí k jejich záměru. Jiní zapomenou uvést licenci do souboru LICENSE i do hlaviček zdrojových souborů, takže je stav nejasný. Někteří si myslí, že zveřejněním na veřejném úložišti je licence automaticky vyřešená. Není. Bez výslovné licence platí výchozí autorskoprávní režim, který použití prakticky znemožňuje.
Při oddělování pomáhá i to, že se konfigurace testuje zvlášť. Napište test, který ověří, že aplikace nastartuje s minimální sadou proměnných, a test, který ověří chování při chybějící hodnotě. Tím odhalíte závislosti dřív, než se dostanou do produkce. Zároveň mějte v kódu jasnou chybovou zprávu, která řekne, která proměnná chybí a jaký má formát. Bez toho se ladění konfigurace zvrhne v hádání.
Na co se ptát, než licenci zapíšete do souboru Projděte si čtyři otázky. První: smí váš kód používat někdo, kdo ho zabuduje do uzavřeného produktu? Druhá: musí být odvozené dílo zveřejněno pod stejnou licencí? Třetí: řeší licence i patentové nároky, nebo je mlčí? Čtvrtá: je text licence kompatibilní s licencemi knihoven, které už používáte? Právě poslední bod se podceňuje. Míchání licencí, které nejsou vzájemně kompatibilní, je častý a zbytečný problém.
Testů přes skutečné uživatelské rozhraní drž co nejméně. Jsou pomalé a křehké: stačí posunout tlačítko a přestanou fungovat. Piš je jen pro kritické cesty – přihlášení, dokončení objednávky, smazání účtu. Vždy hledej prvek podle stabilního identifikátoru, ne podle textu, který se překládá. Počkej na stav, ne na pevný počet sekund; pevné čekání je nejčastější důvod, proč testy na pomalém počítači padají. A když test spadne, podívej se nejdřív, jestli není chyba v testu samotném.
Na co si dát pozor: nepleť si skryté činnosti s neznámem. Neznámo se řeší prototypem nebo časově ohraničeným průzkumem, ne přidáním rezervy. Také si neber odhad jako závazek — je to predikce za určitých předpokladů. Když se předpoklady změní, změň i odhad a řekni to včas. Nejčastější chyba není špatné číslo, ale to, že se o změněných podmínkách mlčí až do konce.
Typická chyba je míchat tajemství s běžnou konfigurací. Běžné hodnoty jako úroveň logování nebo timeout se dají verzovat v samostatném repozitáři. Tajemství jako klíče a hesla by měla být spravována nástrojem pro správu tajemství nebo injektována při nasazení. Další chybou je, že se konfigurace načítá v pořadí, které není jasné. Vždy definujte precedence: výchozí hodnota v kódu, potom soubor prostředí, potom proměnná prostředí, potom runtime přepínač. Když je pořadí nejasné, vznikají chyby, které se těžko reprodukují.
Oddělené verzování není jen otázka pořádku. Umožňuje nasazovat stejný artefakt do různých prostředí, snižuje riziko úniku citlivých údajů a zkracuje dobu, za kterou se najde příčina chyby. Pokud už teď máte konfiguraci v kódu, začněte tím, že oddělíte tajemství a přidáte validační vrstvu. Zbytek lze přesouvat postupně, prostředí po prostředí, aniž by se musel zastavit vývoj.
Začněte tím, že vezmete každou položku v backlogu sprintu a rozepíšete ji na konkrétní kroky. Ne na fáze typu „analýza, vývoj, testování", ale na činnosti, které zaberou jeden až dva dny. Pokud se krok nedá dokončit do dvou dnů, je příliš velký a musí se rozdělit dál. Cílem je dostat se na úroveň, kde každý člen týmu dokáže říct, co přesně bude dělat a co bude mít na konci hotové.
Verzování kódu a verzování konfigurace se často slévají do jednoho repozitáře, protože to na začátku ušetří pár minut. Jenže jakmile se aplikace nasadí do více prostředí, začnou se měnit hodnoty jako připojovací řetězce, cesty k souborům nebo klíče API. Když tyto hodnoty leží ve stejném stromu jako zdrojový kód, každá změna prostředí vytváří commit, který nemá s vývojem aplikace nic společného. Historie se zanese a při hledání regrese v kódu se prochází změny, které jen přepínají hostname databáze.