Planning for Contract Agile Projects

728 views

Published on

Published in: Technology, Business
  • Be the first to comment

Planning for Contract Agile Projects

  1. 1. Mike CohnCopenhagen31 January 2012Planning forContract AgileProjects1
  2. 2. © Copyright Mountain Goat SoftwareFounding member anddirector of Agile Allianceand Scrum AllianceFounder of MountainGoat SoftwareDoing Scrum since 1995Started my career as aprogrammerVP Engineering in 4companiesMike Cohn®2
  3. 3. © Copyright Mountain Goat Software®User stories &velocity3
  4. 4. © Copyright Mountain Goat Software®User storiesAs a sports announcer, Ican see a list of allathletes in an event.As a sports announcer, Ican view details abouta specific athlete.As a content editor, Ihave basic control overhow data is formatted.As a content editor, Ihave basic control overhow data is formatted.“As a <user role>, Iwant/can/am able to<goal> so that<reason>.”A template4
  5. 5. © Copyright Mountain Goat Software®A requirements documentAthlete browsingAs a sports announcer...1. I can view details about a specific athlete• Name (multiple, could be long, includepronunciation)• Nickname (include pronunciation)• Prior performance at Olympics• World and Olympic records held• Interesting anecdotes2.I can bookmark athletes of interest• At least 200 bookmarksAs a content editor...3.I have basic control over how data is formatted5
  6. 6. © Copyright Mountain Goat Software®As a sports announcer, I cansee a list of all athletes inan event.As a content editor, I havebasic control over how datais formatted.1056
  7. 7. © Copyright Mountain Goat Software®VelocityAn iteration410 13Velocity = 157
  8. 8. © Copyright Mountain Goat Software®0102030401 2 3 4 5 6 7 8 9IterationsVelocity8
  9. 9. © Copyright Mountain Goat Software®❸Fixed-everythingprojects❷Fixed-date &projects❶Planning withhistorical data9
  10. 10. © Copyright Mountain Goat Software®Calculate a confidence interval fromhistorical data27343538394040414590% confidenceinterval# ofhistoricaliterationsIterations tothrow outfrom eacheach end0–7 08–10 111–12 213–15 316–17 418–20 521–22 623–25 726+ 8Sorted Velocities10
  11. 11. © Copyright Mountain Goat Software®Extrapolate from the velocity rangeProductBacklogAssume thereare fiveiterations leftWe’ll almost certainly get here (5×34=170)The most we can realistically expect (5×41=205)11
  12. 12. © Copyright Mountain Goat Software®Use the online velocityrange calculator atmountaingoatsoftware.com/tools12
  13. 13. © Copyright Mountain Goat Software®Fixed-date13
  14. 14. © Copyright Mountain Goat Software®Fixed-date planningThree steps1. Determine how many iterationsyou have.2. Estimate velocity as a range.3. Use that range × the number ofiterations to partition the backloginto Will Have, Might Have, andWon’t Have.14
  15. 15. © Copyright Mountain Goat Software®Count the iterationsAPRIL181522292916233031017244111825512192661320277142128SUN MON TUE WED THU FRI SATMAY61320277142128181522292916233031017243141118255121926SUN MON TUE WED THU FRI SATJUNE61320277142128181522292916233031017243141118255121926310172441118255121926613202771421281815222929162330SUN MON TUE WED THU FRI SAT15
  16. 16. © Copyright Mountain Goat Software®Determine a velocity range01020304050StoryPointsIterations302125342530 29 2916
  17. 17. © Copyright Mountain Goat Software®ProductBacklogMight haveWon’t haveWill have6×25Determine what to commit toIf you promise thisYou probably won’t getthe contracteverything if you doIf you promise thisYou will probably winthe contracteverything in time17
  18. 18. © Copyright Mountain Goat Software®Balancing riskLowExpectationRiskDelivery RiskLow HighHighPromise JusttheWill-HavesPromise AlltheMight-Haves18
  19. 19. © Copyright Mountain Goat Software®Fixed-scopeprojects19
  20. 20. © Copyright Mountain Goat Software®Fixed scope planningThree steps1. Sum the product backlogitems.2. Estimate velocity as a range.3. Use the sum of the backlogdivided by the velocityrange to determine a daterange.20
  21. 21. © Copyright Mountain Goat Software®= 120 story points}=15–200510152025StoryPointsIterations21
  22. 22. © Copyright Mountain Goat Software®120 ÷ 15 =JUNE61320277142128181522292916233031017243141118255121926310172441118255121926613202771421281815222929162330SUN MON TUE WED THU FRI SATJANUARY71421281815222929162330310172431411182551219266132027SUN MON TUE WED THU FRI SATFEBRUARY41118255121926613202771421281815222916233101724SUN MON TUE WED THU FRI SATMARCH41118255121926613202771421281815222929162330310172431SUN MON TUE WED THU FRI SATAPRIL181522292916233031017244111825512192661320277142128SUN MON TUE WED THU FRI SATMAY61320277142128181522292916233031017243141118255121926SUN MON TUE WED THU FRI SATJULY18152229291623303101724314111825512192661320277142128SUN MON TUE WED THU FRI SATAUGUST51219266132027714212818152229291623303101724314111825SUN MON TUE WED THU FRI SAT120 ÷ 20 =JUNE61320277142128181522292916233031017243141118255121926310172441118255121926613202771421281815222929162330SUN MON TUE WED THU FRI SATJANUARY71421281815222929162330310172431411182551219266132027SUN MON TUE WED THU FRI SATFEBRUARY41118255121926613202771421281815222916233101724SUN MON TUE WED THU FRI SATMARCH41118255121926613202771421281815222929162330310172431SUN MON TUE WED THU FRI SATAPRIL181522292916233031017244111825512192661320277142128SUN MON TUE WED THU FRI SATMAY61320277142128181522292916233031017243141118255121926SUN MON TUE WED THU FRI SATIf you promise the longdurationYou probably will notget the contractBut it should be easy toIf you promise the shortdurationYou probably get thecontracteverything in time22
  23. 23. © Copyright Mountain Goat Software®Balancing riskLowExpectationRiskDelivery RiskLow HighHighPromise thelate FinishPromise theearly finish23
  24. 24. © Copyright Mountain Goat Software®Fixed-everythingprojects24
  25. 25. © Copyright Mountain Goat Software®A fixed-scope projectTimeScopeI want thismuch. Whencan I get it?25
  26. 26. © Copyright Mountain Goat Software®A fixed-date projectTimeScopeWe need it on thisdate. How much canwe have by then?26
  27. 27. © Copyright Mountain Goat Software®• Use a rangeStep 1: Estimate velocity• Divide fixed scope by the velocity range• Draw the vertical linesStep 2: Fix the scope• Determine the number of iterations the team has• Multiply by the velocity range• Draw the horizontal linesStep 3: Fix the schedule27
  28. 28. © Copyright Mountain Goat Software®A fixed-everything projectTimeScopeImpossibleProbableUncertain28
  29. 29. © Copyright Mountain Goat Software®Fix the scopeIterationsScopeGoal: Deliver 200 units of work in 10 iterationsVelocity = 16–22200 / 22 =200 / 16 =9.112.5200 points in10 iterations.Fix the date10×16 =10×22 =16022029
  30. 30. © Copyright Mountain Goat Software®Estimatingvelocity30
  31. 31. © Copyright Mountain Goat Software®Iteration planning5318353 Code the … 8Test the … 5Confirm … 2Code a … 12Test the … 4Code the … 6Automate … 8Iteration Plan31
  32. 32. © Copyright Mountain Goat Software®Consider this teamPerson Hours/Day Hours / IterationSergey 4–6 40–60Yuri 4–6 40–60Carina 2–3 20–30Tootal 100–15032
  33. 33. © Copyright Mountain Goat Software®Establishing their velocity100–150 hours per iterationCapacityCode… 12Design … 6Test … 8Decide … 8Automate … 12… 224622Story PointsAs a frequentflyer …3As a visitor … 5As a vacationplanner …5As a frequentflyer …2Code… 8Test … 6Design … 12Test … 5… 48314833
  34. 34. © Copyright Mountain Goat Software®Trackingprogress34
  35. 35. © Copyright Mountain Goat Software®A relelase burndown chartStoryPointsIterations10001 2 3 4 520030040035
  36. 36. © Copyright Mountain Goat Software®mike@mountaingoatsoftware.comwww.mountaingoatsoftware.comtwitter: mikewcohn(888) 61-AGILEMike Cohn36

×