Scrum i praksis: Guide til smidig programvareutvikling

Scrum er en fleksibel tilnærming til programvareutvikling som nå benyttes av et økende antall virksomheter som en sentral del av deres digitale omstillingsarbeid.

Om Scrum

Hovedformålet med Scrum-metodikken er å skape et rammeverk for smidig programvareutvikling. Dette rammeverket legger til rette for samarbeid i team og sikrer levering av høykvalitets programvareprodukter på en effektiv måte.

Scrum tilbyr en struktur for teamarbeid ved utvikling av komplekse produkter. Istedenfor å vente til slutten av lange faser med planlegging, design, utvikling og testing, fokuserer Scrum på å levere funksjonelle produkter i korte intervaller fra start.

De sentrale prinsippene i Scrum er åpen kommunikasjon i teamet, jevnlig kvalitetskontroll og evnen til raskt å tilpasse seg endringer. Ved korrekt implementering kan teamene levere høykvalitets programvareprodukter på en tidsmessig og kostnadseffektiv måte.

Vesentlige fordeler med Scrum

Kilde: scrum.org

  • Økt produktivitet: Et Scrum-team bryter ned komplekse utfordringer i håndterbare deler. Disse delene leveres deretter i løpet av sprintene. Teammedlemmene kan konsentrere seg om spesifikke oppgaver innenfor en sprint, som er en tidsavgrenset periode der de jobber med utvikling.
  • Forbedret kommunikasjon: Scrum fremmer regelmessig kommunikasjon i hele teamet, noe som sikrer at alle har en klar forståelse av omfanget og forventningene. Dette reduserer betydelig risikoen for misforståelser. Et samlet team med felles mål er avgjørende for rask fremdrift fra sprint til sprint.
  • Fleksibilitet: Scrum er designet for å være fleksibelt. Team kan lett tilpasse seg endrede krav og prioriteringer. Dette gjør det mulig å reagere raskt på endringer i prosjektomfang eller kundens behov. Endringer kan enkelt innføres mellom sprintene, i stedet for å vente til hele utviklingssyklusen er ferdig.
  • Kvalitetssikring: Scrum legger stor vekt på testing og kvalitetssikring, gjerne gjennom automatisering. Målet er å forbedre kvaliteten på sluttproduktet, redusere risikoen for feil og sikre at produktet oppfyller kundens krav.
  • Kundefokus: Scrum er kundefokusert, noe som innebærer at kunden er aktivt involvert i utviklingsprosessen fra start til slutt, vanligvis i rollen som produkteier eller i nær kontakt med denne. Dette sikrer at det endelige produktet oppfyller kundens behov og prioriteringer.

Nedenfor følger en diskusjon av rollen til scrum-metodikken.

Scrum-metodikkens rolle

Kilde: hangoutagile.com

Scrums hovedmål er å tilrettelegge for samarbeid i smidig programvareutvikling. Det bygges et Scrum-team som møtes daglig og deltar i planlagte diskusjoner, kjent som seremonier, i løpet av hver sprint. Disse sprintene gjentas fortløpende. De mest vanlige seremoniene i et scrum-team er:

  • Daglige standups: Et kort daglig møte der teammedlemmene diskuterer hva de gjorde dagen før, hva de planlegger å jobbe med, og eventuelle hindringer de møter.
  • Historieforbedring: En sesjon der nytt innhold for kommende sprinter diskuteres og detaljeres.
  • Sprintplanlegging: Under dette møtet estimerer teamet arbeidsmengden for de klare oppgavene (definert i Stories), og forplikter seg til et spesifikt utvalg av disse. Valget baseres hovedsakelig på prioritering og estimert innsats.
  • Sprintgjennomgang: Teamet presenterer det de har oppnådd i løpet av den siste sprinten for interessentene.
  • Sprintretrospektiv: En samtale dedikert til teamet for å diskutere hva som kan forbedres, og hvilke endringer som bør gjøres fremover.

Betydningen av Scrum-metodikken ligger i dens evne til å hjelpe team med å jobbe mer effektivt. De grunnleggende prinsippene i Scrum er basert på det Agile Manifest og inkluderer følgende.

