Endre Dingsør Jr. Mar 14, 2018

Høyt fokus på Time-to-market og stadig mer krevende kunder internt og eksternt skaper ofte et stort press på leveranseteam. Da det visuelle ofte er lettere å forholde seg til, er visuelle «teasere» eller design ofte benyttet til intern forankring og som grunnlag for tildeling av budsjetter. For å sikre rask nok leveranse, er det ofte lett å dytte vekk den tekniske implementeringen til noe som kommer senere. Sluttbruker introduseres til klikkbare prototyper og etter mange hyppige iterasjoner og justeringer basert på tilbakemeldinger vil man nærme seg noe man ønsker å teste ut mot flere. Om det er først da man leverer over til utviklerne mister man fort «pulsen» på produktet eller tjenesten. For å sikre hastighet og leveranseevne, er det viktigere enn noen gang å optimalisere utvikling og drift for leveranse i digitale flater. Dette gir også muligheten til å måle brukeradferd/ reel bruk av produktet eller tjenesten, og gir verdifull innsikt i tillegg til muntlige tilbakemeldinger.

DevOps (DEVelopment and OPerationS) tankesettet og prinsippene har de senere årene vokst seg stadig sterkere. Kort fortalt ønsker DevOps å sikre et tettere samarbeid mellom utviklere, testere og drift. Når man jobber med kontinuerlig utvikling av digitale produkter, opplevde mange DevOps som en mulighet til å snakke om hvordan utvikling av kode, prosesser knyttet til kvalitet, lansering og drift er viktige komponenter for å sikre en suksessrik digital tilstedeværelse. DevOps bidrar til en større åpenhet rundt kompleksiteten av utvikling og kontinuerlig forbedring av digitale produkter. Lean UX og brukersentriske metoder har gjort det vanlig å jobbe mot så tidlig testing av produktet som mulig. Dette gjøres for å sikre at man har kontinuerlig læring om hva som er riktig fokus, og ikke kaster bort tid og penger på feil ting. Gjennom DevOps blir det mer naturlig å involvere utviklere og deres hverdag i daglig dialog med forretningssiden og prosjektteamet.

DevOps baserer seg på flere teknikker og prinsipper som er med på å sikre raske leveranser med høy kvalitet.

Et av prinsippene er å sikre at man optimaliserer leveranse for det neste steget. Fra et utviklingsperspektiv betyr det at man optimaliserer for ikke-funksjonelle krav som ytelse, testbarhet, konfigurerbarhet, sikkerhet, stabilitet og evne til å håndtere feil som måtte oppstå. Man optimaliserer altså for det som tradisjonelt har vært driftsoppgaver. Dette gjør man ved å sikre at man får raske tilbakemeldinger i alle deler av leveransen, ikke bare fra sluttbruker. Kostnadene ved å introdusere feil som ikke blir håndtert raskt nok er ofte store og usynlige. Å gi tilbakemelding til leddet før deg i leveranseløpet kalles feedbackloops. Å sette opp feedbackloops i alle ledd har vi god erfaring med i Forte_, og vi erfarer at det skaper verdifull innsikt å visualisere dette for alle som jobber med de digitale produktene.

Når man får rask tilbakemelding gir det også en mulighet til ta mer korrekte beslutninger. I den sammenhengen er det viktig å tenke at om beslutningsmyndighet flyttes vekk fra de som kjenner til hvorfor en situasjon oppstod, vil kvaliteten på beslutningen normalt bli dårligere. En annen konsekvens er at det tar lengre tid før en beslutning blir tatt. Med tiden minsker man også virkningen av beslutningen, da grunnen ofte er glemt av de som gjorde jobben, og muligheten for læring for resten av teamet er borte. Å jobbe mot at utfører eller teamet selv har beslutningsmyndighet på egne løsninger har ofte en merkbar effekt på kvalitet og leveransetakt.

Om man så har sikret kvalitet i alle ledd, og har autonome team, er man kommet et godt stykke. Men verdiuttaket av raske tilbakemeldinger og beslutningsmyndighet hos utfører blir veldig mye bedre om man klarer å gjøre justeringene raskt nok til at man kan opprettholde en dialog med sluttbruker. Tenk deg å ha en samtale med en kollega, og denne personen stadig venter 3-4 minutter før de svarer. Du vil sannsynligvis raskt miste fokus, og dialogen vil ha lav kvalitet. I en utviklers hverdag vil man sikre god dialog ved å automatisere alt som er repeterende og har mange feilkilder. Gjør man det kan man bruke tiden på å skape verdi. For en utvikler vil man typisk automatisere deploy av kode, testing av eksisterende og ny kode, konfigurasjon for utviklings-, test-, preproduksjon- og produksjonsmiljøer og generelt så mange manuelle operasjoner som mulig. Gjør man dette vil man fjerne tidkrevende arbeid, minimere feilkilder og levere ny kode raskere. Kontinuerlig leveranse er et ord som benyttes stadig oftere i denne sammenhengen.

I tillegg til å øke takten på leveransene, vil man også oppnå høyere kvalitet. For eksempel vil automatiserte tester kodes fortløpende, og hindrer samme feil i å dukke opp igjen på et senere tidspunkt. Når testene er automatisert blir de heller ikke glemt eller droppet grunnet tidspress.

Er man i stand til å jobbe på denne måten gjør man det mulig å kontinuerlig utvikle eksisterende og nye forretningsområder, og sikre at man opprettholder pulsen på produktet fra ide via bruk og videreutvikling. Tiden da det tok flere måneder fra den visuelle «teaseren» ble vist til den var implementert er forbi, bare lytt til utviklerne dine.