Mot norrmalt!

Mot norrmalt!

KRONIKK: De fleste utviklingsprosjekter sprenger sine rammer. Men kanskje er det slik det skal være.

Vi tenker på utviklingsprosjekter som om de var byggeprosjekter. Vi vet nøyaktig hva som skal bygges, hvilke materialer som skal anvendes og hvordan det skal gjøres. Vi har gjort det mange ganger før. For byggeprosjekter pleier planene som oftest å holde med mindre noe uventet dukker opp. Men parallellen med systemutvikling halter.

Systemutvikling er ikke en teknisk byggeprosess, det dreier seg om å samle inn og systematisere kunnskaper og synspunkter. Det dreier seg om læring. Designerne strever med å forstå hvilke behov brukere og ledere har. Disse har noen ideer, men de forandrer seg hele tiden. Designerne forsøker å "fryse" behovene: "Heretter tas det ikke imot nye behov, nå skal vi bygge!" – men slik blir det aldri. Relevante nye behov må man ta hensyn til under utviklingen – ellers går det helt feil.

Systemutvikling er en reise, ikke et bestemmelsessted. Nick Jones hos Gartner sier det slik: "Å utvikle nye systemer ligner mer på en oppdagelsesreise i et nytt kontinent enn å kjøre riksveien for å besøke bestemor."

Datasystemer er nyskapende og komplekse. De lar seg ikke teste fullt ut og deres atferd er vanskelig å forutse. Selv vellagede datasystemer kjører på toppen av operativsystemer og mellomvare som er ferske og har mange feil. Selv det underliggende utstyr kan være en feilkilde. Vi vet, vi har visst lenge, at bugs er en integrert del av programvare. Vi kan bli kvitt mange, men ikke alle. Og blir vi kvitt noen, kommer det nye til.

Sosial prosess

Første versjon av et system blir levert. Forsinket, men dog. Det dekker noe sånt som 70 prosent av behovene og inneholder 30 prosent kode som aldri vil bli brukt. Det som ikke er dekket, skal komme i en versjon 2. Men det å utvikle versjon 2 vil møte de samme utfordringer som versjon 1.

Og sist men ikke minst: Systemutvikling er en sosial prosess like mye som en teknisk prosess. I et team av utviklere finnes det alltid ulike mål og oppfatninger. Prestisjekamper. Samspillet med brukerne, som skal bedømme resultatet, kan være godt eller dårlig. Når brukerne sier at det nye systemet er helt håpløst, forteller de ikke sannheten, men sin oppfatning av både prosessen og resultatet. Og sin vilje eller uvilje til å ta imot forandringer.

Hvis alt dette er sant, lurer vi oss (og våre oppdragsgivere) gang på gang når vi forventer et feilfritt datasystem levert som lovet og som løser de problemer det var ment å løse. Det vil ikke skje.

I løpet av det neste tiåret vil problemene øke, ikke forsvinne. For det første er mengden av programvare i verden stiger eksponensielt. Alle apparater inneholder programvare i dag – kameraer, biler, kjøleskap, for ikke å snakke om flymaskiner. Et produkt er et produkt, tenker de fleste. Folk forstår ikke at bugs i et kamera er helt normalt. Programmene i kameraet er utviklet på samme måte som annen programvare. Vi må bare be pent om at en bug i en flymotor ikke skal bringe oss opp i skikkelige problemer.

Aldri perfekt

Programvare vil bli stadig vanskeligere å teste fordi de tilhører stadig lengre verdikjeder. Et program snakker med et annet program eller et tredje program, og det skaper enorm kompleksitet. Dynamiske utviklingsverktøy, som Ruby og Python, dukker opp og gjør vanlig testing enda mindre anvendelig.

Det vi snakker om her er en sosial, ikke en teknisk utfordring. Vi kommer ikke til å lage systemer uten bugs, som oppfyller brukernes alle krav. Det er umulig. Men vi skal ikke stoppe å lage systemer. Det ligger i menneskets natur å gå løs på stadig mer krevende problemer. Og selv om systemet har kostet tre ganger så mye som planlagt, og bare dekker 70 prosent av de samlede behovene, er de fantastisk nyttige.

Hvor bringer denne tankegangen oss? Vi må endre folks og ikke minst politikernes holdninger til hva programvare er. Programvare er aldri 100 prosent perfekt, den inneholder feil, kanskje farlige feil. Programvare er aldri sikker. Ting tar tid. En forferdelig dag kan det hende at en programfeil vil ta hundrevis av liv. Men vi vil fortsette å skrive programmer.

P.S. Takk til Nick Jones for inspirasjonen.

hidas@online.no