Přeskočit na obsah

Technický dluh brzdí vývoj: jak ho změřit a co řešit první

Pro CTO a vývojářeRozhodnutí CTO · Aktualizováno

Filip Papraneczakladatel Digitaliko

Technický dluh brzdí vývoj. Začněte tam, kde se kód mění. Ilustrace: seznam souborů seřazený podle počtu změn, nejčastěji měněné jsou zvýrazněné.Technický dluh brzdí vývoj. Začněte tam, kde se kód mění. Ilustrace: seznam souborů seřazený podle počtu změn, nejčastěji měněné jsou zvýrazněné.

Technický dluh brzdí vývoj ve chvíli, kdy každá nová funkce trvá déle než ta předchozí. Pro firmu to znamená roadmapu, která se posouvá, a vývojáře, kteří hasí místo toho, aby stavěli.

Změřit se dá bez drahého nástroje, z historie gitu a z chyb. Opravit je potřeba nejdřív dluh v kódu, který se mění nejčastěji, ne ten nejošklivější.

AI dnes píše všechen náš kód, za výsledek ručí senior. Filip předtím 7 let vyvíjel jeden SaaS produkt. Dluh v produktu, který žije roky, nevyřešíte jedním sprintem. Splácíte ho průběžně.

Jak poznáte, že vás brzdí technický dluh?

Dluh se neohlásí sám. Projeví se jako pomalost, kterou si každý vysvětlí jinak. Tlačítko, které mělo trvat den, trvá týden. Zaškrtněte, co o vašem týmu platí. Každý nezaškrtnutý bod je jeden signál dluhu.

Jak změřit technický dluh bez drahého nástroje?

Nepotřebujete platformu na analýzu kódu. Potřebujete odpověď na otázku, kde vás změny stojí nejvíc.

Co měřitKde to najdeteCo vám to řekne
Jak často se soubor měníhistorie gitukde dluh bolí nejvíc
Kde vznikají chybytracker, hotfixy, incidentykteré části jsou křehké
Testy v často měněném kódureport z CIkde je každá změna riziko
Kdo modulu rozumígit blame, reviewkde máte jediného člověka
Čas od sloučení po nasazeníCI a záznamy nasazeníjestli vás brzdí kód, nebo proces
Odhad proti realitěsprinty, trackerkolik platíte za dluh u každého úkolu

Nejsilnější signál je kombinace prvních dvou řádků. Soubor, který se mění často a zároveň z něj chodí chyby, je dluh s úrokem. Seznam nejčastěji měněných souborů vám dá jeden příkaz:

git log --since="6 months ago" --format= --name-only | sort | uniq -c | sort -rn | head -20

Ke každému souboru z výsledku si poznamenejte chyby, které se ho týkaly. Prvních pár řádků je váš seznam.

Co opravit jako první?

Ne to, co je nejošklivější. To, co vás stojí nejvíc času právě teď. Pořadí, které používáme:

  1. Dluh v cestě roadmapy

    Splacení se projeví hned u nejbližší funkce a obhájíte ho před vedením.

  2. Často měněný kód s chybami

    Platíte za něj u každého úkolu.

  3. Testy a CI, které umí selhat

    Bez nich je každé další splácení riskantní.

  4. Znalost jednoho člověka

    Pokud odejde, dluh se změní ve výpadek.

Na konec patří estetika a přechod na novější framework „protože je novější“. Kód, na který měsíce nikdo nesáhne, může být ošklivý. Nestojí vás nic. Pokud se nepoužívá vůbec, nesplácíme ho, ale smažeme. Tak to děláme i ve vlastních repozitářích: nepoužitý kód a nástroje, které nikdo nevolá, jdou pryč.

Pokud je dluh v jedné části tak velký, že zvažujete přepsání, začněte stejně. Nejdřív testy na současné chování, teprve potom rozhodnutí. Jak nastavit testy a review, které špatnou změnu opravdu zastaví, rozepisujeme v článku Jak zavést AI do vývoje softwaru v týmu.

Jak dluh splácet bez zastavení roadmapy?

Ve stejném toku jako funkce. Ne v „refaktoringovém sprintu“, který se pořád posouvá, protože přišla urgentní funkce.

  • Pevný podíl kapacity. Domluvte ho s produktem předem a nesahejte na něj při první urgenci.
  • Splácejte tam, kde pracujete. Když děláte funkci v zadluženém modulu, uklidte ho ve stejném pull requestu.
  • Nejdřív test, potom změna. Test na současné chování zachytí, co byste jinak rozbili.
  • Žádný nový dluh bez záznamu. Pokud zkratku děláte vědomě, zapište ji jako úkol s důvodem.

Takhle to vypadá na jedné funkci z roadmapy:

