Archive for februari, 2012

h1

Övning: Agile Values

onsdag, 29 februari, 2012

Nu har jag lagt upp ytterligare material under ”Verktyg och Mallar”. Denna gång blir det en övning som jag själv kört flera gånger med fantastiskt resultat.

”Agile Values” är en diskussionsövning under vilken teamet eller projektet får en chans att fördjupa sin förståelse kring agiles och leans principer, men framförallt en möjlighet att diskutera dem!

Under övningens gång (som tar cirka 90-120 minuter att genomföra) får teamet (alternativt projektet eller avdelningen) en chans att diskutera agiles och leans principer och värderingar. Inte nog med det, grupperna får också en chans att diskutera hurvida man tror att principerna och värderingarna är sanna – dvs. är de viktiga att följa och värna om för att projektet ska nå maximal framgång?

.

.

Du hittar övningen genom att klicka här, eller på ”Verktyg och mallar” i högerspalten.

.

h1

Q: Om Chief Product Owner, Managers och Kravägare?

fredag, 24 februari, 2012

Många företag och organisationer kämpar med att få till en bra dialog kring prioriteringar och kravdetaljer med beställare och verksamhet.

I större organisationer som inte i mål med att forma om sig för att stötta agila projekten i sina leveranser blir ofta just produktägaren (och verksamhets- experter) en flaskhals.

För några dagar sedan fick jag detta mail:

.


Hej Jimmy!

Tack för en bra blogg. Såg att du gärna mottog frågor om Scrum så tänkte maila om det jag funderar på.

Vår nuvarande Product Owner har inte varit närvarande och han har haft massa sidouppgifter. Tanken är nu att han ska blir Chief Product Owner med underordnade Product Owner för olka delar av vårt system då det är stort och komplext. Till detta så kommer det även för stories att finnas kravägare som man får för sig att varje team ska vända sig till med frågor. Mina funderingar om detta:

1. Om vi har en huvud produktägare, visst borde denna kallas Chief Product Owner istället för Product Manager?

2. De under ordnade produktägarna bord väl kallas Product Owner of Function A och inte Functional managers vilket ger associationer till något helt annat?

3. Ska verkligen kravägare vara den som teamet pratar med? Bör det inte vara produkägarna som teamet kommunicerar med i det? För som jag förstått det så ska produkägaren/ägarna har väldigt god koll på alla stories?

Mvh #####



Hej #####,

Roligt att du tycker om bloggen! Och tack också för din fråga. 

Såhär tänker jag…

1. Om vi har en huvud produktägare, visst borde denna kallas Chief Product Owner istället för Product Manager?

Jag håller med om att Chief Product Owner är ett lämpligare namn. Det är vedertaget och har en betydelse inom den agila litteraturen och inom Scrum-metodiken. Viktigare än namnet är dock såklart rollens syfte och förväntad roll i projektet.

.

2. De under ordnade produktägarna bord väl kallas Product Owner of Function A och inte Functional managers vilket ger associationer till något helt annat?

Personligen gillar jag beteckningen ”Area Product Owner <Functional Area>” fast ”Product Owner of Function A” tror jag säkert fungerar lika bra. Dock blir jag lite fundersam över begreppet ”Function” här. Det låter som om risken finns att det blir ett för smalt område, men å andra sidan har jag ju ingen insikt i ert system.

Men jag håller med om att ”manager” ger helt fel associationer. Att vara produktägare handlar inte om ”management”, det handlar om att representera kunden och förmedla en vision, roadmap och kunskap kring features och funktioner till teamet. Produktägaren är en del av teamet, inte en av teamets managers.

Vidare, om man har en hierarki med produktägare (vilket man bör ha när man skalar upp Scrum till flera team) så är det viktigt att definiera och farankra vilket mandat produktägarna har över sin egen produktbacklogg. På sätt och vis utgör produktägarna ett virtuellt team vars förmåga och vilja att samarbeta kring roadmaps och prioriteringar är centralt. Varje team ska inkludera en produktägare som bistår teamet i diskussioner kring vision, roadmaps och prioriteringar – på daglig basis, aktivt och proaktivt. Vidare ska varje team ha sin egen produktbacklogg. Om flera team delar samma produktbacklogg anser jag att man hamnar man i flera trassliga situationer.

I detta virtuella ”Product Owner Team” är det viktigt att diskutera och enas kring vilket mandat Chief Product Owner förväntas besitta? Vilket mandat och ansvar blir över till Area Product Owner?

