Per Otto Bergum Christensen, Objectdesign 27 August, Smidig

Teknisk gjeld - hvor mye er forsvarlig?
Per Otto Bergum Christensen, Objectdesign
27 August, Smidig fagdag i SPK
Om meg
Per Otto Bergum Christensen
Siv.ing, Datateknikk, NTNU
Senior konsulent, Objectdesign
Tre siste prosjekter:
Statens Pensjonskasse, JEE Arkitekt
Statens Vegvesen, JEE Arkitekt/ScrumMaster
Aetat, JEE Arkitekt/Teamleder
Objectdesign
Hva er
Teknisk gjeld?
Objectdesign
Hva er teknisk gjeld?
Metafor etablert av Ward Cunningham i 1992
Ward Cunningham sammenligner det å ta “snarveier” ved
utvikling som det å ta opp lån i banken
Opptak av teknisk gjeld gir raskere utviklingstid på kort sikt,
men krever renter i form av lavere framtidig effektivitet
Objectdesign
Hvordan etableres Teknisk gjeld?
Valg av løsninger som gir merkostnad på medium/lang sikt
Manglende fokus på design av løsning
Utsatt testing, kompetansedeling, dokumentasjonsarbeid
Kode som ikke følger retningslinjene til organisasjonen
Fokus på produksjon som langt overgår fokus på innovasjon
Og så videre.. .
Objectdesign
Teknisk gjeld kategorisert
Uforsiktig Forsiktig
“Vi har ikke tid til design”
Bevisst
“Vi må levere nå
og leve med
konsekvensene”
Ubevisst
“Hva er lagdeling?”
“Nå vet vi hvordan vi
skulle gjort det”
http://www.martinfowler.com/bliki/TechnicalDebtQuadrant.html
Objectdesign
Fordel ved teknisk gjeld
Fordel ved Teknisk gjeld
“Time to market”
Leveranser som ikke tærer for hardt på startkapitalen
Rask tilbakemelding fra brukere på løsning og konsept
Verifikasjon av ny teknologi, arkitektur, design, etc
Objectdesign
Ulempe ved teknisk gjeld
Ulempe ved teknisk gjeld
Gjeldsrenter spiser av budsjettet for ny funksjonalitet
Gjeldsrenter kan øke kost på feilretting, overlevering & drift
100%
75%
50%
25%
0%
Release 1
Release 2
Renter av teknisk gjeld
Release 3
Release 4
Release 5
Tilgjengelig for ny funksjonalitet
Objectdesign
Hvor mye
teknisk gjeld er forsvarlig?
Objectdesign
Eksempel #1
“store lån”
Objectdesign
Oppgave for en Leverandør
Lag en applikasjon med knapp deadline
Applikasjonen skal støtte en mengde produkter med
tilhørende beregninger, samt lagring av produktporteføljen
Budsjett er låst til 1000t
Objectdesign
Utfordring: max 1000t
150t
350t
Graftegning
Skjermbilder
Beregnings
motor
400t
500t
Database
Objectdesign
Løsning
500t
Database
“Sterkt forenklet design”
Database
100t
Objectdesign
Resultat
Løsningen ble levert “On Time, on Budget”
Løsningen må omskrives for å støtte standard
databasefunksjonalitet
Teknisk gjeld = 50% av initielt budsjett
Renter: Databasespørringer koster 10x av en standard
implementasjon og må lages som batch-applikasjoner
Objectdesign
Eksempel #2
“et potensielt lite lån, av mange.. .”
Objectdesign
Vanlig utfordring for et Scrum team
Modul A
“Good Stuff”
Modul B
Uplanlagt oppgave: Modul B trenger
“Good stuff” fra modul A, men en
regel sier at B ikke kan avhenge av A
Objectdesign
Løsningsforslag I
Modul B
Modul A
30t
“Good Stuff”
Trekk ut
“Good stuff” og la A og
B avhenge av denne
Objectdesign
Løsningsforslag II
Modul A
“Good Stuff”
2min
Modul B
Bryt regelen om at Modul B
ikke kan avhenge Modul A og
sett opp en avhengighet likevel
Objectdesign
Løsningsforslag III
Modul A
“Good Stuff”
2min
Modul B
“Good Stuff”
Kopier
“Good stuff” fra A til B
Objectdesign
Resultat av løsningsforslagene
I. 30 timer uplanlagt vil “ødelegge” iterasjonen for teamet
Teknisk gjeld = 0t
II. En feil avhengighet vil kreve ekstra arbeid framover
Teknisk gjeld = 30t + Opprydning av “kompenserende løsninger”
Renter = Ekstraarbeid med kompenserende løsninger for feil avhengighet
III. En kopi vil kreve ekstra arbeid framover
Teknisk gjeld = 30t + Fjerning av kopi
Renter = Dobbeltarbeid knyttet til feil og endringer
Objectdesign
Det er ikke hvor
men
mye,
hvordan som er viktig.
Objectdesign
Regel nr 1: Ikke ta opp små lån
Store enkeltlån er bedre enn mange små
Totalt rente på små lån er langt høyere enn på store lån
Små lån er ofte ikke forankret hos kunden
Små lån bør nedbetales raskt, f.eks påfølgende iterasjon
Objectdesign
Regel nr 2: Vær forsiktig
Uforsiktig Forsiktig
Ikke alt som kan tenkes å gi
raskere utviklingshastighet
er smart
Konsekvensen av en snarvei
bør være kjent før den
velges
Objectdesign
Regel nr 3: Vær metodisk
Etabler brukerhistorier på produktkøen for
nedbetaling av bevisst teknisk gjeld
Bevisst
Ubevisst
Utnytt retrospektiver for å identifisere
teknisk gjeld som har blitt etablert ubevisst
Objectdesign
Regel nr 4: Vær åpen
Teknisk gjeld vil tynge de som kommer “etterpå”
100%
75%
50%
25%
0%
Release 5
Release 6
Release 7
Renter av teknisk gjeld
Release 8
Release 9
Tilgjengelig for ny funksjonalitet
Release 10
Objectdesign
Takk for meg!
Objectdesign