Hvad er teknisk gæld?
Teknisk gæld er summen af genveje i kode og arkitektur der gør hver fremtidig ændring langsommere og dyrere. Som ved et lån betaler man renter: Jo længere den ligger, desto mere koster den. Noget gæld stiftes bevidst og rationelt for at nå markedet i tide mens snigende gæld er den farligste. Symptomerne viser sig som stadig trægere udvikling.
Teknisk gæld er et af de mest rammende begreber i systemudvikling, netop fordi sammenligningen holder hele vejen. Det forklarer hvorfor et system der engang var hurtigt at bygge videre på, pludselig bliver tungt og dyrt. Her er hvad det betyder og hvordan du genkender det.
Definitionen
Teknisk gæld er summen af alle genveje og kompromiser i et systems kode og arkitektur der gør hver fremtidig ændring langsommere og dyrere. Hver gang nogen vælger den hurtige løsning i stedet for den holdbare for at spare tid nu, bliver der lagt lidt mere gæld på bunken.
Ingen enkelt genvej er farlig. Problemet er at de hober sig op. Et system fyldt med små kompromiser ender som et system hvor intet kan røres uden at noget andet risikerer at gå i stykker. Gælden kan ikke ses i brugerfladen og mærkes ikke direkte af brugerne: Den bor i koden, usynlig indtil den begynder at bremse alt arbejde.
Den bedste forklaring på hvordan det fungerer, ligger i selve navnet.
Sammenligningen med et lån: afdrag og renter
Teknisk gæld opfører sig præcis som et økonomisk lån, og derfor er sammenligningen så brugbar.
En genvej giver dig fart nu, på samme måde som et lån giver dig penge nu. Men der følger renter med. Renten er alt det ekstra arbejde som hver fremtidig ændring kræver på grund af genvejen: Hver gang nogen skal arbejde uden om den hurtige løsning, betaler man lidt rente af gælden.
Betaler man aldrig af, vokser gælden, og renterne med den. Til sidst kan så meget af udviklingstiden gå med bare at håndtere gammel gæld at der knap er kræfter tilbage til noget nyt. At afdrage, altså løbende at afsætte tid til at rydde op i og forbedre koden, holder gælden i skak. Et system helt uden teknisk gæld er urealistisk; målet er at den ikke får lov at løbe løbsk.
Bevidst vs. snigende gæld
En vigtig nuance er at ikke al teknisk gæld er af det onde. Den kan deles i to slags, og de bør håndteres helt forskelligt.
| Slags | Karakter |
|---|---|
| Bevidst gæld | Et aktivt valg for at nå markedet i tide: kendt og planlagt |
| Snigende gæld | Opbygges utilsigtet og usynligt, uden beslutning: den farligste |
Bevidst gæld er ofte helt rationel. At tage en genvej for at nå at lancere til tiden og vinde et marked kan være en klog forretningsbeslutning så længe man ved at gælden findes og har tænkt sig at betale den af når presset letter. Det er et lån man optager med åbne øjne.
Snigende gæld er den farlige. Den opbygges utilsigtet, én sjusket løsning ad gangen, uden at nogen har truffet en beslutning eller overhovedet lagt mærke til den. Fordi ingen ser den, bliver den heller aldrig planlagt væk, og den kan nå at vokse sig stor før den bliver opdaget. Det er forskellen på et lån man har optaget bevidst, og en gæld man en dag vågner op og indser at man har pådraget sig.
Symptomerne du mærker
Du behøver ikke at læse kode for at ane at gælden vokser. Den afslører sig i hverdagen, især i tempoet.
Det tydeligste tegn er at enkle ændringer pludselig tager urimeligt lang tid. Noget der burde være en opgave på en dag, trækker ud i ugevis, og udviklerne siger at de skal bygge en del om før de kan tilføje det du bad om. Et andet symptom er at bugs vender tilbage: Fejl man troede var rettet, dukker op igen, ofte fordi den underliggende struktur er for skrøbelig.
Når “kan I ikke bare ændre det her hurtigt?” oftere og oftere bliver mødt med tøven i stedet for et ja, er teknisk gæld ofte den underliggende årsag. Det er ikke fordi teamet er blevet dårligere, men fordi systemet er blevet tungere at arbejde i.
At genkende disse symptomer tidligt gør at man kan afdrage i tide før gælden lammer udviklingen. Vil I have en neutral vurdering af hvor meget gæld der har hobet sig op i jeres system og hvad der er værd at gøre noget ved, kigger vi hos Weapp gerne på koden sammen med jer før den bliver en flaskehals.
Ofte stillede spørgsmål
Hvad er teknisk gæld, forklaret enkelt?
Det er alle de genveje og kompromiser i et systems kode og arkitektur der gør det sværere at ændre i fremtiden. Hver gang man vælger den hurtige løsning frem for den holdbare, opbygges der lidt gæld. Den kan ikke ses udadtil, men den gør at systemet bliver stadig trægere og dyrere at videreudvikle over tid.
Hvorfor sammenlignes det med et lån?
Fordi mekanikken er den samme. En genvej giver dig fart nu, præcis som et lån giver penge nu, men den skal betales tilbage med renter. Renten er alt det ekstra arbejde hver fremtidig ændring kræver på grund af genvejen. Betaler man aldrig af, vokser gælden indtil en stor del af arbejdet går med bare at håndtere den.
Er al teknisk gæld dårlig?
Nej. Noget gæld er bevidst og klog: At tage en genvej for at nå at lancere til tiden og vinde et marked kan være helt rigtigt så længe man ved at gælden findes og planlægger at betale den af. Det farlige er den snigende gæld der opbygges utilsigtet og usynligt uden at nogen har truffet en beslutning om den.
Hvordan mærker jeg som kunde at vi har teknisk gæld?
Du ser det i tempoet. Enkle ændringer der burde tage dage, tager pludselig uger. Fejl man troede var rettet, vender tilbage. Udviklerne bliver stadig mere forsigtige og siger at de skal bygge om før de kan tilføje noget nyt. Når 'kan I ikke lige ændre det her hurtigt' oftere og oftere bliver mødt med tøven, er gælden ofte årsagen.
Kan man slippe af med teknisk gæld?
Den kan betales af, men sjældent fjernes helt. Ved løbende at afsætte tid til at forbedre og rydde op i koden, altså afdrage på gælden, holdes den på et håndterbart niveau. Pointen er ikke et gældfrit system, hvilket er urealistisk, men at gælden ikke får lov at vokse ukontrolleret indtil den lammer udviklingen.