Jeg har lenge slitt med å formidle konsekvensen av å ikke prioritere teknisk vedlikehold.
Hvordan kan jeg forklare mekanismene bak forråtnelse av IT-systemer?
Hva er konsekvensene av å forsømme teknisk vedlikehold i jakten på ny funksjonalitet— for pengebruken, bruksverdien, forretningsverdien og for menneskene som jobber med de?
Den eller de som prioriterer hva teamet skal bruke tid på, må forstå konsekvensen av disse prioriteringene på lang sikt.
Hvis utviklerne ikke lykkes med å formidle hverken nåværende teknisk status eller konsekvensene av ulike valg, vil grunnlaget det prioriteres etter være mangelfullt.
«Teknisk gjeld er ikke enten-eller, men et spekter.»
Bare viktig akkurat nå
En type ordveksling jeg har vært borti mange ganger går slik:
Utvikler: “Hvis vi gjør dette og ikke gjør det andre vil vi bygge teknisk gjeld.”
Produkteier/prosjektleder/teamleder o.l: “Takk for informasjonen, det kan vi leve med.”
Utvikler: “…”
Diskusjonen ruller videre om hva som er viktigst akkurat nå, og fordi teknisk gjeld er litt vanskelig å forklare blir den for ofte nedprioritert.
IT-systemer som ikke blir vedlikeholdt godt nok råtner. De råtner raskere enn mange tror, og forråtnelsen kan få eksponensiell fart dersom man dropper vedlikehold samtidig som man pøser på med endringer og utvidelser.
Teknisk gjeld er ikke enten-eller, men et spekter.
Det kan være alt fra “Dette er ikke best-practice, men en grei løsning allikevel” til “Nå er det sekunder fra at dette korthuset faller sammen”.
Advarer mot småfeil: - Ikke ta lett på code reviews!
Det finnes mange måter å synliggjøre teknisk gjeld på, for eksempel ved å måle antall feil, antall utdaterte avhengigheter, utviklernes trygghet i at hver endring ikke fører til feil, antall sikkerhetssårbarheter og så videre. Det kan være lurt å ta i bruk disse.
Jeg er samtidig svak for å tale i bilder og analogier. Her er en historie om en husholdning, for å sammenligne teknisk gjeld med noe vi alle kjenner: husarbeid.
Det gradvise rotet kommer snikende
Endre og Ane flytter inn i et nytt hus. De har et helt normalt hushold. De rydder etter middag, vasker ofte, skifter på sengene, kjøper nye ting og kvitter seg med det ikke bruker lenger.
Huset er fint, ryddig og nytt, og det blir veldig synlig hvis noe er skittent eller ligger på feil sted.
Dette gjør at det blir helt naturlig å rydde og vaske etter seg. Ettersom tiden går og ting falmer, klarer ikke ryddingen å holde tritt med tempoet rotet genereres i. Fordi det er mer rotete blir dørstokkmila for å vaske høyere fordi det er så mye å rydde bort for å komme til.
Det er ikke lenger så fint hjemme hos Endre og Ane.
Pynte på sannheten
De setter seg ned og diskuterer problemet. De kan jo ikke kaste noe. Tingene kostet mye penger, og de kan bli nyttige i fremtiden.
De bestemmer seg for å kjøpe noen pyntegjenstander og planter for å gjøre rommene litt finere.
Det blir ikke lettere å vaske med flere ting — tvert i mot — og husvaskfrekvensen går stadig nedover.
De har ikke blitt noe flinkere til rydde av å kjøpe pynt, og rotet hoper seg enda mer opp. Det blir vanskelig å skille pyntegjenstandene fra rotet, de mister sin funksjon og gjør problemet verre.
Slik vet du om koden din er legacy
Ettersom dette er en prosess over lang tid, blir Endre og Ane gradvis mer vant til rot og skitne rom. De reflekterer ikke over hvor stor avstand det har blitt mellom da de flyttet inn i huset og de rommene de nå lever i.
De merker likevel at det begynner å bli upraktisk å gjøre daglige gjøremål og bestemmer seg for å ta en sjau. De legger mesteparten av rotet de ikke trenger daglig inn på gjesterommet. Dette gjør ting bedre — en stund. Helt til det er fullt der og de må gjøre det samme med kontoret. Snart er to av rommene fylt til randen med rot, og i praksis ubrukelige. De fortsetter i samme spor.
Kjøper nytt istedenfor å fikse
De har mistet oversikten. De finner ikke ostehøvelen, så de kjøper en ny. Dette gjentar seg helt til det ligger åtte ostehøvler rundt omkring i huset på ufremkommelige steder.
Det begynner å bli ubehagelig å ha gjester, de skammer seg. Det er vondt å kjenne på disse følelsene og de begynner å rasjonalisere. De har jo ikke så mye tid til å rydde som alle andre, det er lurt å ikke kaste ting på grunn av miljøet, og var det ikke litt “in” med “shabby chic”?
Derfor kutter Sparebank 1 støtte for Internet Explorer
Tiden går og det hoper seg opp med ting over alt. Husvasken er redusert til de få flatene som er synlige, og ryddingen består av å bane vei for de viktigste gjøremålene. Det er begrenset hva som kan gjøres, og det som er mulig er mye mer tidkrevende enn før. Rommene har tatt skade av manglende vedlikehold, og huset stinker.
Hvis de skal være helt ærlige med seg selv så er det veldig upraktisk å leve slik. Samtidig har oppgaven med å rydde ordentlig og få vasket og satt i stand hele huset vokst seg så stor at den nå er uoverkommelig.
Går i forsvarsposisjon
De få gangene de får besøk av nærmeste familie, blir det fort anspent. De går rett i forsvarsposisjon av spørsmål om det ikke er på tide å kaste noe. Dette er jo ting de trenger eller kan få behov for i fremtiden, svarer de.
Det oppleves anklagende. Spørsmålene rører det aller såreste punktet, og følelsen av mislykkethet ligger og lurer i alle samtaler som kan dreie inn på hvordan det ser ut og fungerer i hjemmet deres.
For å holde unna de vonde følelsene avfeier de andres forsøk på å hjelpe. Dette gjør noe med relasjonene de har til andre.
NAV åpner en av Norges eldste kodebaser
Det går så langt at huset på et tidspunkt ikke lenger fungerer som bosted. Det er ikke lenger “rotete”. Det er tunneler gjennom hauger av skrot, råtedannelse, muggsopp, fare for å få rothaugene veltende over seg uten mulighet til å komme seg løs, gnagere har inntatt boligen, mesteparten av rommene er ugjennomtrengelige og det er helseskadelig å oppholde seg der inne.
De kan da enten forlate huset og kjøpe et annet, eller gjøre den enorme jobben med å få huset beboelig igjen. Begge alternativene er svært kostbare. Ingen av alternativene adresserer det underliggende problemet. Vi kan bare håpe at de ikke går i samme fella igjen.
Samme feilene i softwareutvikling
Koblingene til softwareutvikling er mange.
Manglende rydding i både kode og funksjonalitet gir rotete og til slutt uhåndterbar kode.
Ny funksjonalitet vil i verste fall bare legges på “siden” i stedet for å røre spaghettikoden, selv om den intuitivt hører til i midten.
Dette gjør at den blir vanskeligere å finne neste gang. Ettersom koden blir mer og mer uhåndterbar blir det til slutt i praksis umulig å forstå hvilke effekter en ny endring gjør.
Slik koda NAV ny dagpenge-løsning på tre dager
Da begynner man ofte å duplisere i stedet for å gjenbruke og tilpasse — og vipps — så har du åtte kodeseksjoner rundt omkring som gjør nesten det samme.
Når du får en feilsituasjon tar det dagesvis å forstå hvor i koden det skjer — og ukesvis å finne en feilfiks som ikke brekker noe annet. Planlegging blir et mareritt. Hvordan i alle dager skal man klare å gjette hvor lang tid oppgaver tar når man ikke aner hva man finner der inne?
Du vasser rundt i skrot og bruker enormt mye krefter på å utføre de minste oppgaver.
«Likevel skjer dette om og om igjen i IT-bransjen — de lages, forsømmes, råtner for raskt og må skrives om eller skrotes.»
Følelsesmessig kodereise
Når det er umulig å forutsi effekter av kodeendringer, blir det etter hvert uoverkommelig å oppgradere avhengigheter.
Da er du prisgitt gamle avhengigheter og de sikkerhetssårbarhetene og feilene som avdekkes der. Der Endre og Ane slutter å vaske — slutter utviklerne å oppgradere avhengigheter.
Den følelsesmessige reisen til Endre, Ane og de rundt dem er også relaterbar. Yrkesstoltheten får seg en knekk. Noen blir vant til den lave kvaliteten i systemet og uvaner dyrkes.
Arbeidet preges oftere av fortvilelse, frustrasjon, frykt og usikkerhet. Dette tærer på relasjonene. Utviklere blir tvunget til å velge mellom frustrasjon, resignasjon, fornektelse eller å finne noe annet å jobbe med.
Sbanken har prøvd å bli kvitt jQuery i fire år
Det er åpenbart at problemet til Endre og Ane er manglende kontinuerlig vedlikehold. De samme mekanismene er i spill med et IT-system.
Likevel skjer dette om og om igjen i IT-bransjen — de lages, forsømmes, råtner for raskt og må skrives om eller skrotes. Det er vondt og vanskelig å bo slik som Endre og Ane gjør. På samme måte er det vondt og vanskelig å jobbe slik med IT-systemene våre.
Vi må bli bedre til å snakke sammen om konsekvensene av teknisk forsømmelse over tid, og det er et samarbeidsprosjekt det er viktig å lykkes med.
Vi vet at kontinuerlig vedlikehold koster penger kontinuerlig, men vet alle hva det koster å la det være?