Každý codebase si nesie určitý technický dlh. Nie je to znak zlého tímu, ale prirodzený vedľajší produkt doručovania softvéru pod reálnym tlakom a obmedzeniami. V legacy systéme nie je problémom samotná existencia dlhu, ale to, že je neviditeľný: nikto ho nesledoval, nikto ho nevyčíslil a celé roky potichu zdanil každú jednu zmenu.
Prečo je legacy dlh také ťažké vidieť
Dlh sa nabaľuje takmer v každom produkte rovnako. Blížiaci sa deadline si vynúti dočasné riešenia (workarounds), ku ktorým sa už tím nikdy nevráti. Závislosti (dependencies) zastarávajú, pretože ich aktualizácia pôsobí riskantne. Pôvodní vývojári odídu a s nimi zmizne aj kontext, ktorý by vysvetlil, prečo kód vyzerá práve takto.
V legacy kóde mali tieto drobné rozhodnutia roky na to, aby sa znásobili. Úroky sa potom splácajú na miestach, ktoré sa ťažko identifikujú: pomalší onboarding nových ľudí, krehké nasadzovanie (deployments) a odhady úloh, ktoré neustále rastú bez zjavného dôvodu. V čase, keď tím požiada o audit, je dlh absolútne reálny, no nikto nevie presne ukázať, kde sa skrýva.
Čo audit skutočne meria
Audit legacy kódu existuje preto, aby túto hmlu premenil na jasnú mapu: oddeľuje kód, na ktorom je bezpečné stavať, od kódu, ktorý si vyžaduje okamžitú opravu. Zároveň túto opravu vyčísli, takže z obavy sa stáva strategické rozhodnutie. V praxi to znamená analýzu grafu závislostí, test coverage, „hotspotov“, ktoré sa menia najčastejšie, a častí aplikácie, ktorých sa každý bojí dotknúť.
Analýza s pomocou AI zásadne zmenila ekonomiku tejto práce. Mapovanie dlhu už nevyžaduje týždne manuálnej archeológie, čo zvyčajne tvorí obrovskú časť nákladov pri migrácii legacy kódu. Čím rýchlejšie dokážete dlh vyčísliť, tým skôr sa refaktorovanie stane jasným plánom namiesto hazardu.
Od dlhu k plánu refaktorovania
Pomenovanie dlhu má zmysel len vtedy, ak zmení vaše ďalšie kroky. Dobrý audit sa končí prioritizovaným zoznamom: čo treba opraviť skôr, než sa to rozbije, čo nechať tak, pretože to funguje stabilne, a čo prepísať, pretože náklady na udržiavanie prevyšujú náklady na náhradu. Práve toto poradie určuje rozdiel medzi prepisom, ktorý sa sám zaplatí, a prepisom, ktorý uviazne v polovici cesty.