Technický dluh
Také známo jako Tech debt, Technický dluh, Dluh v kódu
Stručně
Zkratky v kódu, které dnes fungují a od zítřka si účtují úrok — pomalejší změny, víc chyb, dražší provoz.
Technický dluh je slib, že si to pořádně uděláte později. Není to automaticky chyba: nacpat do pilotu natvrdo ceník ušetří měsíc a nic nestojí, když se pilot zruší. Problém nastane, když o tom slibu nikdo neví — pak se nikdy nesplatí a úrok roste.
Úrok platí lidé
Dluh se nejdřív projeví jako číslo, teprve pak jako vztek. Funkce, která loni trvala dva dny, teď zabere čtyři. Po nasazení v pondělí přijde oprava v úterý. Nový vývojář potřebuje tři týdny, než udělá první bezpečnou změnu. Nic z toho není chyba, takže to nikdo nezaloží — a přesto je tým pomalejší a klient se tiše diví, proč.
Zvládnutý dluh vypadá jinak než neprojdoušený. Zvládnutý má v trackeru poznámku, vlastníka a spouštěcí podmínku — „až objednávek za měsíc přeteče 10 000, přesuneme to na pořádnou frontu“. Neprojdoušený je zřetězení stringů, kterého si nikdo nevšiml a které teď týdně stojí jeden support.
Jak ho ukázat netechnickým lidem
Nikdy neříkejte „ten kód je nepořádek“. Řekněte, co to stojí. „Změna ceny v e-shopu teď zabere čtyři dny vývoje místo jednoho, protože logika cen je na pěti místech“ je číslo, o kterém se klient umí rozhodnout. „Checkout má technický dluh“ je číslo, se kterým nic neudělá.
Veďte krátký veřejný registr dluhu — jeden řádek na položku, co stojí, co stojí oprava, co se rozbije, když se odloží. Sledujte tři čísla, kterým rozumí i lidé mimo vývoj: jak dlouho trvá od požadavku k nasazení, kolik dní blokuje release nějaká zkratka a kolik měsíce šlo na opravy místo na novou práci. Když má dluh číslo, řeč přestane být o vkusu a začne být o prioritách.
Splatit ho nejde celý
Měsíc jen splácet, nic nedodat, je taky špatný obchod — produkt stojí a firma platí architecturu. Obvykle dává smysl vyhradit pevný podíl kapacity, kolem 10–20 %, a nechat platit kousek dluhu každého, kdo se dotčeného kódu dotkne. Prioritizujte podle toho, kolikrát vás kód už štípl, ne podle toho, jak ošklivě vypadá.
Některý dluh je v pořádku navždy. Prototyp, který nikdy neměl žít, report, který nikdo nepoužívá, monolit, kterému se pod vaším provozem daří. Napsat „tenhle dluh přijímáme a proto“ je úplná odpověď. Nic neopravit a nic nerozhodnout je to, co se nabaluje.
Zdroje
Související pojmy
Refaktoring
Změna uspořádání kódu, která nemění jeho chování — stejná funkčnost, ale struktura, která přežije další úpravu.
Technická specifikace
Krátká písemná dohoda o tom, co se staví, co ne a co se počítá za hotové — dřív než padne první řádek kódu.
Monorepo
Několik aplikací a sdílených balíčků v jednom repozitáři — jedna verze každé knihovny a jedna změna na funkci.