.

3. Ska verkligen kravägare vara den som teamet pratar med? Bör det inte vara produkägarna som teamet kommunicerar med i det?

Jag kan ju bara gissa vad ”kravägare” betyder hos er.

Alt 1. Kravägaren är personen som beställt en viss funktion av produktägaren (alt. produktägarteamet). Personen har ingen detaljerad åsikt kring exakt hur funktionen ska implementeras men är väldigt mån om att få funktionen levererad.

Alt 2. Kravägaren har på uppdrag av produktägaren ett ansvar att konkretisera funktionen och har mandat att utforma detaljerna i kravet.

Alt 3. ?

Oavsett vad – om det finns någon utanför teamet som har speciell verksamhetsexpertis eller kunskap om vad användarna vill ha som inte produktägaren besitter ska denna person vara en del av teamet, åtminstone under den period man jobbar med det kravet.

Han eller hon ska stötta produktägaren i att konkretisera kravet till PBI:er (Product Backlog Items/User Stories), splittra upp det i flera beståndsdelar och sedan förklara affärsvärdet för var och en av de mindre delarna så att produktägaren kan göra en bra prioritering av produktbackloggen.

Vidare, när det är dags att förvandla kravet till värdefull fungerande mjukvara ska personen göras till en teammedlem som på deltar på det dagliga mötet, designworkshoppar och diskussioner samt kan vara med och diskutera de sista detaljerna med testare och utvecklare när kravet faktiskt överstätts till fungerande kod. Teamet (med eller utan ”kravställare”) har inte mandat att utöka/minska omfattningen av funktionen utan att rådgöra med produktägaren – teamets uppgift är att förvandla tydligt definierade och avgränsade krav (User Stories) till fungerande värdefull mjukvara efter produktägarens prioriteringar.

Har inte produktägaren tid till detta (dvs formedla kunskap eller ha åsikt kring kravdetaljerna), eller inte sitter inne med den verksamhetsexpertis eller kundkunskap som behövs, ja då ska teamet utökas med en person som faktiskt har det. Återigen, titeln är inte det viktiga – fokusera på syftet och samarbetsformen.

.

Jag hoppas dessa kommentarer och reflektioner ger dig något av värde och kan hjälpa er i ert arbete och diskussioner.

Jag kan också rekommendera en bra bok som bland annat adresserar dessa frågeställningar och utmaningarna när man skalar upp till flera Scrum team som tillsammans bygger en produkt/ett system.

Den heter ”Scaling Lean & Agile Development – Thinking and Organizational Tools for Large-Scale Scrum” och är skriven av Craig Larman och Bas Vodde.

h1

Ikon-mani på Scrum-väggen

torsdag, 23 februari, 2012

I projektet jag är Agile projektledare och Scrum Master i just nu har vi tapetserat 8 meter vägg med allehanda Backlogs, Burndowns, grafer, prognoser och information. Det har också skett en mindre explosion i antalet ikoner vi använder oss av för att tydligare visualisera vad som pågår och vilken status arbetet är i.

Väggen som helhet ser ut såhär:


(Klicka för att se en större bild. Sprint Backloggen är ytan i mitten som är tjock med Post-Its.)

.

Sprint Backloggen

Sprint Backloggen är enkelt strukturerad:

Task-lapparna beskriver saker som ”Implementera X”, ”Koda Y”, ”Fixa Z”, ”Skriva testfall”, ”Systemtesta”, ”Skriva systemdok”, ”Fixa browserkompatibilitet”, ”Acc Test”, m.m. m.m.

Jobbar man med en task så placerar man en av sina egna avatar ikoner på eller bredvid Task-lappen. I projektet blev temat av någon anledning superhjältar i olika skepnader. Vi har ”The Governator”, ”The Iron Lady”, ”Chuck Norrs”, ”Yoda”, m.fl. som var och en representerar en person i teamet. Varje person har max tre avatarer, dvs. man tillåts inte jobba med mer än tre saker samtidigt. Oftast används dock bara en eller två samtidigt, vilket är bra.

Varje task i ”In work” kolumnen uppdateras dagligen dessutom med ett estimat på återstående effektivt arbete i timmar. (Dessa summeras dagligen i Sprint Burndown charten.) För varje dag som en task sitter i ”In Work” kolumnen får den dessutom en prick på sig så att vi kan se hur många dagar den suttit där. De flesta tasks är så små att de ska vara möjliga att slutföra under en dag så om antalet prickar växer vet vi att något skumt pågår.

