Jag skrev tidigare om några av problemen med mjukvaruutveckling och lovade att jag skulle berätta om scrum – den “lättrörliga” utvecklingsprocess som vi jobbar enligt. I det här inlägget tänker jag försöka skriva en liten introduktion till scrum. Jag har också tänkt att fortsättningsvis skriva inlägg om scrum och de för och nackdelar som jag upplevt under ett och ett halvt år med scrum.
Scrum är uppbyggt kring begreppet sprint. En sprint är en period på två till fyra veckor som upprepas om och om igen. Varje iteration innehåller utveckling, tillbakablickar och förbättring. Tanken är att man efter varje period får en verklighetskoll på att man gör rätt saker, det kunderna vill ha och har möjlighet att reagera på om man gör fel snabbt. Hela tiden försöker man också förbättra hur man utvecklar mjukvara genom att ha former för att fånga upp sådant som fungerar dåligt.
På pappret är scrum utöver sprinten tre roller, tre artifakter och fyra olika sorters möten. Vi börjar med rollerna:
- teamet
-
Sju personer plus minus två som utför själva utvecklingen. Teamet skall vara “korsfunktionellt” och innehålla all kompetens som behövs för utvecklingen: t.ex. testare, kodare och grafiker.
Teamet jobbar tillsammans med produkten och det är viktigt att uppnå en känsla av gemensamt ansvar för utvecklingen. Man får aldrig säga – det går dåligt för att han eller hon är så dålig. Att någon saknar kompetens är ett gemensamt problem som måste lösas genom kunskapsspridning och utbildning.
- scrum master
-
En person som är ansvarig för att hjälpa teamet att vara så produktivt som möjligt. Det kan handla om att undanröja olika typer av hinder och störningar på arbetsplatsen allt från tekniska problem till chefen som kommer och stör med frågor i tid och otid. Scrum mastern är också ansvarig för att teamet förstår scrum och att processen fungerar. Kan vara en i teamet, men det finns både för och nackdelar med det.
- produktägare
-
Den person som är ansvarig för att rätt delar av produkten utvecklas i rätt ordning och omfattning (mer om det strax). Skall ha koll på kundnytta, affärsnytta, företagets strategi och baserat på det prioritera.
Artefakterna då. Lite skum term men i princip handlar det om vilka dokument och saker man faktiskt producerar. Tre stycken:
- product backlog
-
Produktägaren ordnar all funktionalitet som skall in i produkten i ganska övergripande “backlog items” i en lång lista. Varje item skall vara ett tvärsnitt genom applikationen som utvecklas och handla om en slutanvändarfunktion – en bra form är userstories.
Listan är sorterad på en prioritetspoäng på varje item, inga item får ha samma prioritet. De saker som är överst skall vara mer detaljerade och kortare än de lägre prioriterade items:en i listan. Syftet är att lägga tid på att utreda detaljer så nära själva utvecklingen som möjligt.
- sprint backlog
-
I början av varje sprint plockar teamet åt sig så mycket arbete från toppen av produktbackloggen som de tror att de tillsammans kommer klara av att få färdigt under sprinten. De backlog items de plockat åt sig placeras i en prioritetssorterad lista där saker inte får tas bort eller läggas till under sprinten.
Under sprinten jobbar sedan teamet tillsammans med att färdigställa varje item. Ett item skall aldrig vara reserverat för en utvecklare i teamet – “pinpointat”. Tanken är att undvika flaskhalsar när någon blir sjuk eller inte är tillgänglig.
- produkten
-
Det viktigaste så klart. Produkten man utvecklar. Kodbasen och det man “bygger” produkten av skall vara i sådant skick att man kan göra en ny version till kund i slutet av varje sprint.
Och så mötena. Alla möten är “timeboxade” vilket innebär att de har en fast längd, om mötet drar ut på tiden så skall man ändå avbryta det efter timeboxen och lära sig till nästa gång att man pratade för mycket detaljer eller inte såg till att mötet flöt på bra. De tre mötena är:
- sprintplaneringsmöte
-
Första dagen på sprinten, teamet och produktägaren. Mötet har två delar, först går teamet och produktägaren igenom de högst prioriterade sakerna i produktbackloggen, teamet ställer frågor om saker de behöver veta för att upskatta hur lång tid varje backlogitem tar att implementera.
Den andra delen av mötet går ut på att teamet delar upp varje backlog item i mindre och mer tekniskt orienterade delar: tasks. När teamet uppskattat tiden det tar att uföra ett item så har produktägaren möjlighet att “scopa” om det – dela upp det i mindre delar och prioritera ned vissa. Produktägaren får däremot inte kräva att teamet gör ett item snabbare genom att tumma på kodkvalité och liknande.
- daily scrum
-
En gång varje dag under sprinten har man ett femtonminutersmöte där varje person i teamet besvarar frågorna “vad har du gjort sedan senaste mötet“, “vad kommer du göra tills imorgon” och “vad har förhindrat dig från att vara optimalt produktiv“.
Det är bara scrum master och teamet som får prata på detta möte men andra är välkomna att vara med och lyssna. Om några i teamet behöver diskutera något ytterligare bestämmer man en mötestid på detta möte.
- sprint review
-
I slutet av varje sprint skall en handgriplig demo genomföras där varje funktion som är klar skall visas på en dator för alla de som kan vara intresserade. Kunder och chefer får vara med på detta möte, teamet, scrum mastern och produktägaren skall vara med. Bara sådana backlog item som är helt klara får demonstreras här, ett item som saknar någon del räknas inte som klart och måste vara med i en till sprint för att vara klart.
- sprint retrospect
-
På det här mötet så går scrum mastern och teamet igenom vad som varit dåligt och bra under sprinten, vilka beslut man tagit, vilka störningar man haft och vad man skall förbättra nästa sprint. En bra grej eftersom saker som går dåligt ofta kan vara jobbiga att ta upp – det blir lättare att ta upp känsliga problem i ett konkret forum än att bara resa sig upp en dag och säga dem rakt ut.
Många utvecklingsprocesser försöker vara detaljerade och innehålla en kokbokslösning på alla aspekter av hur man bedriver mjukvaruprojekt. Scrum lämnar istället ganska många dörrar öppna och man måste i princip alltid anpassa processen efter de speciella krav som finns i varje företag. Nästa scruminlägg tänker jag ägna åt att berätta lite detaljer om scrumimplementationen på min arbetsplats.


Till bilden (som är tagen på kursen) hör följande historia: En man kommer in på hamburgerhak, han beställer en superburgare med extra allt, två extrastora strips, ostbollar med extra ost och en extra stor cola. Sedan tar han upp tio kronor ur fickan och tror att det skall räcka. Killen i kassan går då ut på baksidan och hämtar en överkörd ekorre, han klipper av svansen och rakar av pälsen (!?), steker ekorren på stekhällen, tar ett par gamla bröd ur soporna och gör en ekorrburgare som han sedan slår in i hamburgarpapper. Han tar också lite gamla strips och en stor cola och ger till mannen. Mannen sätter sig ned vid ett bord och moffar i sig ekorrburgaren, på vägen ut stannar han och tackar extra för burgaren. (När han kommit hem faller han ihop av akut matförgiftning).

