Smidig baseball stadion?
En smidig tilnærming til samarbeid og problemløsning er ikke noe som bare gjøres i programvareutvikling, det gjøres også når man skal bygge enorme konstruksjoner. I Discovery Channel programmet Build It Bigger viste de historien om hvordan Washington fikk et nytt baseball stadion for sitt lag Washington Nationals. Det at man lager enorme stadioner i USA er ikke noe oppsiktsvekkende, men det som gjorde meg “varm under kraven” var hvordan de gikk frem for å bygge denne stadionet. Arkitektene og byggmesterne hadde utrolig dårlig tid for å få stadionet ferdig til sesongstart. Derfor valgt de å dele opp byggingen i “10 pizzastykker” og utviklet den helhetlige arkitekturen og utseende for stadionet underveis. Nå dette høres veldig kjent ut og høres ut som hvordan man gjør smidig systemutvikling. En av tingene man høre om en iterativ måte å arbeide på er at man “mister oversikt over helheten”. Hvis en team med utbyggere og en gjeng arkitekter klarer å bygge et enorm baseball stadion, så burde vel det være mulig også i programvare utvikling?
Iterativt, inkrementelt og evolusjonært
Reidar Sande snakket på Smidig2008 om hvorvidt Mona Lisa ble malt iterativt, inkrementelt eller evolusjonært og det er her man kommer inn på hvordan de klarte å bygge en baseball stadion på en smidig måte. Erfarne og kompetente fagfolk gjør iterativ, inkrementell og evolusjonær utvikling uten at noen trenger å fortelle dem det. Erfaring kalles egenskapen som gjør at du er i stand til å holde øye med helheten samtidig som du kan fokusere på detaljene. Jeg tror nøkkelen til å mestre balansen mellom disse tre tingene og dermed også til å bygge gode arkitekturer i smidige prosjekter ligger i å ha mennesker med erfaring fra smidige prosjekter til å ha oppsyn med det. Her er det viktig å presisere at du må ha erfaring fra smidige prosjekter. Jeg mener mange gjør feil i å ikke bytte ut eller oppdatere sine beslutningstagere før de begynner med smidig systemutvikling. Manglende praktisk erfaring er en av hovedårsakene til at mange føler de ikke lykkes med smidig systemutvikling. Kravene til en arkitekt i smidige prosjekter er litt anderledes enn i tradisjonelle prosjekter. Du må kommunisere mer og justere oftere enn hva som er vanlig. Tiden du får til å komme opp med løsninger er også begrenset, slik at du må i lang større grad dyrke frem en arkitektur fremfor å bruke månedsvis på å designe den i UML og PowerPoint. Denne evnen er ikke noe alle arkitekter har i blodet og dette er en utfordring man må forsøke å løse. Mitt råd er å enten leie inn erfarne arkitekter fra smidige prosjekter eller kjøre små pilot prosjekter hvor dine folk kan prøve og feile. Hvis du ikke gjør det tror jeg du vil ha store problemer med å innføre smidige metoder i din organisasjon.