Lettvinte og kortsiktige løsninger kan være fristende når koden nærmer seg klar for produksjonssetting og det skrikes etter ny funksjonalitet. Men selv de mest disiplinerte kan bli sittende med dyr teknisk gjeld når arkitekturen modnes, integrasjoner kommer til, og man oppdager at man burde, skulle, kunne ha gjort ting litt annerledes helt fra start.
Dette er teknisk gjeld
Begrepet ble først introdusert av utvikleren Ward Cunningham på 1990-tallet. Med lånte penger kan du gjøre ting raskere, men du betaler renter helt til du har betalt ned lånet, forklarer Cunningham i en video.
Teknisk gjeld gjenspeiler kostnadene ved senere omarbeiding (refaktorering) av kode, som følger av å ta i bruk en enkel løsning nå, istedenfor en mer gjennomarbeidet og tidkrevende løsning.
Teknisk gjeld kan også beskrives som gapet mellom den ideelle koden, og koden du har produksjonsatt. Kode som er uferdig, unødvendig komplisert, mangler dokumentasjon eller har utdatert oppsett, kalles gjerne teknisk gjeld.
Jo mer teknisk gjeld man har, jo vanskeligere og dyrere blir systemet å forvalte og videreutvikle
Som med annen gjeld, kommer det gjerne renter på toppen. Systemet blir unødvendig komplisert, og kan bli både dyrt og vanskelig å forvalte og videreutvikle.
I en artikkel først publisert i Journal of Systems and Software, har forskere fra Oslo og Gøteborg vist at teknisk gjeld forårsaker overdreven sløsing med arbeidstid og hindrer utviklere i å gjøre en god jobb.
– Utviklere kaster i gjennomsnitt bort 23 prosent av tiden sin på grunn av teknisk gjeld, og blir ofte tvunget til å introdusere ny teknisk gjeld, skriver forskerne i artikkelen.
Kjenner du deg ikke igjen?
– Hvor mye tid som sløses varierer for utviklerne, men for teamet er tallet konsistent. Det betyr at det ofte er noen som tar en for laget, skriver PHD-student Leif Knudsen ved Edos i et nyhetsbrev om artikkelen.
Viktig å være autentisk som leder – slik gjør du det
Ekstra kodeanalyse og testing
Den tekniske gjelden tvinger utviklere til å gjennomføre oppgaver som ellers ville vært overflødige.
Tiden går med på ekstra testing, kildekode-analyse, og på refaktorering av koden, skriver forskerne. Men utviklerne brukte også ekstra tid på å finne workarounds og å lete etter dokumentasjon.
Teknisk gjeld fører til mer teknisk gjeld
I så mye som en fjerdedel av tilfellene med teknisk gjeld, ble utviklerne tvunget til å introdusere ny teknisk gjeld på grunn av tidspress.
Det skjer når ny kode må skrives som workaround rundt gammel kode, eller utvikleren innfører nye vedlikeholdsbehov i et forsøk på å fikse gammel kode.
Ikke overraskende er det programvarens alder som står for de største variasjonene. Utviklere som jobber med programvare som var mellom fem og ti år gammel, kastet bort rundt 15 prosent av tiden sin på teknisk gjeld. Utviklere som jobbet på programvare som var mer enn 20 år gammel, sløste bort over halvparten av tiden sin, hele 55,3 prosent på teknisk gjeld.
Utviklere mer klar over problemet enn ledere
«Ukjent» norsk programvare har millioner av brukere
Utviklere er mer oppmerksomme på tiden som kastet bort enn lederne, mener forskerne.
Selv om ingen av utviklerne i undersøkelsen loggførte egen tidsbruk på teknisk gjeld, ble de ikke overrasket da de ble konfrontert med tallene fra forskerne.
Lederne derimot var til dels overrasket over tidsbruken, og syntes det var vanskeligere å akseptere tidsbruken.
Både ledere og utviklere syntes det var nyttig å vite hvor mye tid som gikk med til å håndtere teknisk gjeld, men var lite villige til å innføre loggføringsrutiner.
Kostbart
Tidligere undersøkelser har vist at så mye som 69 prosent av IT-lederne mener teknisk gjeld står i veien for innovasjon.
Teknisk gjeld er en enorm kostnad for selskaper. I gjennomsnitt bruker selskaper cirka en tredjedel av IT-budsjettet på teknisk gjeld, for større selskaper er det opptil 41 prosent.
En oppdatert backlogg, og aktiv bruk av statisk kodeanalyse er fortsatt de beste verktøyene for å holde styr på teknisk gjeld.
Men det er ingen god idé å gå inn og refaktorere all kompleks kode. Adam Tornhill anbefaler å prioritere koden som endres ofte, og la det andre ligge.
IBM sluker tysk programvare for milliardbeløp