I denne blog vil jeg beskrive en tilgang til at prioritere teknisk gæld i en enterprise applikation, som er under fortsat udvikling. Og hvorfor skal man så det?
Lad mig starte med at forklare lidt om teknisk gæld. Teknisk gæld bliver opbygget over tid og kan af omfang være langt større end man forestiller sig. Måske er gælden forårsaget af en kodepraksis, som rammer lidt ved siden af. Det kan eksempelvis være en switch case over en enum, hvor man ikke har en default, eller brug af X509Certificate2 (.Net System.Security.Cryptography.X509Certificates) uden at kalde Reset metoden bagefter. Du kan som produktejer, eller anden interessent, pludselig blive gjort opmærksom på den tekniske gæld. Det kan fx være på bagrund af en transition fra 'convention' (aftaler om, hvordan man koder) til 'structure' (tilføjelse af statisk kode-analyseværktøj, som Resharper eller SonarQube).
Det er nødvendigt at prioritere teknisk gæld, fordi man sjældent har tid til at håndtere al gælden på én gang. Selv hvis man havde tiden, er det relevant at tage stilling til, om ens mål er helt at udrydde alt gælden eller ej - måske vurderer man at tiden alligevel er bedre brugt på at videreudvikle selve applikationen.
Lad mig introducere en eksempel-applikation. Den har mange hundredtusind kodelinjer og er udviklet over adskillige år af en stor gruppe dygtige udviklere, der har arbejdet test driven, med gode kodeprincipper og code review ('convention'). Ved at lade SonarQube lave statisk kodeanalyse, blev der pludselig sat fokus på teknisk gæld. Der blev identificeret 31.000 issues og de var fordelt sådan her på severity (alvorlighed):