Empirisk prosesskontroll

Scrum bygger på ideen om at fremgang best oppnås gjennom en empirisk prosess med kontinuerlig inspeksjon og justering. Dette betyr at teamet regelmessig skal evaluere arbeidet sitt og tilpasse prosessene for å forbedre prestasjonene.

Selvorganiserende team

Scrum-team er selvorganiserende, noe som innebærer at de selv tar ansvar for å administrere arbeidet og ta beslutninger for å nå sine mål. Dette bidrar til å styrke samarbeid og ansvarlighet i teamet.

Tidsavgrensede iterasjoner

Scrum-prosjekter deles opp i tidsbegrensede perioder, kalt sprinter, som vanligvis varer fra en til fire uker. Dette sikrer at teamet jobber målrettet, og at de gjør regelmessig fremgang.

Prioritert produktkø

Produktkøen er en prioritert liste over funksjoner og krav som teamet skal jobbe med i løpet av prosjektet. Produkteieren er ansvarlig for å vedlikeholde produktkøen og sikre at den reflekterer kundens behov og prioriteringer.

Kontinuerlig forbedring

Scrum understreker viktigheten av kontinuerlig forbedring, både når det gjelder produktet som utvikles og prosessene som brukes for å utvikle det. Teamet bør jevnlig reflektere over arbeidet sitt for å finne forbedringspunkter.

Utfordringer

Kilde: scrum.org

Selv om Scrum-metodikken kan være svært effektiv i programvareutvikling, finnes det også utfordringer som teamene kan møte ved implementeringen.

Motstand mot endring

Scrum krever en betydelig endring i tankesett og kultur, noe som kan være vanskelig for enkelte teammedlemmer å akseptere. Motstand mot endringer kan vanskeliggjøre effektiv implementering av Scrum. Det er nødvendig å forstå og akseptere prinsippene for å lykkes med Scrum.

Mangel på erfaring

For å implementere Scrum effektivt er det nødvendig med et visst nivå av erfaring og ekspertise. Mangel på kjennskap til Scrum eller Agile-metoder kan være en utfordring.

Mangel på engasjement

Scrum krever fullt engasjement fra alle teammedlemmer, inkludert produkteier, Scrum-mester og utviklingsteamet. Hvis engasjementet mangler, kan det være vanskelig å oppnå de ønskede resultatene.

Dårlig kommunikasjon

Scrum er avhengig av god kommunikasjon og samarbeid mellom teammedlemmene. Hvis kommunikasjonen svikter, kan det bli vanskelig å jobbe effektivt.

Overdreven vekt på prosess

Selv om Scrum gir et rammeverk for smidig programvareutvikling, er det viktig å huske at det kun er et rammeverk. For stort fokus på å følge prosessen kan føre til at man mister det endelige målet, som er å levere programvareprodukter av høy kvalitet.

Rollen til et Scrum-team

For å være effektivt, må et scrum-team bestå av visse roller. Mangel på dedikasjon eller feil antall i disse rollene kan sette den vellykkede oppbyggingen av et scrum-team i fare.

#1. Utviklingsteam

Dette er teamets utførende del, og kanskje den viktigste fra et leveringsperspektiv. Et typisk Scrum-utviklingsteam består av utviklere, testere, arkitekter og analytikere, og har 4-10 medlemmer. Ved færre medlemmer kan det være tvil om det er et fullverdig team. Hvis det er flere, kan alle seremoniene og ledelsen av teamets diskusjoner bli for komplekse.

Utviklingsteamet tar historiene fra backlog, estimerer dem og implementerer dem i løpet av sprintene. Teamet er ansvarlig for utvikling, testing og til slutt for distribusjon til produksjon.

#2. Scrum Master

En Scrum Master fungerer som en orkestrator for utviklingsteamet. Vedkommende planlegger regelmessige møter, sikrer at utviklingsteamet har en klar forståelse av innholdet, og organiserer aktiviteter i løpet av en sprint for å nå sprintplanen og målene.

