SLIDE 1 How Long Will It Take?
A Guide to Software Estimation by Jared Faris @jaredthenerd jaredthenerd.com
SLIDE 2 This work is licensed under http://creativecommons.org/licenses/by-sa/4.0/
SLIDE 5 The Team
The Perfectionists Magical resistant to deadlines +5 adding too much value
SLIDE 6 Software Development
SLIDE 7 So I have this idea. <details>
SLIDE 8 So I have this idea. <details> Ooh, we can add <stuff>
SLIDE 9 <more stuff> <and things!>
SLIDE 10 A New Character Appears!
SLIDE 11 THE BOSS
Product Owner Talks to Customers Signs Paychecks
SLIDE 12 That’s great team, but…
SLIDE 13 How long will it take?
SLIDE 14
How Long Will It Take?
SLIDE 15 Why Does It Matter?
- Software isn’t built in a vacuum
- If a project has no ROI, why do it?
- You can’t prioritize without data
SLIDE 16
Real World Examples
SLIDE 17
SLIDE 18
SLIDE 20
SLIDE 21
BIG or little
SLIDE 22 Today’s Topics
- What are estimates?
- Why don’t we like them?
- Pre-requisites to estimating
- Types of estimates and how to perform them
- How to communicate with estimates
SLIDE 23
So What Are These Estimates, Really?
SLIDE 24
SLIDE 25
How Are Estimates Perceived?
SLIDE 26
SLIDE 27 That’s not funny…
SLIDE 28
How Do We Make This Work?
SLIDE 29 We Need To
- Get better at estimating
- Get better at communicating
SLIDE 30 Can You Be Good At Estimating?
Artist Unknown
SLIDE 31
Objections
SLIDE 32 When will this ship?
SLIDE 33 When will this ship? Who knows?
SLIDE 34 We don’t do estimates! We don’t want to be held accountable! Requirements change too
This slide looked unbalanced without me!
SLIDE 35 We Don’t Do Estimates
We Don’t Estimate Hours
SLIDE 36 http://bit.ly/FixedBidAgile
SLIDE 37
We Can’t Estimate Because Requirements Change So Often
SLIDE 38 https://ardalis.com/5-laws-of-software-estimates
SLIDE 39
If We Don’t Estimate, We Won’t Be Held Accountable
SLIDE 40 So how long will it take? We’ll figure it out.
SLIDE 41
SLIDE 44
How Do We Get Started?
SLIDE 45 Prerequisites To Estimating
- Scope
- Constraints
- Assumptions
SLIDE 46 Types of Work
- Planning
- Requirements Gathering
- Designing
- Development
- Testing
- Documentation
- Training
- Deployment
- Etc
SLIDE 47
Estimation Methods
SLIDE 48 Estimation Dice!
SLIDE 49 Types of Estimates
- SWAGs
- Top-Down Estimates
- Bottom-Up Estimates
SLIDE 50
Fermi Estimation
SLIDE 51
SLIDE 52 What a nerd *Nobel* laureate nerd
SLIDE 53 Fermi Estimation
- There are approximately 9,000,000 people living in Chicago.
- On average, there are two persons in each household in Chicago.
- Roughly one household in twenty has a piano that is tuned regularly.
- Pianos that are tuned regularly are tuned on average about once per year.
- It takes a piano tuner about two hours to tune a piano, including travel time.
- Each piano tuner works eight hours in a day, five days in a week, and 50 weeks
in a year.
After all of these assumptions, it’s just math.
Source: http://en.wikipedia.org/wiki/Fermi_problem
SLIDE 54 How To Fermi Estimate
- Make high level assumptions
- Approximate everything
- Combine your assumptions and approximations
- Win a Nobel Prize
SLIDE 55 Applied Fermi Estimation
- There are approximately 20 stakeholders involved in this project
- Each stakeholder interview will take 30 minutes
- Documenting the outcome from each interview will take 2 hours
- We’ll average 3 interviews a day
- 25% of our days won't have any interviews
- Minutes of work: 20 * (120 + 30) = 3,000 minutes
- Days of work: 3000 / (8 * 60) = 6.25 days
- Total days: 6.25 / .75 = 8.3333 days
SLIDE 56 Fermiburger
- I have 8 people coming over for dinner
- My grill can hold 4 burgers at a time
- Each burger takes 3 minutes to cook, per side
- Each person eats 2 burgers
- Assumption: Other people bring the sides and set them out
- Assumption: I’ll only spend a minute between burger sprints
- 8 people * 2 burgers each = 16 burgers => 4 burger sprints
- 4 sprints * 7 minutes each = 28 30 minutes of cooking (round)
- 15 minute grill heat + 30 minutes cooking = Dinner in 45 minutes
Source: Iconshock
SLIDE 57
Fermi Estimation Pros & Cons
SLIDE 59
Top-Down Estimates
SLIDE 60
SLIDE 61 Top-Down Estimate Steps
- Identify the size and shape of a project
- Look for analogs
- Identify where they are like and unlike
- Size the new project relatively
SLIDE 62
Top-Down Example
SLIDE 63
Top-Down Estimation (Cont)
SLIDE 64
Iteration Planning
SLIDE 65
Top-Down Pros & Cons
SLIDE 66 Ok… and?
Top-Down makes sense. What’s next?
SLIDE 67
Bottom-Up Estimates
SLIDE 68 Source: http://bit.ly/1xQEgLp
SLIDE 69 Source: http://bit.ly/1xQEgLp
SLIDE 70 Bottom-Up Estimate Steps
- Break the project down into smaller components
- r “widgets”
- Estimate each widget
- Add up the estimates
SLIDE 71
Bottom-Up Example
SLIDE 72
SLIDE 73 Widgets
- WCF service endpoint hosted in AcmeApp
- WCF call
- Tracking models
- AcmeApp Tracking Contract implementation
- AcmeApp Module creation
- Data-service call (to existing DS)
- Cache mechanism
- Error handling call
- TrackingCo API discovery/research
SLIDE 74
Complexity
SLIDE 75
Counts
SLIDE 76
Multiply + Add
SLIDE 77 Rest of the Work
- Estimate it precisely based on specific work
- Estimate it roughly based on ratios
SLIDE 78 Ratio Estimations
Source: http://bit.ly/1O0ICmR
SLIDE 79 What about ____? And _____? _____? Captured that! That too! Yep!
Capture Everything
SLIDE 80
Bottom-Up Pros & Cons
SLIDE 81
Burger Buffet Method
SLIDE 82
Already Doing This?
SLIDE 83 What about risk?
SLIDE 84
We Aren’t “Guessing”
SLIDE 85
Contingency
SLIDE 86 Estimating Contingency
- Look at your assumptions
- Determine which ones are internal
- Estimate likelihood and impact
- Determine your risk
- Go with 30%
SLIDE 87
The Risk Is The Risk
SLIDE 88 Let’s go with 100% contingency Ooooh Good idea!
SLIDE 89 Let’s go with 100% contingency Ooooh Good idea! What’s that?
SLIDE 90 Estimates as Communication
Estimates are useful for:
- Describing what is and isn’t included
- Pushing back on unrealistic plans
- Communicating team needs to management
- Communicating business goals to teams
- Explaining the cost of change
SLIDE 91
You’re Not Done Estimating
SLIDE 92 Summary
- Estimation is a skill
- Account for ALL of the work in a project
- Don’t pad - calculate risk
- Communicate what you did and didn’t estimate
- Don’t panic, you can do this
SLIDE 93 Software Estimation - Demystifying the Black Art
Steve McConnell
SLIDE 94 Thank You!
by Jared Faris @jaredthenerd jaredthenerd.com