Forskning på smidige prosjekter

As my previous Norwegian language article turned out to be one of the all time top hit articles in my blog, I will continue to write a few articles in Norwegian. This one is on an idea on how to do reseach on the success of agile projects. Next week, I will return to another popular topic: Testing.

Under paneldebatten på Geilo-seminaret til Dataforeningen, satt Magne Jørgensen meg, Lars Arne Skår og Niklas Bjørnerstedt litt til veggs med et ganske enkelt spørsmål: Hvordan kan vi vite om smidige metoder virker? Perspektivet til Magne som forsker på utviklingsprosjekter fikk meg til å tenke på spørsmålet, men før jeg fikk kommet med et forslag til svar. Derfor skriver jeg det her i stedet.

Å forske på et spørsmål som “fungerer smidige metoder” er veldig vanskelig. Mitt håp er at noen i stedet vil ta et skritt tilbake og se om man kan få svart på det mer interessant spørsmålet: Er det en sammenheng mellom hyppig feedback og lønnsomme prosjekter?

Hvordan forske på smidige metoder?

Problemet når en forsker spør “fungerer smidige metoder” er at det tvinger oss til å definere “smidige metoder” og “fungerer” på en måte som kan måles. Og det er også fordelen med spørsmålet.

Mitt forslag er at vi omdefinerer spørsmålet til “er smidige prosjekter vellykkede?” Hva betyr dette, da? Hva er “et smidig prosjekt” og hva er “et vellykket prosjekt”?

Er et prosjekt som bruker test-driven development, men ikke leverer noe oftere enn hvert år et smidig prosjekt? Hva med et prosjekt som følger en tradisjonell Krav -> Analyse -> Design -> Utvikling -> Test innfallsvinkel, men som gjør dette hver måned?

For meg er den definerende karakteristikken på et smidig prosjekt hyppigheten på iterasjoner. Iterasjoner kan defineres på fire måter: (1) Et planleggingsvindu, (2) tiden mellom hver gang man setter noe i drift i et produksjonsnært miljø, (3) tiden mellom hver gang man viser fram fremdrift til produkteier eller (4) tiden mellom hver gang man setter i drift noe som sluttkundene vil benytte. Jeg vet ikke hvilken av disse syklusene som er viktigst, men jeg mistenker at de blir mer verdifulle fra 1 til 4. Et studie som bryter ned prosjekter i hvor mange ganger per år de hadde en iterasjon for hver av de fire betydningene vil være veldig interessant for IT-bransjen.

Og hva er et vellykket prosjekt? Er et prosjekt som holder budsjett, men som ikke er verdifullt vellykket (tenk et prosjekt startet etter år 2000 for å effektivisere produksjon av videokassetter)? Hva med et prosjekt som går over budsjett, men som kundene river av hyllene i begeistring (tenk facebook)? Det er åpenbart at å møte “tid, kost og kvalitet” (aaaargh!) ikke er målestokken på suksess. Målestokken må være om prosjektet er lønnsomt! Eller som vi gjerne sier: Return-on-Investment (ROI).

Å måle lønnsomhet kan være en vrien affære. Det er som regel overkommelig å finne ut av utgiftene, men det er vanskeligere å danne et realistisk bilde av fordelene. De fleste IT-prosjekter er begrunnet i en eller annen form for effektivisering, og ofte ikke målbar sådan. For å gjøre vondt verre, er det ofte politisk nødvendig å overdrive gevinsten av prosjekter.

Jeg har ingen perfekt løsning på dette spørsmålet, men én mulig innfallsvinkel ville være å måle utviklingen av selskapets markedsverdi relativt til andre selskaper. Noen andre har helt sikkert en bedre idé. Å måle markedsverdi er enkelt, men det er mange forstyrrende elementer, så man må involvere upraktisk mange selskaper for å få et optimalt resultat. Det utelukker også den store andelen IT-prosjekter som kjøres av det offentlige.

En utfordring og invitasjon til forskere