Dette er ikke en innholdsrolle. Scrum Master trenger ikke nødvendigvis å forstå det tekniske innholdet i oppgavene teamet jobber med, selv om det er en fordel. Scrum Master er teamets tjener og beskytter det mot forstyrrelser fra omverdenen. Dette betyr å legge til rette for at teamet kan jobbe etter smidige prinsipper. Scrum Master er teamets talsperson og sørger for at planlagte sprinter ikke endres på grunn av uplanlagte forespørsler.

#3. Produkteier

Produkteieren (PO) er koblingen mellom utviklingsteamet og forretningsbrukerne (interessenter) utenfor teamet. PO diskuterer innholdet med alle relevante parter og gir den avtalte informasjonen videre til Scrum-teamet.

PO skaper historier for teamet med klare beskrivelser og forventninger. PO sørger for at utviklingsteamet forstår innholdet slik at det kan estimere hver historie. PO leder diskusjonene om historieforbedring i teamet.

I tillegg til å håndtere innhold og backlog, er PO ansvarlig for å prioritere historiene i backlog. PO er imidlertid ikke ansvarlig for å velge konkrete historier inn i sprinten. Utviklingsteamet er alene ansvarlig for å velge omfanget for neste sprint. PO kan påvirke dette valget ved å kommunisere prioriteringene på en tydelig måte.

Interaksjoner mellom roller i et Scrum-team

Kilde: scrum.org

Selv med alle rollene på plass, er kommunikasjon nøkkelen til suksess. Det viktigste er god kommunikasjon, siden det finnes mange måter å gjøre det feil på. Faktisk er manglende kommunikasjon en av de største grunnene til at mange Scrum-team ikke lykkes. De gjør det rett og slett ikke riktig.

For eksempel ber produkteiere ofte utviklingsteamet om å lage nye innholdshistorier. Men det er ikke utviklingsteamets ansvar å skape etterslepet. Teamet kan gjerne bidra til å definere, spesifisere og dele opp historiene for å gjøre dem gjennomførbare innenfor sprintene. Men det er produkteieren som er ansvarlig for etterslepet. PO bør ikke be utviklingsteamet om å kontakte forretningsinteressentene.

Verken Scrum-mesteren eller produkteieren bør definere hva omfanget for neste sprint skal være. Dette skjer ofte likevel, siden Scrum-mesteren og produkteieren naturlig inntar en lederrolle. Men i realiteten er de ikke de som skal bestemme hva utviklingsteamet skal jobbe med. Utviklingsteamet er de eneste som kan bestemme dette. PO gir informasjon om viktigheten av hver historie fra et forretningsperspektiv, og kan prioritere historiene i etterslepet. Dermed har utviklingsteamet en oversikt over hvilke historier som bør prioriteres.

Produkteieren bør jevnlig diskutere nytt innhold som PO ønsker teamet skal levere. PO skal diskutere hver historie grundig, og sikre at alle i utviklingsteamet forstår historien og at akseptkriteriene er klare.

Scrum-mesteren er ikke bare en orkestrator. Vedkommende beskytter også teamet mot innblanding fra produkteieren, ledelsen eller andre eksterne interessenter. SM sørger for at de interne Scrum-prosessene fungerer, og leder de fleste seremonier for teamet. Under daglige statusmøter sørger SM for at alle kun deler den viktigste informasjonen, slik at møtet ikke tar lengre tid enn planlagt. Dette gjelder for alle møtene.

SM organiserer også regelmessige retrospektive samtaler der teamet reflekterer over arbeidet fra forrige sprint og finner områder der teamet kan forbedre seg.

Avsluttende ord

Det tar tid å bygge et velfungerende Scrum-team. Teamet må opparbeide erfaring, selv om enkelte teammedlemmer har tidligere erfaring. Hvert Scrum-team er unikt, og det tar tid å finne en måte å samarbeide effektivt på.

Det viktigste er å opprettholde stabilitet i teamet. Først da kan teamet begynne å forbedre seg for hver nye sprint. Det endelige målet er å skape et selvorganiserende team, der en Scrum Masters tilstedeværelse ikke er obligatorisk. Hvis du ikke klarer å holde teamet stabilt, vil dere fortsatt være i læringsfasen.

Deretter kan du se på de beste Scrum-verktøyene for en oppstart eller mellomstor bedrift.