Technický dluh ve čtyřech krocích na příkladu: git ukáže nejčastěji měněný soubor invoice.ts s chybami, funkce z roadmapy Nová cenotvorba ho potřebuje, testy a CI ho zajistí a úklid jde ve stejném pull requestu. Kód report.php, na který nikdo nesahá, počká.Technický dluh ve čtyřech krocích na příkladu: git ukáže nejčastěji měněný soubor invoice.ts s chybami, funkce z roadmapy Nová cenotvorba ho potřebuje, testy a CI ho zajistí a úklid jde ve stejném pull requestu. Kód report.php, na který nikdo nesahá, počká.

AI tady mění ekonomiku. Testy na existující kód, přesuny a přejmenování byly drahé, proto se odkládaly. S AI jsou levné. Bez pravidel a review ale AI dluh stejně rychle přidává. Co jí proto dáváme do repozitáře, popisujeme v článku Pravidla pro AI kód v týmu.

První kroky na tento měsíc:

  1. Vytáhněte z gitu seznam nejčastěji měněných souborů.
  2. Ke každému si poznamenejte chyby za poslední měsíce.
  3. Vyberte tři místa, která blokují nejbližší funkci z roadmapy.
  4. Domluvte s produktem pevný podíl kapacity na dluh.
  5. Ověřte, že CI umí zastavit špatné sloučení.

Kdy to nedoporučujeme

  • Dluh vás nebrzdí, jen se vám nelíbí. Pokud se ten kód nemění, nechte ho být. Kapacitu dejte do roadmapy.
  • Produkt se za pár měsíců vypíná nebo nahrazuje. Splácet dluh v kódu, který končí, se nevyplatí.

Chcete dluh splácet s někým, kdo to dělá denně?

Senior se zapojí do vašeho repozitáře a pull requestů od prvního dne. Splácí dluh v cestě roadmapy, vedle funkcí, ne místo nich. Takhle pracujeme jako externí vývojář pro produktový tým.

Napište nám, která část systému vás brzdí nejvíc. Ozveme se do dvou pracovních dnů a společně vybereme, co vyřešíme jako první.

Pokud si chcete nejdřív promluvit, domluvte si meeting na 15 minut s Filipem.

Který soubor ve vašem repozitáři se bojí otevřít celý tým?

Ve zkratce

  • Technický dluh změříte z historie gitu a z chyb, bez drahého nástroje.
  • Nejdřív opravte dluh v cestě nejbližší funkce z roadmapy, ne nejošklivější kód.
  • Před změnou testy na současné chování a CI, které umí selhat.
  • Splácejte v běžných pull requestech, s pevným podílem kapacity.

Časté otázky

Jak změřit technický dluh?

Nejjednodušeji z historie gitu a z chyb. Soubory, které se mění nejčastěji a zároveň v nich vznikají chyby, jsou dluh, který vás opravdu stojí čas. K tomu sledujte, jak se prodlužují odhady u malých změn.

Co opravit jako první?

Dluh v kódu, který potřebujete pro nejbližší funkci z roadmapy. Potom často měněný kód s chybami. Kód, na který nikdo nesahá, nechte být, i když je ošklivý.

Jak vysvětlit technický dluh vedení?

Přes čas a riziko, ne přes kvalitu kódu. Ukažte, o kolik déle trvají změny v konkrétní části a kolik chyb z ní přichází. Nejlépe na funkci z roadmapy, na kterou vedení čeká.

Zvyšuje AI technický dluh?

Bez pravidel a review ano, protože píše rychle a bez kontextu. S pravidly v repozitáři, testy a review od někoho jiného ho pomáhá splácet. Testy a přesuny kódu jsou s AI levné.

Zeptejte se AI na tento článek

AI při odpovědi využije i naše další články a zkušenosti z reálných projektů.

ChatGPTClaudePerplexity
Engineering

Ostatní články

Rozhodnutí CTO

Claude Code pricing: cena pro tým, API a agenty

Claude Code pricing podle veřejného ceníku Anthropicu (říjen 2026): Pro, Max, Team seaty, Enterprise a API tokeny. Co se hodí vývojářům, na čem běží agent na pozadí a CI reviewer, a pojistky, které agentovi nedovolí projet rozpočet.

Rozhodnutí CTO

Alternativy k Vercelu: proč máme Vercel i Cloudflare

Vercel jsme nenahradili, práci jsme rozdělili. Next.js weby zůstávají na Vercelu, nové aplikace běží na Cloudflare Workers a D1, popsané v TypeScriptu přes Alchemy. Ceny se zdroji, naše konfigurace a zablokovaný deploy od AI agenta.

Rozhodnutí CTO

Better Auth vs Clerk: proč jsme si vybrali Better Auth

Better Auth vs Clerk se rozhoduje podle toho, kde žijí vaši uživatelé a session. Z NextAuth jsme v nových aplikacích přešli na Better Auth a Clerk jsme si nevybrali. Naše reálná konfigurace, pluginy v produkci, ceník Clerku a kdy je Clerk lepší volba.

Čas přestat plánovat a začít řešit.

Kontakt

  • Digitaliko s.r.o.
    Šípková 377/17
    958 03 Malé Uherce, Slovensko
  • Ozvěte se nám
    info@digitaliko.com
    +421 950 595 506
    WhatsApp