Estimating Projects with Agile
NB: Scroll to the bottom for the short version.
I have a 7 year history of managing projects with Agile. Early, I failed because I didn’t practice Agile seriously. The mistakes I made early in my Agile career are still being made by numerous companies. So, here I’m giving up the “secret” of why following Agile strictly works. It’s an effort to get there but it is worth it if your business wants to achieve the Agile promise of on-time and on-budget delivery.
Doing Agile right
Most organizations practice a weak form of Agile. When looking at those organizations I assess if they’re delivering higher quality software, on-time, on-budget with measurable business value. Here are the key artifacts you get when doing Agile right:
- Consistent iteration velocity
- Green builds
- High unit code coverage (92%)
- Low defect kill rate (less than a day)
- Automated builds
- Low code duplication percentage (<2%)
You have a well functioning team if you have all of these. You are delivering consistently. You will be able to successfully estimate delivery of a new project. Any estimate padding is more of a security blanket or contingency fund. I use 20% to cover for staff changes, holidays, family leave, sick days, etc.
Your estimates will need quite a bit of extra padding if you are missing some. You may need to pad as much as 100% if you aren’t doing any of these.
Commonly, I’m asked how I estimate projects, in terms of both time and money. This is easy if you have reliable Agile metrics. Here’s the process I use:
Calculating the delivery time
- Estimate the entire story in points
- Find your weekly point velocity
- Divide #1 by #2 to find your realistic delivery time frame
- Calculate the weekly cost of the development team
- Multiply #3 by #4 to find your realistic development cost
- Multiply both values by 1.2 for a 20% padding
- You’ve rough estimated a project for 160 points
- Your current team is getting 8 points a week
- The project will take about 20 weeks (160/8)
- Padded, this is 24 weeks
- Your entire development team costs $250K year (small team!)
- Your cost per week is $4,807
- The project will cost $96,152 (24 * $4,807)
- Padded, this is $115,382 (1.2 * $96,152)
This is very reliable for me. Many of the details require an experienced Agile manager. Skills required for this analysis:
- Calculating points for the stories
- This requires skill and experience
- Picking a padding factor
- You won’t have all the stories in the beginning. I find that I have about 80% of them though. A 200 point backlog takes me about one week to build.
- Knowing the average team velocity
- This requires having consistently measured the team.
The three above metrics are built upon solid Agile practice skills:
- Building and maintaining a backlog
- Actionable requirements
- Completing stories on time
- Focus on quality
- Ruthless meetings
Many organizations and teams claim to be “Agile”. Most are not. Hire an experienced Agile manager if you want to deliver high quality software, on-time, on-budget, in a repeatable and measurable way.