Hva er teknisk gjeld?

Av Weapp · Oppdatert

Teknisk gjeld er summen av snarveier i kode og arkitektur som gjør hver fremtidig endring tregere og dyrere. Akkurat som et lån har den en rente: Jo lenger den blir liggende, desto mer koster den. Noe gjeld er bevisst og rasjonell for å komme raskt ut på markedet, mens snikende gjeld er farligst. Symptomene viser seg som stadig tregere utvikling.

Teknisk gjeld er et av de mest treffende begrepene i systemutvikling nettopp fordi sammenligningen holder på alle punkter. Den forklarer hvorfor et system som en gang var raskt å bygge videre på, plutselig blir tregt og dyrt. Her går vi gjennom hva det betyr, og hvordan du kjenner det igjen.

Definisjonen

Teknisk gjeld er summen av alle snarveier og kompromisser i et systems kode og arkitektur som gjør hver fremtidig endring tregere og dyrere. Hver gang noen velger den raske løsningen i stedet for den holdbare for å spare tid nå, legges en liten bit gjeld til haugen.

Ingen enkeltstående snarvei er farlig. Problemet er at de hoper seg opp. Et system fullt av små kompromisser blir til slutt et system der ingenting kan røres uten at noe annet risikerer å gå i stykker. Gjelden vises ikke i grensesnittet og merkes ikke direkte av brukerne. Den ligger i koden, usynlig til den begynner å bremse alt arbeid.

Den beste forklaringen på hvordan det fungerer, ligger i selve navnet.

Lånemetaforen: avdrag og rente

Teknisk gjeld oppfører seg akkurat som et økonomisk lån, og derfor er bildet så nyttig.

En snarvei gir deg fart nå, på samme måte som et lån gir deg penger nå. Men den koster rente. Renten er alt det ekstra arbeidet som hver fremtidig endring krever på grunn av snarveien: Hver gang noen må jobbe seg rundt den raske løsningen, betaler man litt rente på gjelden.

Betaler man aldri ned, vokser gjelden, og renten med den. Til slutt kan så mye av utviklingstiden gå med til bare å håndtere gammel gjeld at det knapt blir krefter igjen til noe nytt. Å betale avdrag, altså å sette av tid løpende til å rydde og forbedre koden, holder gjelden i sjakk. Et system helt uten teknisk gjeld er urealistisk; målet er å ikke la den løpe løpsk.

Bevisst mot snikende gjeld

En viktig nyanse er at ikke all teknisk gjeld er av det onde. Den kan deles i to typer, og de bør håndteres helt forskjellig.

TypeKjennetegn
Bevisst gjeldEt aktivt valg for å komme raskt ut på markedet, kjent og planlagt
Snikende gjeldBygges opp utilsiktet og usynlig, uten beslutning, og er farligst

Bevisst gjeld er ofte helt rasjonell. Å ta en snarvei for å rekke lanseringen i tide og vinne et marked kan være en klok forretningsbeslutning, så lenge man vet at gjelden finnes og har tenkt å betale den ned når presset letter. Det er et lån man tar med åpne øyne.

Snikende gjeld er den farlige. Den bygges opp utilsiktet, én slurvete løsning om gangen, uten at noen har tatt en beslutning eller i det hele tatt lagt merke til den. Fordi ingen ser den, blir det heller aldri satt av tid til å fjerne den, og den kan rekke å vokse seg stor før den oppdages. Det er forskjellen på et lån man har tatt bevisst, og en gjeld man våkner opp og innser at man har pådratt seg.

Symptomene du merker

Du trenger ikke å lese kode for å ane at gjelden vokser. Den avslører seg i hverdagen, først og fremst i tempoet.

Det tydeligste tegnet er at enkle endringer plutselig tar urimelig lang tid. Noe som burde ta en dag, tar uker, og utviklerne sier at de må bygge om en del før de kan legge til det du ba om. Et annet symptom er at feil kommer tilbake: Problemer man trodde var løst, dukker opp igjen. Ofte skyldes det at den underliggende strukturen er for skjør.

Når «kan dere ikke bare endre dette raskt?» stadig oftere møtes med nøling i stedet for et ja, er teknisk gjeld ofte den underliggende årsaken. Det er ikke teamet som har blitt dårligere. Det er systemet som har blitt tyngre å jobbe i.

Å kjenne igjen disse symptomene tidlig gjør at man kan betale ned i tide før gjelden lammer utviklingen. Vil dere ha en nøytral vurdering av hvor mye gjeld som er bygget opp i systemet deres, og hva som er verdt å gjøre noe med, ser vi i Weapp gjerne på koden sammen med dere før den blir en flaskehals.

Ofte stilte spørsmål

Hva er teknisk gjeld, enkelt forklart?

Det er alle snarveiene og kompromissene i et systems kode og arkitektur som gjør systemet vanskeligere å endre i fremtiden. Hver gang man velger den raske løsningen fremfor den holdbare, bygges det opp litt gjeld. Den vises ikke utad, men den gjør at systemet blir stadig tregere og dyrere å videreutvikle over tid.

Hvorfor sammenlignes det med et lån?

Fordi mekanismen er den samme. En snarvei gir deg fart nå, akkurat som et lån gir deg penger nå, men snarveien må betales tilbake med renter. Renten er alt ekstraarbeidet som hver fremtidig endring krever på grunn av snarveien. Betaler man aldri ned, vokser gjelden helt til en stor del av arbeidet går med til bare å håndtere den.

Er all teknisk gjeld dårlig?

Nei. Noe gjeld er bevisst og klok. Å ta en snarvei for å rekke lanseringen i tide og vinne et marked kan være helt riktig, så lenge man vet at gjelden finnes og planlegger å betale den ned. Det farlige er den snikende gjelden som bygges opp utilsiktet og usynlig, uten at noen har tatt en beslutning om den.

Hvordan merker jeg som kunde at vi har teknisk gjeld?

Du ser det på tempoet. Enkle endringer som burde ta dager, tar plutselig uker. Feil man trodde var rettet, kommer tilbake. Utviklerne blir stadig mer forsiktige og sier at de må bygge om før de kan legge til noe nytt. Når «kan dere bare endre dette raskt» stadig oftere møtes med nøling, er gjelden ofte årsaken.

Kan man bli kvitt teknisk gjeld?

Den kan betales ned, men sjelden fjernes helt. Ved å sette av tid løpende til å forbedre og rydde i koden (altså betale avdrag på gjelden) holdes den på et håndterbart nivå. Poenget er ikke et gjeldfritt system, noe som er urealistisk, men å ikke la gjelden vokse ukontrollert til den lammer utviklingen.