Presentation from the Daycamp4Developers virtual conference talking about how to estimate for software projects, and how to keep track of how those estimations are working out.
Is Estimating Important? • One of the two most common causes of runaway projects is unstable requirements • One of the two most common causes of runaway projects is optimistic estimation (from IEEE: http://lrnja.net/10DRtB4)
Example User Stories • As a user, I want to see details of a talk so I can find out about it • As an admin, I want to be able to edit details of a talk so I can make changes • As a speaker I want to be able to claim a talk so it will be listed on my account • As a user, I want to rate and comment on a talk so that I can give feedback to the speaker
Ground Rules of Estimation • Only a person capable of completing a task can estimate it • If a task is estimated at more than half a day, the task should be split • If a task cannot be estimated, steps should be taken to reduce the unknowns
Planning Poker Uses the wisdom of crowds to get an accurate estimate. You will need: • 3+ players and a facilitator • Detailed list of tasks • Deck of Planning Poker cards, or equivalent
How To Play Planning Poker • Take each task in turn • Facilitator describes the task • At a signal, players estimate • Estimates are close, use average • If estimates differ, task is too vague • Quickly redefine and re-estimate
Risk Risks deserve our recognition and respect Try to mitigate risks: • Identify them • Single points of failure: look for alternatives/redundancy • Unknowns: "spike" to reduce the unknown aspect
Tracking Estimates Each task has an estimate • After working on a task, re-estimate how much work is left in that task • When it's done, estimate goes to zero • Track these per-day to get burndown chart
Measuring Project Velocity As well as updating estimates, track time spent per task. For completed tasks, divide estimate/actual to get velocity. Use as a multiplier to correct future estimations
How to Deliver a Project on Time • Make excellent estimates • Work out how much time there is • Schedule in a plan • Measure progress • Adjust as required