Spørsmålet “fungerer smidige metoder” er et som har mye interesse, og som forskningen burde ta tak i. En mulig metodikk for å svare på dette er å forske på spørsmålet “finnes det en sammenheng mellom hyppige iterasjoner (i en av fire forskjellige betydninger) og økonomisk vellykkethet?” Dette er et spørsmål jeg selv er veldig interessert i svar på, men jeg har ikke ressursene til en forsker. Men jeg bidrar gjerne til å komme nærmere et svar, dersom noen kan lede veien.

Copyright © 2008 Johannes Brodwall. All Rights Reserved.

About Johannes Brodwall

Johannes is Principal Software Engineer in SopraSteria. In his spare time he likes to coach teams and developers on better coding, collaboration, planning and product understanding.
This entry was posted in Norsk, Software Development. Bookmark the permalink.
  • Magne Jørgensen

    Forkortet og repostet av Johannes etter tillatelse fra Magne Jørgensen

    Du er inne på mye jeg også synes er helt vesentlige i dine tanker rundt hvordan vet vi at … Og hyggelig å få respons på kritikk. Synes generelt sett vi kritiserer hverandre for lite – tar gjerne imot kritikk på mine synspunkter/studier/resultater etc ;-)

    Ved å redusere til “iterasjoner” og “suksess” i ROI-termer er du/vi kanskje noe nærmere å kunne evaluere “agile” – men bare noe. Jeg har selv (etter en del studier på lignende tema – som om verktøy xxx er bedre enn verktøy yyy i firma zzz) mistet troen på at slike studier er særlig nyttige. Selv ikke med den helt avgjørende overgangen fra “er x bedre enn y” til “når er x bedre enn y” synes slike studier å være særlig verdifulle. Noe av problemene skyldes definisjonsproblemer – a la de du er inne på, men det viktigste er at man sjelden har sammenligninger av interesse der noe er ALLTID bedre enn noe annet, og det hjelper en organisasjon lite at det f eks i GJENNOMSNITT har vært best i den studerte konteksten.

    […] Ditt fokus på hyppige iterasjoner bør – etter min mening – også sees i et problemløsningsperspektiv, dvs hva er den optimale feedback-sekvens for en viss type feedback gitt et eget kompetansenivå og type problem. At man lenge har hatt for lite feedback innen systemutvikling innen mange metoder, vil kanskje si at hyppigere SOM OFTEST vil forbedre nytten/effektiviteten/… er selvsagt langt mindre
    verdifull kunnskap enn å vite mer om hvilken type feedback, når og hvor ofte et visst nivå med feedback er gunstig.

  • Johannes Brodwall

    Hei, Magne

    Jeg har merket selv at det er veldig lett å falle i felle med å forsøke å avvise kritikk (“deflect”) i stedet for å svare på den. Jeg forsøker selv å ta meg i nakkeskinnet mer her.

    Forstår jeg deg riktig når du sier at et studie for å finne ut av effekten av smidige metoder (eller feedback) burde hatt en dimensjon til? Slik at spørsmålet blir “innen hvilke problemtype er hvilken iterasjonslengde korrelert med vellykkede prosjekter?”

    Jeg skjønner poenget ditt med begge spørsmålene som du spurte på Geilo til å være at noen problemer går det ikke an å ha meningsfull fremdrift innenfor en tidsperiode som er for kort. Er det riktig? For å bruke en utslitt metafor: Det er ikke meningsfullt å ha iterasjonslengde på under 9 måneder på leveranse av spedbarn.

    Min erfaring er at de fleste oppgavene innen utvikling kan og bør stykkes opp i oppgaver på under et dagsverk. Når jeg ikke gjør det selv, produserer jeg dårligere resultater (og jeg finner alltid i etterkant at det var en måte jeg kunne stykket det opp bedre). Og det er en ganske stor gruppe med selv-erklærte “dyktige” utviklere som ikke klarer å stabilisere koden sin i løpet av en dag.

    Kanskje et annet område som kunne være verdt å få bedre empiri på.

    Som du påpeker er det motsetning mellom feedbackfrekvens og størrelse på chunks. Jeg tror den viktigste faktoren her ikke er problemtype, men prosjektstørrelse. Men smidige prosjekter oppfordrer typisk til mindre prosjekter. Jeg tror dette både er for å underbygge hyppig feedback, men også fordi det er en vanlig oppfatning at store prosjekter er mindre vellykket. Som igjen går tilbake til det du sier om planer som er vanskelige å sammenstille.

    Et spørsmål til sist: Jeg forstår deg til å si at det er bedre å forske på “NÅR fungerer X bedre enn Y”, heller enn “FUNGERER X bedre enn Y”. Det kan jeg si meg enig i. Men dette endrer ikke problemet du påpeker med at vi ikke klarer å definere “BEDRE”, ikke sant?

  • Magne Jørgensen

    De to kanskje viktigste argumentene for å bygge valg av metode på bedre evidens er:
    1) At man i mindre grad tar utgangspunkt over-genereliserer fra sin egen erfaring og problemkontekst.
    2) At man i mindre grad utsettes for teoriladet observasjon (at alt passer inn i ens egen modell av hvordan verden er skrudd sammen)

    De fleste er enige i det, men vi går vel alle uunngåelig den fellen likevel. Noe jeg tror også “de smidige” gjør.

    Så er det problemet om å finne ut når en metode er bedre – som i stor grad er uløst. Noe er iboende (f eks av vi ikke klarere å studiere vitenskapelig noe vi ikke klarere å definere tilstrekkelig presist), men noe tror jeg skyldes at mye av forskningen går fram på feil måte og at vi må innse at noe kunnskap er svært lokal – dvs at vi kan finne ut noe innen en avgjrenset kontekst (et firma), men i mye større grad bør avstå fra å generalisere. Så håpløst er det ikke – men vanskelig. Jeg tror f eks at det kan finnes lokale, meningsfulle, nyttige målinger av kvalitets og produktivitets-relaterte egenskaper ved programvare.

    mvh Magne (litt stresset på tid, men dersom du ønsker å legge noe av diskusjonen vår/mine kommentarer inn på bloggen – gjerne en forkortet versjon, må du bare gjøre det)

  • http://brodwall.com/johannes/ Johannes Brodwall

    Hei, Magne

    Ettersom “vi smidige” ofte er veldig dypt nede i enkeltprosjekter er det definitivt en kjempefare for å overgeneralisere.

    Det praktiske motstykket til det du sier er at vi observerer “dette ser ut til å fungere for oss, jeg vet ikke om det vil fungere for dere”. Jeg bestreber meg veldig på å presisere på at jeg har veldig få datapunkter, men det er lett å la seg rive med.

    Takk for en spennende diskusjon.

  • Magne Jørgensen

    Forkortet og repostet av Johannes etter tillatelse fra Magne Jørgensen

    Du er inne på mye jeg også synes er helt vesentlige i dine tanker rundt hvordan vet vi at … Og hyggelig å få respons på kritikk. Synes generelt sett vi kritiserer hverandre for lite – tar gjerne imot kritikk på mine synspunkter/studier/resultater etc ;-)

    Ved å redusere til “iterasjoner” og “suksess” i ROI-termer er du/vi kanskje noe nærmere å kunne evaluere “agile” – men bare noe. Jeg har selv (etter en del studier på lignende tema – som om verktøy xxx er bedre enn verktøy yyy i firma zzz) mistet troen på at slike studier er særlig nyttige. Selv ikke med den helt avgjørende overgangen fra “er x bedre enn y” til “når er x bedre enn y” synes slike studier å være særlig verdifulle. Noe av problemene skyldes definisjonsproblemer – a la de du er inne på, men det viktigste er at man sjelden har sammenligninger av interesse der noe er ALLTID bedre enn noe annet, og det hjelper en organisasjon lite at det f eks i GJENNOMSNITT har vært best i den studerte konteksten.

    […] Ditt fokus på hyppige iterasjoner bør – etter min mening – også sees i et problemløsningsperspektiv, dvs hva er den optimale feedback-sekvens for en viss type feedback gitt et eget kompetansenivå og type problem. At man lenge har hatt for lite feedback innen systemutvikling innen mange metoder, vil kanskje si at hyppigere SOM OFTEST vil forbedre nytten/effektiviteten/… er selvsagt langt mindre
    verdifull kunnskap enn å vite mer om hvilken type feedback, når og hvor ofte et visst nivå med feedback er gunstig.

  • Johannes Brodwall

    Hei, Magne

    Jeg har merket selv at det er veldig lett å falle i felle med å forsøke å avvise kritikk (“deflect”) i stedet for å svare på den. Jeg forsøker selv å ta meg i nakkeskinnet mer her.

    Forstår jeg deg riktig når du sier at et studie for å finne ut av effekten av smidige metoder (eller feedback) burde hatt en dimensjon til? Slik at spørsmålet blir “innen hvilke problemtype er hvilken iterasjonslengde korrelert med vellykkede prosjekter?”

    Jeg skjønner poenget ditt med begge spørsmålene som du spurte på Geilo til å være at noen problemer går det ikke an å ha meningsfull fremdrift innenfor en tidsperiode som er for kort. Er det riktig? For å bruke en utslitt metafor: Det er ikke meningsfullt å ha iterasjonslengde på under 9 måneder på leveranse av spedbarn.

    Min erfaring er at de fleste oppgavene innen utvikling kan og bør stykkes opp i oppgaver på under et dagsverk. Når jeg ikke gjør det selv, produserer jeg dårligere resultater (og jeg finner alltid i etterkant at det var en måte jeg kunne stykket det opp bedre). Og det er en ganske stor gruppe med selv-erklærte “dyktige” utviklere som ikke klarer å stabilisere koden sin i løpet av en dag.

    Kanskje et annet område som kunne være verdt å få bedre empiri på.

    Som du påpeker er det motsetning mellom feedbackfrekvens og størrelse på chunks. Jeg tror den viktigste faktoren her ikke er problemtype, men prosjektstørrelse. Men smidige prosjekter oppfordrer typisk til mindre prosjekter. Jeg tror dette både er for å underbygge hyppig feedback, men også fordi det er en vanlig oppfatning at store prosjekter er mindre vellykket. Som igjen går tilbake til det du sier om planer som er vanskelige å sammenstille.

    Et spørsmål til sist: Jeg forstår deg til å si at det er bedre å forske på “NÅR fungerer X bedre enn Y”, heller enn “FUNGERER X bedre enn Y”. Det kan jeg si meg enig i. Men dette endrer ikke problemet du påpeker med at vi ikke klarer å definere “BEDRE”, ikke sant?

  • Magne Jørgensen

    De to kanskje viktigste argumentene for å bygge valg av metode på bedre evidens er:
    1) At man i mindre grad tar utgangspunkt over-genereliserer fra sin egen erfaring og problemkontekst.
    2) At man i mindre grad utsettes for teoriladet observasjon (at alt passer inn i ens egen modell av hvordan verden er skrudd sammen)

    De fleste er enige i det, men vi går vel alle uunngåelig den fellen likevel. Noe jeg tror også “de smidige” gjør.

    Så er det problemet om å finne ut når en metode er bedre – som i stor grad er uløst. Noe er iboende (f eks av vi ikke klarere å studiere vitenskapelig noe vi ikke klarere å definere tilstrekkelig presist), men noe tror jeg skyldes at mye av forskningen går fram på feil måte og at vi må innse at noe kunnskap er svært lokal – dvs at vi kan finne ut noe innen en avgjrenset kontekst (et firma), men i mye større grad bør avstå fra å generalisere. Så håpløst er det ikke – men vanskelig. Jeg tror f eks at det kan finnes lokale, meningsfulle, nyttige målinger av kvalitets og produktivitets-relaterte egenskaper ved programvare.

    mvh Magne (litt stresset på tid, men dersom du ønsker å legge noe av diskusjonen vår/mine kommentarer inn på bloggen – gjerne en forkortet versjon, må du bare gjøre det)

  • http://brodwall.com/johannes/ Johannes Brodwall

    Hei, Magne

    Ettersom “vi smidige” ofte er veldig dypt nede i enkeltprosjekter er det definitivt en kjempefare for å overgeneralisere.

    Det praktiske motstykket til det du sier er at vi observerer “dette ser ut til å fungere for oss, jeg vet ikke om det vil fungere for dere”. Jeg bestreber meg veldig på å presisere på at jeg har veldig få datapunkter, men det er lett å la seg rive med.

    Takk for en spennende diskusjon.

  • http://richersblog.com Richers Blog

    good for you
    thanks for sharing me this ideas