Denna uppbrytning har dock inte visat sig vara en tillräcklig visualisering av nuläget. Så, för att komplettera status och vad som händer använder vi oss av en stor skara laminerade ikoner som vi fäster med häftmassa på Feature-lapparna eller Task-lapparna.

Förhoppningsvis ger det någon inspiration så håll till godo, här kommer ikonerna 🙂

.

Status ikoner

Topic för morgondagens Daily Standup
Om det är något vi känner att vi vill diskutera tillsammans i teamet på nästa morgonmöte markeras Feature- eller Task-lappen med denna ikon. Varje morgon scannar vi Backloggen det sista vi gör efter dessa Daily-ikoner, diskuterar dem, och tar sedan bort ikonen.
Top Prio!
Denna ikon signalerar att denna Feature eller Task är något som vi verkligen behöver fokusera på tillsammans!
Tar konstigt lång tid
Om en task fortsätter sitta i ”In Work” kolumnen dag ut och dag in gör vi alla uppmärksamma på detta med denna ikon. Uppenbart så pågår något underligt. Antingen så är personen störd av andra åtaganden, eller så behöver han/hon hjälp. Oavsett vad, något lurt pågår.
Pausat
Av någon anledning kan vi för tillfället inte jobba vidare med denna task. Antingen väntar vi på svar eller information från någon utanför teamet, eller så kanske personen som jobbade på uppgiften gått och blivit sjuk.
Frustration!
Med denna ikon delar vi med oss av den frustration vi upplever. Häromdagen hade en om samma task tre stycken frustrationsikoner. Så jobbigt var det att få ordning på den.
Defekter spökar
Denna ikon har vi använt lite olika men nu verkar det som om vi börjat använda den för att signalera att systemtesterna inte nått i mål på grund av funna buggar.
Färdig 🙂
För att komma ihåg vad man gjorde dagen innan så placerar man denna ikon på tasken när man flyttar in den i ”Finished” kolumnen. Då blir det mycket enklare att summera gårdagen på nästa Daily Stand-Up.
.För att tydligare visualisera vilka funktioner som är redo för systemtest och vilka som är redo för acceptanstest har vi nyligen skapat ytterligare några ikoner. Det visade sig att det inte var uppenbart enbart genom att kolla av i vilken kolumn våra Task-lappar satt för att avgöra i vilken miljö featuren fanns i.
Awaiting ST Deploy
När utvecklaren känner sig färdig och redo med funktionen och har gjort grundläggande testning i sin egen utvecklingsmiljö är koden redo att läggas upp i Systemtest (ST) miljön. Detta markerar vi genom att placera denna ikon på den stora Feature-lappen.
System test Ready
När funktionens kod har hamnat i ST-miljön (efter ett sk ”lyft”) markeras Feature-lappen med denna ikon. Det betyder att Systemtest-fall är skrivna och att vem som helst (förutom personen som utvecklade funktionen) kan påbörja systemtestning.
Awaiting AT Deploy
När systemtest är genomförd och teamet känner att funktionen är av tillräckligt hög kvalitet för att lyftas till acceptanstest (AT) miljön placeras denna ikon på Feature-lappen.
Acceptance test Ready
Denna ikon signalerar att funktionen finns i acceptanstest miljön. Dvs. när uppgradering sker av AT-miljön byts ”Awaiting AT Deploy” ut mot denna ikon. Det kan finnas kända problem, men den håller tillräckligt hög kvalitet för att teamet ska vara redo att ta emot feedback från acceptanstestning.
h1

Q: Hur estimera buggrättningar i Scrum?

torsdag, 2 februari, 2012

Titt som tätt får jag frågor från kollegor på Sogeti, kollegor ute hos kund eller från personer ute i vårt avlånga land som på ett eller annat sätt handlar om Scrum och Agile. Jag tänkte jag skulle börja dela med mig av dessa konversationer.

Jag vill också uppmuntra dig att maila mig om du just nu tampas med något problem eller frågeställning i just ditt projekt och önskar input och reflektioner från mitt håll. Jag ska göra mitt bästa för att svara på alla mail som kommer in och kommer att publicera valda frågor och dialoger här på bloggen (eventuellt i förkortad och redigerad form). För att maila mig, leta rätt på mail-ikonen i högerspalten.

Jag börjar på en gång och delar med mig av en fråga från en kollega jag fick i början av veckan 🙂

