Teknisk gjeld: det usynlige lånet i produktet ditt

Av Weapp · Oppdatert

Teknisk gjeld er snarveier i koden som sparer tid nå, men koster rente senere: tregere utvikling og flere feil. Noe gjeld er rasjonell, akkurat som et lån, så lenge den er bevisst og betales ned. For en kunde viser den seg som stadig tregere leveranser. Motmiddelet er å budsjettere for løpende nedbetaling og kreve at leverandøren synliggjør gjelden.

Teknisk gjeld er et av de begrepene utviklere snakker om og kunder betaler for, uten alltid å forstå det. Bildet av et lån er overraskende presist: Du låner tid i dag ved å ta en snarvei i koden og betaler tilbake med renter senere i form av tregere utvikling. Akkurat som med økonomiske lån er ikke gjelden et onde i seg selv. Den kan være en klok beslutning. Problemet er gjelden som tas ubevisst og aldri betales ned.

Hva teknisk gjeld faktisk er

Når et team bygger raskt, tar det snarveier: en løsning som fungerer nå, men som ikke er bygget for å holde, en del som ikke ryddes opp, en struktur som blir mer rotete for hvert tillegg. Hver slik snarvei er et lite lån. Den gjør at akkurat den funksjonen blir ferdig raskere, men den legger en rente på alt fremtidig arbeid i den samme delen av koden.

Noe gjeld er rasjonell. Skal du rekke å lansere før en frist, kan det være helt riktig å ta en bevisst snarvei og rette den opp etterpå, akkurat som en bedrift kan låne for å investere i riktig øyeblikk. Forskjellen på sunn og usunn gjeld ligger i to ord: bevisst og nedbetalt. En gjeld som teamet kjenner til og planlegger å betale ned, er et verktøy. En gjeld som ingen holder oversikt over, er en lekkasje.

Slik viser gjelden seg for deg

Du kommer aldri til å se den tekniske gjelden i koden, men du merker renten i hverdagen. Tegnene er tydelige når du vet hva du skal lytte etter:

  • Enkle endringer tar plutselig mye lengre tid enn de pleide.
  • Nye funksjoner koster uforholdsmessig mye med tanke på hvor små de virker.
  • Den samme typen feil kommer tilbake, ofte på nye steder.
  • Utviklerne begynner å snakke om at enkelte deler er «skjøre», eller at de «helst ikke rører» et bestemt område.

Det siste punktet er renten uttrykt i hverdagsspråk. Når et team unngår en del av systemet av frykt for at noe skal gå i stykker, betaler du allerede på gjelden, i form av forsiktighet, omveier og tid.

Å budsjettere for nedbetaling

Løsningen er ikke å jage null gjeld, noe som ville være like urimelig som aldri å låne. Løsningen er å betale ned løpende. I praksis betyr det at en del av utviklingskapasiteten i hver periode går til å forbedre det som allerede finnes, ikke bare til å bygge nytt.

HåndteringKonsekvens over tid
Ingen nedbetalingRenten vokser, og hver funksjon blir dyrere enn den forrige
Løpende nedbetalingGjelden holdes i sjakk, og tempoet forblir jevnt
Stor opprydding på én gangDyrt og risikabelt, ofte et nødtiltak når gjelden har fått vokse for lenge

En vanlig tommelfingerregel er å sette av en andel av hver utviklingsperiode til forbedring og vedlikehold. Nøyaktig hvor mye avhenger av tilstanden til systemet, men prinsippet er at lite og ofte nesten alltid slår mye og sjelden. Den som skyver alt vedlikehold foran seg, havner til slutt i den dyreste situasjonen av alle: en total ombygging.

Et scenario: to år uten nedbetaling

Et selskap presset leverandøren sin til bare å levere nye funksjoner og aldri rydde. De første månedene gikk det fort, og alle var fornøyde. Etter ett år tok hver ny funksjon dobbelt så lang tid, og etter to år turte teamet knapt å røre kjernen. Det som så ut som effektivitet, all tid på nytt og ingenting på vedlikehold, hadde i virkeligheten bygget opp en gjeld som nå spiste halve utviklingsbudsjettet i ren rente.

Hadde de i stedet satt av en liten del løpende, ville tempoet ha holdt seg jevnt, og den dyre oppryddingen ville aldri ha vært nødvendig.

Spørsmålene som tvinger frem innsyn

Siden du ikke ser gjelden selv, må du få leverandøren til å synliggjøre den. Spør rett ut hvilke deler av systemet de helst ikke rører, og hvorfor. Be om et anslag over hvor stor del av tiden som går med til å håndtere gammel gjeld. Og krev at forbedringsarbeid vises som egne punkter i planleggingen, ikke skjules inne i andre oppgaver.

En moden leverandør snakker åpent om gjelden og har en plan for den. Den som påstår at det ikke finnes noen teknisk gjeld i det hele tatt, har enten ikke sett etter eller velger å tie om den. Vil du ha et uavhengig bilde av tilstanden i et system, tilbyr vi i Weapp det, og en teknisk gjennomlysning setter tall på gjelden før den rekker å bli dyr.

Ofte stilte spørsmål

Er teknisk gjeld alltid noe negativt?

Nei. Akkurat som et lån kan teknisk gjeld være en klok beslutning. Å ta en bevisst snarvei for å rekke lanseringen og rette den opp etterpå kan være helt riktig. Problemet oppstår når gjelden tas ubevisst og aldri betales ned. Da vokser renten til den spiser opp utviklingstempoet. Målet er ikke null gjeld, men bevisst og håndtert gjeld.

Hvordan merker jeg som kunde at gjelden vokser?

Det tydeligste tegnet er at alt tar lengre tid. Enkle endringer som før gikk raskt, trekker plutselig ut, nye funksjoner tar uforholdsmessig lang tid, og de samme feilene kommer tilbake. Utviklerne begynner å snakke om at ting er skjøre, eller at de ikke tør å røre en bestemt del. Det er renten på gjelden du hører, oversatt til hverdagsspråk.

Hva koster det å ikke håndtere teknisk gjeld?

Prisen kommer snikende, men er stor: Hver ny funksjon blir dyrere enn den forrige, helt til selv små endringer koster urimelig mye. I verste fall blir systemet så vanskelig å jobbe med at en kostbar ombygging fremstår som eneste utvei. Å betale ned litt løpende er nesten alltid billigere enn å la gjelden vokse til det nivået.

Hvordan får jeg leverandøren til å synliggjøre gjelden?

Spør rett ut hvilke deler av systemet de helst ikke rører, og hvorfor, og be dem anslå hvor mye av tiden som går med til å håndtere gammel gjeld. Be også om at forbedringsarbeid vises som egne punkter i backloggen, ikke skjules i andre oppgaver. En moden leverandør snakker åpent om gjelden. En som sier at den ikke finnes, har enten ikke sett etter eller skjuler den.