Lav ikke software uden styrthjelm
En ting der tit mangler når man laver software er en god risikovurdering. Hvad er vil det sige? Hvad skal man bruge en risikovurdering til? En risikovurdering bruges som beslutningsgrundlag. Vi laver alle risikovurderinger hele tiden, men vi er sjældent bevidste om det, og vi er ofte rigtigt dårlige til at lave dem. Men hvad er en risikovurdering egentlig?
En risikovurdering kan beskrives på følgenden måde:
Hvad vil du lave? Hvad kan gå galt? Hvor stor er sandsynligheden for at det går galt? Hvad er konsekvensen ved at det går galt? Kan det løses hvis det er gået galt? Hvad er omkostningerne ved at løse det?
Lad os tage et eksempel.
Hvad vil vi lave? Vi vil stå på skateboard.
Hvad kan gå galt? Vi kan vælte.
Hvad er sandsynligheden for at det sker? Den er stor.
Hvad er konsekvensen hvis det går galt? Vi slår vores knæ og får en hudafskrabning.
Kan det løses? Ja, vi kan sætte et plaster på.
Hvad er omkostningen ved den løsning. Meget lille.
Bruger vi ovenstående kan vi se at det ikke er noget problem at stå på skateboard. Men faktisk er der mange der kun laver de to første trin, når de laver risikovurderinger. Det er derfor vi tit ikke er så gode til det.
Men der faktisk et problem med ovenstående, for jeg tog udgangspunkt i bare en mulig konsekvens. Der kan jo være mange andre. Så hvis vi i stedet prøver at tænke over hvad er den værst tænkelige konsekvens?
Hvad vil vi lave? Vi vil stå på skateboard.
Hvad kan gå galt? Vi kan vælte.
Hvad er sandsynligheden for at det sker? Den er stor.
Hvad er konsekvensen hvis det går galt? Vi slår vores hoved og får en hjerneblødning og dør.
Kan det løses? Nej.
Hvad er omkostningen ved den løsning. Uendelig stor.
Hvis vi bruger ovenstående risikoanalyse vil vi sige, at det er alt for farligt at stå på skateboard. Her kan vi se at det er vigtigt, hvad det er for kriterier vi vælger når vi laver risikoanalysen. Det er langt fra altid simpelt at gøre når man udvikler software, men det er ingen undskyldning for ikke at prøve, da man ellers har et usikkert grundlag at tage beslutninger på. Og som det er med så andre mange ting, gør øvelse mester.
Men vi er ikke færdig endnu, for vi kan faktisk bruge risikovurdering til mere. Vi kan bruge den at komme på løsninger og udvikle vores software. Hvordan det? Jo, i det andet eksempel kan vi se, at vi risikere at slå hovedet, og det er meget fatalt. Men hvis vi nu laver en ny funktionalitet kaldet en styrthjelm, ændre det så på risikovurderingen? Lad os prøve.
Hvad vil vi lave? Vi vil stå på skateboard.
Hvad kan gå galt? Vi kan vælte.
Hvad er sandsynligheden for at det sker? Den er stor.
Hvad er konsekvensen hvis det går galt? Vi slår vores hoved og får en hjerneblødning.
Kan det løses? Ja, vi kan bruge styrthjelm, og får en mindre hjernerystelse i stedet.
Hvad er omkostningen ved den løsning. Overkommelig.
Med den analogi kan vi udlede at man ikke skal udvikle software uden styrthjelm. Det er alt for dyrt at lade være.
Til slut et godt råd. Der findes masser af litteratur og eksempler på risikovurdering og analyse der ude. Gør det simpelt og lad være at lave store tunge dokumenter, men lave øvelsen når i laver større ændringer eller ny funktionalitet. Med tid vil man ofte opleve at man bare gør det.
“Med den analogi kan vi udlede at man ikke skal udvikle software uden styrthjelm. Det er alt for dyrt at lade være.”
Dit indlæg er et godt eksempel på hvorfor analogier som argumentation er noget bras. Dit argument for brug af styrthjelm til skateboard er validt og ganske fint. Argumentet for brug af “styrthjelm” i software ligner det første, hvorfor man vil være tilbøjelig til også at købe det.
Der er dog en række problemer med den type argumentation:
Er en software styrthjelm nødvendigvis billig fordi en ditto til skateboard er det?
Er omkostningene ved worst case scenariet lige alvorlige?