tisdag, 19 maj 2009

Estimering – Story Points eller ideala dagar?

Det finns två huvudspår när det gäller estimeringstekniker i agila projekt (eller egentligen antagligen alla projekt när jag tänker efter). Antingen estimerar man i en abstrakt enhet eller så estimerar man i en enhet kopplad till tid. Den vanligaste abstrakta enheten är nog story points men eftersom att det är en abstrakt kan det egentligen vara vad som helst. Jag har träffat team som estimerar i gummibjörnar! Enheter kopplade till verklig tid är istället timmar, dagar, halvdagar eller liknande och kan antingen vara ideala enheter eller verkliga enheter.  Med ideala enheter menas en tidsenhet som kan ägnas helt fokuserat åt en uppgift. Man har hela problemet och lösningen i huvudet och kan jobba utan störningar eller avbrott.

Jag föredrar oftast att jobba med abstrakta enheter och väljer story points om jag kan. Fördelen med att jobba med abstrakta enheter är att man, i ett estimat, separerar uppskattningen av tid från uppskattningen av omfattning. Viktigt är också att man estimerar uppgifter i relation till varandra. Så en story som uppskattas till fem story points är mer än dubbelt så omfattande än en story på två poäng. På så sätt kommer de estimat man gör alltid vara aktuella och inte bli sämre eller behöva uppdateras över tiden. Ta t ex en uppgift som i början av projektet estimeras till att ta två ideala dagar att utföra. Under projektets gång utförs liknande uppgifter som gör att nya erfarenheter kommer till projektgruppen. Det gör i sin tur att den uppgiften nu bara kommer att ta en dag att utföra. Då måste man, om man har estimat i en enhet som är kopplad till tid, även uppdatera det estimatet. Det behöver man inte göra om man estimerar i abstrakta enheter och estimerar uppgifter i relation till varandra. I exemplet ovan kommer uppgiften fortfarande att ha samma estimerade antal poäng och inte behöva uppdateras.

Ett viktigt begrepp när man estimerar i en abstrakt enhet är den hastighet som teamet har. Ett teams hastighet är lika med det totala antal enheter som teamet har levererat under en sprint. Om ett team åtar sig att leverera ett antal krav eller stories som är estimerade till 30 story points och lyckas med den leveransen så blir teamets hastighet 30. Om teamet istället lyckas leverera 25 story points som helt klara och den sista storyn på fem poäng blir nästa klar så blir teamets hastighet 25. Hastigheten använder man sedan för att veta hur mycket jobb man kan åta sig i nästa sprint. Eftersom att alla krav eller stories är estimerade i relation till varandra gör man ett antagande att man inte kommer att kunna leverera speciellt mycket mer i kommande sprint än i en tidigare. Istället för att bara se till den senaste sprinten när man sätter hastigheten kan man t ex räkna ut ett snitt av de tre senaste eller liknande. Man kan också göra anpassningar till antalet poäng man åtar sig beroende på tillgänglig tid. Det kan ju vara lämpligt att minska ner antalet poäng under en sprit som t ex innefattar jul eller påsk.

Inom Scrum är ett av de viktigaste dokumenten för att veta om man kommer att kunna leverera i tid en burn down-chart. En burn down är ett diagram som visar den samlade bilden av vilka uppgifter som är klara och vilka som är kvar. På x-axeln har man dagarna i sprinten och på y-axeln har man summeringen av värdet för estimaten för uppgifterna som ingår i sprinten. I en del projekt har jag valt att behålla story points som enda estimat för ett krav och inte estimera de enskilda uppgifterna och ibland väljer jag att bryta ner estimaten och att också estimera enskilda uppgifter. Då funkar det oftast bäst att man använder timmar som mått. När jag har estimerat uppgifter så rapporterar man också hur mycket tid som är kvar på varje uppgift medan när man behåller story points kan man bara rapportera den som helt klar. En story kan alltså i det läget inte vara halvt färdig.

Jag ser fördelar i bägge sätten att jobba. Om man jobbar med att bränna ner på story points på stories istället för på timmar på enskilda uppgifter finns potentialen att spara mycket tid och blir effektivare som team. Man kapar helt enkelt en hel del overhead. Det krävs dock att man har små stories och att man jobbar nära produktägaren för att uppnå detta.

Det skulle vara intressant att höra hur ni jobbar med estimering och uppföljning av agila projekt…

Mvh Björn Eriksen
Björn jobbar till vardags på Connecta som systemarkitekt.

Av Björn Eriksen 14:23

KOMMENTARER

Inlägget har 3 kommentarer
Själv har jag mycket svårt att se vad man vinner på att uppskatta i tidsenheter. Det leder bara till en massa kommunikationsproblem.

Kör story points, håll hastigheten uppdaterad, håll ner storleken på stories.

Toppenbra bloggartikel! Höll nästan på att glömma säga det.
Av PEZ 19 maj 2009 15:53
Tackar!

Mvh Björn
Av Björn Eriksen 19 maj 2009 16:36
Hej Peter och Björn! Tack för artikeln!

Några reflektioner: min erfarenhet är att båda sätten att estimera kan vara förvirrande och leda till kommunikationsproblem. Ideala dagar känns ofta obekvämt och onödigt för den som vant sig vid poäng. Poäng känns ibland märkligt och främmande för den som är vad vid att estimera i ideala persondagar. Ideala dagar kan kännas märkligt för det erfarna agileteamet, medan poäng kan kännas märkligt för intressenter utanför teamet, som blir oroliga när de inte förstår hur teamet jobbar.

I praktiken är min erfarenhet att skillnaden mellan dessa olika enheter är mindre än vad man först kan tro.

Relativ skattning är något vi kan göra inte bara med poäng, utan också med ideala persondagar (som ju definieras som "en perfekt lördag på kontoret"). Generellt är det en bra idé att ställa estimat mot varandra och se om relationen verkar vettig.

Både för poäng och för när vi använder persondagar gör vi estimatet (om vi tror på teamestimering) så att estimatet reflekterar teamets totala kostnad för att ta ett krav från specifikation till testad och dokumenterad produkt.

Ibland beskrivs poäng som komplexitetspoäng. Tanken är att ett kravs komplexitet i införandet ska vara oberoende av vem som genomför det. Så kan det vara - men problemet är fortfarande att komplexiteten skattas subjektivt; olika personer uppfattar samma uppgift som olika komplex. Ingen gratis lunch där med andra ord.

Hastigheten kan man justera även med ideala dagar, genom att helt enkelt justera hur många ideala dagar man räknar in under en sprint. Här kommer dock den pedagogiska poängen med poäng in - för om man hamnat väldigt fel i sina estimat är detta kanske lättare att hantera med poäng. (Bestämmer man sig för att man hinner med 4 ideala dagars arbete i en sprint ser det inte så bra ut, men samma för poäng har inte den konnotationen).

Sensmoral (tycker jag): låt teamet samtala om de olika approacherna, och välja den som man tycker passar bäst, givet helheten. Helheten inkluderar relationen till omvärlden. Använd sen metoden tillräckligt länge för att förstå den, med reflektion och anpassningar efter varje sprint.

Tack igen för artikeln! /Tobbe Fors
Av Tobias Fors 20 maj 2009 07:29

Skriv kommentar


 


 

Användarverifikation
Bild för användarverifikation