Henrik Kniberg - Crisp AB Agile coach & Java guy Lita på mig Cofounder / CTO of Goyada (mobile services) 30 developers Lead architect at Ace Interactive (gaming) 20 developers Chief of development at Tain (gaming) 40 developers Agile coach at various companies henrik.kniberg@crisp.se +46 70 4925284 Löften & lögner i agila projekt Agile i Sverige 2008 Stockholm 2008-11-11
400 års erfarenhet Henrik Kniberg 2
Henrik Kniberg 3
Varför är det så svårt? IT project success rate 1994: 15% IT project success rate 2004: 34% Jim Johnson, Chairman of Standish Group: The primary reason [for the improvement] is that projects have gotten a lot smaller. Doing projects with iterative processes as opposed to the waterfall method, which called for all project requirements to be defined up front, is a major step forward. Source: http://www.softwaremag.com/l.cfm?doc=newsletter/2004-01-15/standish The Standish Group has studied over 40,000 projects in 10 years to reach the findings. Agile project success rate 2008: 75% XP 8% Other 21% Scrum & XP 22% Scrum 49% Features and functions used in a typical system: Never 45% Always 7% Often 13% Sometimes 16% Source: 3rd Annual State of Agile Development Survey June-July 2008 3061 respondents 80 countries Rarely 19% Source: Standish Group Study Reported at XP2002 Henrik Kniberg by Jim Johnson, Chairman 4
3000 års erfarenhet Henrik Kniberg 5
Dec 2005 Henrik Kniberg 6
Viskleken Det kommer aldrig gå! Det blir mycket svårt. Det kan gå! Vi kommer klara det! Henrik Kniberg 7
Vad är det för fel på kontrakt? Problem med stora detaljerade kontrakt: För många beslut för tidigt För mycket fokus på att uppfylla sin del av kontraktet istället för att samarbeta Symptom på brist på tillit Samarbete bygger på tillit. Tillit bygger på att man inte ljuger. Henrik Kniberg 8
Lögn Svenska akademiens ordbok: Påstående eller uppgift som strider mot sanningen Ordet undvikes gärna i vårdat eller hovsamt tal och ersättes med något mildare ord, t. ex. osanning eller dylikt. Wikipedia: En lögn är en oriktig utsaga som uttalas såsom varande sann, med avsikt att få dem som tar del av utsagan att anta dess riktighet trots att den som uttalar den vet att den är osann. När en lögn blir "upptäckt" av den andra personen så brukar den ta illa upp då det är falskt att ljuga. Henrik Kniberg 9
Exempel på lögner? Att säga något som jag vet inte är sant Det snöar just nu NÅGONSTANS snöar det iaf... Att undanhålla sanningen Jag tror inte att systemet kommer klara prestandakraven, men jag säger inget Vi kanske hittar en lösning. Eller så kanske kunden accepterar systemet ändå. Att säga något som jag inte vet är sant (dvs handla i god tro) Systemet är klart till jul Vi är i fas med tidplanen... men han kanske saknar data?... han kanske inte ens vet vad han inte vet? Henrik Kniberg 10
Är det lögn att ändra sig? Jag menade det när jag sa det. Men sedan ändrade jag mig. Jag lovade att vi skulle bli klara till jul, men sedan kom det viktigare grejor i vägen. Jag lovade att vi skulle bli klara till jul. Men sedan började du ändra i kraven. Henrik Kniberg 11
Så vad är egentligen en lögn? Mest gråzoner Handlar mycket om uppsåt & förväntningar Henrik Kniberg 12
Varför ljuger vi uppsåtligt? Tillmötesgående Upprättahålla ett dåligt löfte (lögn föder lögn) Skjuta på smärtan Som man frågar får man svar Är ni i fas med tidplanen? Eller kommer projektet gå åt &%$! och alla får sparken? Henrik Kniberg 13
Varför ljuger vi ouppsåtligt? Tvingas göra utfästelser trots brist på data Vi kommer vara klara till jul Blir överkörd Men det här borde väl inte ta mer än en månad, ni är väl proffs? När JAG var utvecklare än gång i tiden minsan... det finns ingen data som stöjder det, men det finns ingen data som säger emot heller och jag vill inte vara jobbig Överambition Vi kommer vara klara till jul Vi BORDE ju klara det Henrik Kniberg 14
Hur undviker vi att ljuga? Enda säkra sättet är att aldrig lova någonting. Men är det OK? Är det samarbete? Finns det löften som inte är lögner? Henrik Kniberg 15
Vad är ett löfte? Vi lovar att vara klara till jul Vi kommer vara klara till jul Enligt vårt estimat är vi klara till jul Vi planerar att vara klara till jul Ett enkelt sätt att se på det: Allting du säger är ett löfte! Henrik Kniberg 16
Alla löften innehåller risk Jag lovade att systemet var i drift - men jag var felinformerad. Det var bara en prototyp. Jag lovade visserligen att vi skulle blir klara till jul, men...... och tvetydigheter Bollen är rund Systemet är i drift Vi kommer vara klara till jul...om du inte mäter allt för noggrannt...men inte riktigt redo för användning...men systemet kommer inte vara stabilt Henrik Kniberg 17
Ett ärligt löfte Jag tror på det jag säger Jag kan ha fel Jag kör med öppna kort Jag hör av mig ifall jag inte längre tror på det jag sa Henrik Kniberg 18
Exempel: en dödsdömd plan Planen (dödsdömd, men vi vet inte om det ännu) Week 1 Week 2 Week 3 Week 4 A C B D Traditionellt scenario Vi levererar ABCD på 4 veckor Hoppsan, vi blev sena. A C B D Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Agilt scenario Vi levererar alltid något varje sprint (4 veckor) Vi tror att vi hinner ABCD på 1 sprint, men vi är inte säkra Vi levererar alltid det viktigaste först Week 1 Week 2 Week 3 Week 4 A A B E Week 5 Week 6 Week 7 Week 8 B D Hoppsan, vi hann bara med AB. Vår velocity är lägre än vi trodde. Henrik Kniberg Vad ska vi göra nu? 19
Löften i agila projekt Definition of done Sprintar Sprint plan Taskboard Daily scrum Velocity Sprint review/demo Release plan V Apr 2008 May 2008 June 2008 Q3 2008 Q4 2008 2009 Henrik Kniberg 20
Kontrakt Mindre agilt Mer agilt Fast allt (pris/scope/tid) Money for nothing, change for free Löpande räkning Bygger på tillit Problem: Det krävs tillit för att få tillit Henrik Kniberg 21
Money for nothing, change for free Option #1 Kontrakt Pris: 10 Mkr Tid: 1 år Scope: Krav Features and functions used in a typical system: Never 45% Always 7% Often 13% Sometimes 16% Krav Change for free så länge kvarvarande scope inte ökar (dvs om något nytt ska in så ska något annat ut) Option #2 Money for nothing Kund kan avsluta projektet i förtid. Kostar bara 20% av återstående belopp. Rarely 19% Source: Standish Group Study Reported at XP2002 by Jim Johnson, Chairman Onödiga features som borde bort (men vi vet ännu inte vilka) Viktiga features som borde in (men vi vet ännu inte vilka) Henrik Kniberg 22
Change for free Option #1 Change for free så länge kvarvarande scope inte ökar (dvs om något nytt ska in så ska något annat ut) Behöver denna också! ROI Jag vill höja prio på denna! Skippa denna! Time 23
Money for Nothing! Plan: Pris: 10 Mkr Tid: 12 månader Option #2 Money for nothing Kund kan avsluta projektet i förtid. Kostar bara 20% av återstående belopp. Utfall: Pris: 5+1 Mkr Tid: 6 månader ROI Leverantör får 20% av återstående pris Kund sparar 80% av återstående pris ROI cutoff Avsluta! Time 24
Löften & lögner i agila projekt Första steget mot att bli agil är att bestämma sig för att sluta ljuga i alla led! Eliminera uppsåtet för lögn Minimera behovet av löften Henrik Kniberg 25
Hur ersätta löften med tillit? Gemensamma mål Lära känna varann Win/win och lose/lose upplägg Korta cykler Regelbunden leverans & uppföljning Symmetriska iterationer Full transparans Full insyn, alla har tillgång till samma data Fail-fast kultur Saknas data, utgå ifrån det värsta & ta fram data. Ibland måste löften brytas. Gör det tidigt i så fall! Req. Design Code Test Vems fel var det? Vem ska bestraffas? Vad ska vi göra åt problemet, och hur ska vi undvika liknande problem i framtiden" Henrik Kniberg 26
Slutkläm: Vi vet vad vi har men inte vad vi får! Se till att veta vad du har. Sluta låtsas veta vad du får. Allting om framtiden är estimat & uppskattningar. Ersätt onödiga löften med feedback loops & transparans. Bygg tillit. Börja smått. 3400 års erfarenhet kan väl inte ha fel... Henrik Kniberg 27