.


Q: Hur estimera buggrättningar i Scrum?

Hej!

Just nu försöker jag köra mitt första scrum-projekt. Det har då uppstått en del diskussioner i projektet ang estimering och rapportering av tid för bug-rättningar. (—)

Bör man lägga in en task för bug-rättning per User Story, eller bör man ta med tid för bug-rättning i estimatet för utveckling? Om man väljer det senare alternativet så blir ju utvecklingstask inte klara förrän test och rättning är klara.

Finns det någon tum-regel för hur mycket tid man bör estimera för bug-rättning?

Tacksam för goda råd!

Mvh
/###### 


Svar: 

Hej ######,

Angående estimeringar…

Det finns några olika approacher till detta…

  1. Anpassa Velocity – Anpassa velocity för varje sprint (dvs. antalet Story Points teamet committar till under sprint planeringen) så att det finns utrymme (luft) i sprinten att hantera buggrättningar parallellt med att man levererar funktioner och Story Points. Detta betyder att teamet under Sprint Planeringen bara committar till så många Story Points som man historiskt sett faktiskt klarar av att leverera under Sprinten.
  2. Skruva ner ”effektiv” arbetstid – Dra ner ”effektiv” arbetstid vid sprintplanering. Dvs. om man räknar med 6 effektiva timmar om dagen, räkna med fem istället. (Egentligen en version av 1:an.)
  3. Bugg-fix tasks till varje Story – Lägg till en task ”Buggfixning” med ett estimat (i timmar) för varje User Story. Ibland tar det längre tid, ibland blir det färre buggar rapporterade. Förhoppningsvis lär sig dock teamet justera storleken på dessa bugg-tasks allt bättre för varje sprint som går.
  4. Bugg-fix bucket Story – Lägg till en Story (Generell Buggfixning) till vilken man sätter en buffert med timmar att räkna av ifrån när man fixar buggar. När denna hink med timmar är slut lägger man bugg till produktbackloggen eller tar en diskussion med produktägaren om hurvida någon annan User Story ska senareläggas till förmån för buggfixning.

Vilken approach man väljer är egentligen upp till teamet. Välj den taktik som får arbetet och planering att flyta smidigast och som möjliggör snabbast hantering av buggfixning och som hjälper teamet leverera färdig, värdefull och testad mjukvara varje sprint.

Jag tycker inte att man ska betrakta en User Story som färdig förrän den är färdigkodad och färdigtestad i sprinten. Dvs svar ja: en User Story uppfyller inte DONE förrän den är kodad och testad.

Väntar man med testning och buggrättning till sprinten efter så har man naggat rejält i kanten på sin agilitet, introducerat risker och förlängt feedback-looparna samt försämrat insikten i vilken progress projektet faktiskt gör.

Angående rapportering…

Finns det externa krav på teamet (för att t.ex. kunna sortera isär arbetade timmar till olika budgetar) behöver man kanske rapportera och följa upp hur mycket tid som lagts på buggfixning och kanske till och med hur mycket buggfixning det blev för respektive User Story. Generellt finner jag dock inget värde i att logga arbetad tid på sådan detaljnivå då det oftast är svårt att omsätta denna typ av historik till användbar kunskap inför nästa planering. Men självklart, om det faktiskt hjälper teamet att göra bättre och träffsäkrare planering med sådan typ av historisk data – då ska man självklart göra det.

Att redovisa buggfixningstiden (för de User Stories man jobbar i pågående sprint) separat tycker jag är en väldigt dålig idé. Att utveckla betyder att man kodar, testar, fixar, tänker om, planerar nästa steg, kodar, testar, fixar, osv. tills det är klart. Det är så utveckling fungerar. Att fixa buggar på det man håller på med för stunden är en naturlig del av utveckling. Redovisas det separat riskerar man trilla i fällen att uppfinna sub-optimala lösningar för att parera detta. Alla sub-optimala lösningar saboterar alltid helheten.

Bugg-fixningstid som spenderas på features och funktioner som redan levererats tycker jag dock bör loggas separat. Denna tid är att betrakta som Waste då det faktiskt är olyckligt merarbete som beror på att man inte haft en tillräckligt bra teststrategi tidigare sprintar. Teamet ska dessutom hållas ansvariga för att ständigt förbättra sin testprocess och teststrategi så att kvalitén varje sprint blir högre och allt mindre tid behövs spenderas på att städa upp gamla misstag.

Mvh
/Jimmy