Sammen mot en enklere fremtid

Kompleksitet er den viktigste årsaken til at IT-prosjekter feiler. Prosjekter som feiler og dårlig programvare gjør våre kunder og brukere ulykkelige.

Hvorfor gjør vi IT-investeringer? Det handler om å redusere komplekse problemer til meningsfylte oppgaver som mennesker kan fullføre.

Jeg ønsker å fokusere på utvikling av programvare (løsninger, pakkeprodukter, osv) og hvilken verdi programvare har for våre brukere. Å bygge programvare er en av flere viktige funksjoner som vi gjør hos Steria, og det er tusenvis av andre som også bygger programvare for å løse utfordringer.

Undersøkelser har vist at vi ikke har hatt særlig forbedring i suksessraten i utviklingsprosjekter. Bransjen har ca. 30% suksess i prosjekter som starter opp, og slik har det vært siden 1996 i følge Standard Group (CHAOS Report). Hvorvidt dette er representativt for det norske markedet er ukjent, men egne erfaringer fra Norge tilsier at det er en betraktelig høyere andel prosjekter med suksess her i landet, mye takket være smidige teknikker og prosesser.

Programvarens lov

I henhold til David S. Platts 3 lover om programvare, har programvaren vi bygger i seg selv ingen verdi. Det har liten betydning hvor teknisk bra kildekoden til et program er, det er kun vår egen mor som bryr seg om slikt.

Platts 3 lover sier:

  1. Programvare har ingen verdi i seg selv. Den eneste verdien programvare har er gleden den gir til brukeren.
  2. Programvaren kan øke brukerens glede på en av to måter. Den kan hjelpe brukeren å fullføre en ønsket oppgave, eller den kan gi en god opplevelse. Eksempelvis hjelper Outlook med å lese og skrive epost, mens HALO på Xbox 360 gir deg en god opplevelse som er underholdende.
  3. Brukeren skal ikke tenke på programvaren. Det viktigste er innholdet og oppgaven, ikke programvaren i seg selv.

Målet med programvare bør alltid være å redusere komplekse problemer til enkle oppgaver. Enkle oppgaver som mennesker kan utføre, uten at det krever mye tankearbeid. Desto mindre en bruker må tenke, desto mer glad og produktiv vil han bli.

Tenke enkelt

Når vi har et komplekst problem vi ønsker å løse, hvilke mekanismer pleier vi å benytte for å løse dem? Når vi ser på programvaren som har blitt utviklet opp igjennom årene, er det ganske klart at vi ikke tenker på å gjøre ting enkelt.

Vår forståelse av komplekse problemer øker desto mer vi jobber med dem. Men vi har problemer med å komme opp med enkle løsninger. Altfor ofte lager vi kompliserte løsninger for komplekse problemer. Dette må vi forsøke å unngå, for det er hovedårsaken til at utviklingsprosjekter feiler.

Vi må sammen begynne å tenke enklere. Vi må sammen utforske hvordan vi kan redusere komplekse detaljer i et løsningsdesign, helt til vi sitter igjen med et design som er så enkelt som overhodet mulig og fortsatt gir verdi til brukerne.

Vårt mål bør være: Lage en enklest mulig arkitektur.

Det er selvsagt mange årsaker hvorfor noe som starter enkelt, fort blir komplisert. En viktig faktor er mengden av funksjonalitet i en løsning. Robert L. Glass  skriver i boka «Facts and Fallacies of Software Engineering» at 25% økt funksjonalitet øker kompleksiteten med 100%.

Neste gang du står ovenfor et problem som noen ønsker løst ved hjelp av programvare, start med å tenke over brukerne og hvordan du kan øke deres glede. Deretter reduserer kompleksiteten i løsningsdesignet til du oppnår det enkleste designet som er mulig som fortsatt oppnår målet: Gjøre brukerne glade!

(Se mitt innlegg om løsningsarkitektur på MSDN Live for mer detaljer om dette emnet)

4 kommentarer om “Sammen mot en enklere fremtid”

  1. Jeg er veldig enig, dette er et viktig tema. Vil poengtere at du snakker om to ulike ting her: (1) Kompleksitet i bruken av programvare, og (2) kompleksitet internt i programvaren. For begge områdene er det viktig å reusere kompleksiteten, men de henger ikke nødvendigvis sammen, og krever ulike praksiser.

    Svar
  2. Torbjørn: Det er veldig riktig det du sier at kompleksitet er flere ting, også mer enn bare de to du nevner. Det er viktig at vi alltid ser mulighetene til å gjøre ting enklere, fremfor å øke kompleksiteten. Infrastruktur er også et område hvor man fort og enkelt kan gjøre ting mer kompliserte enn nødvendig. I dag får vi veldig kraftige 64-bit maskiner som snart takler en terrabyte med RAM og en hel rekke med CPU-kjerner. Det vil være betraktelig enklere å bruke en stor boks for å kjøre database-server, fremfor å skalere utover på mindre kraftige maskiner, så lenge man er dekket av behovet til én enkelt maskin (noe man ofte er).

    Brukervennligheten i programvaren er sannsynligvis det område hvor vi kan få størst gevinst med minst arbeid. Vi jobber ofte med en relativt god lag-seperasjon mellom forretningslogikk og den visuelle presentasjonen av informasjon, men vi feiler ofte å utnytte denne muligheten til å endre på grensesnittet. Kan være mange årsaker til det, det er ofte veldig kostbart å gjøre opplæring av nye funksjoner i større organisasjoner – tenker man derimot at alle ansatte sparer 5 minutter hver dag og får mer positiv energi av et program som er enklere å bruke, vil nok det regnskapet fort gå opp. Takk for kommentar!

    Svar
  3. Bra artikkel. Å redusere funksjonaliteten i en leveranse kan redusere kompleksiteten mye.

    Når det gjelder «enklest mulig arkitektur» er det vel få som er uenige i det. Spørsmålene vi alle bør stille oss (kanskje på Sterias Arkitektskole) er «hva er enklest?» og «hva er vi villig til å ofre for å gjøre det enklere?»

    Svar
  4. Bra artikkel. Det enkle er ofte det beste. Når det gjelder kompleksistet i brukergrensesnittet er det viktig å se dette i sammenheng med arbeidsprosessene. Hvis arbeidsprosessene er kompliserte, er det lett for systemene også blir kompliserte. Derfor er det viktig å se på muligheter for forenkling av arbeidsprosesser i et større systemutviklingsprosjekt. Som du sier må komplekse problemer reduseres til enkle oppgaver.

    Når oppgavene ikke kan forenkles mer, kan noe av kompleksisteten flyttes til et annet ledd. Dvs hvis vi gjør operativsystemene litt smartere og it-systemene litt smartere blir det færre ting brukerne må huske på.

    Svar

Legg igjen en kommentar