Estimation
Or,“How to Dig your own Grave”
Rowan Merewood
Who
Who
● Software Engineer● & Team Lead● at Ibuildings
Who
● Software Engineer● & Team Lead● at Ibuildings
● @rowan_m
Why
Why
● I've seen (& made) mistakes
Why
● I've seen (& made) mistakes
● You can avoid them
Why
● I've seen (& made) mistakes
● You can avoid them
● Make your own
What could possibly go wrong?
Sales create estimates
Sales create estimates
● Use skills correctly
Sales create estimates
● Use skills correctly● Send a dev with sales
Sales create estimates
● Use skills correctly● Send a dev with sales
● If you're sales & dev...
Sales create estimates
● Use skills correctly● Send a dev with sales
● If you're sales & dev...
remember which hat you're wearing
Lone developer creates estimates
Lone developer creates estimates
● It's ok, he's a ROCKSTAR
Lone developer creates estimates
● It's ok, he's a ROCKSTAR
● Independent estimates
Lone developer creates estimates
● It's ok, he's a ROCKSTAR
● Independent estimates
● Or, at least review
Estimate from detailed task lists
Estimate from detailed task lists
● You know it will change
Estimate from detailed task lists
● You know it will change
● Gives misplaced confidence
Estimate from detailed task lists
● You know it will change
● Gives misplaced confidence
● Encourages micro-management
Estimate a day as 8 hours
Estimate a day as 8 hours
● 16 hr. task == 2 days
Estimate a day as 8 hours
● 16 hr. task == 2 days(ha ha – you're cute)
Estimate a day as 8 hours
● 16 hr. task == 2 days(ha ha – you're cute)
● You are not a code machine
Estimate a day as 8 hours
● 16 hr. task == 2 days(ha ha – you're cute)
● You are not a code machine
● Even if you are,your team is not
Estimate a day as 8 hours
● 16 hr. task == 2 days(ha ha – you're cute)
● You are not a code machine
● Even if you are,your team is not
● Dev: 6 hr. Lead: 4 hr.
Estimate in hours
Estimate in hours
● Still too much detail
Estimate in hours
● Still too much detail
● Use ¼ days
Estimate in hours
● Still too much detail
● Use ¼ days● ¼, ½, 1, 2, 3 days
Estimate in hours
● Still too much detail
● Use ¼ days● ¼, ½, 1, 2, 3 days
● 1, 3, 5, 7 days
Estimate in hours
● Still too much detail
● Use ¼ days● ¼, ½, 1, 2, 3 days
● 1, 3, 5, 7 days● Larger increments,
larger projects
Just estimate coding time
Just estimate coding time
● Remember your overheads
Just estimate coding time
● Remember your overheads
● Remember team overheads
Just estimate coding time
● Remember your overheads
● Remember team overheads
● Think about dependencies
Estimates as commitments
Estimates as commitments
● Well, yes and no...
Estimates as commitments
● Well, yes and no...
● List and quantify risk
Estimates as commitments
● Well, yes and no...
● List and quantify risk● Estimates != schedule
Waterfall estimates are useless
Waterfall estimates are useless
● Fine, stop calling yourself an engineer
Waterfall estimates are useless
● Fine, stop calling yourself an engineer
● Lots of work in“off-the-shelf” tasks
Waterfall estimates are useless
● Fine, stop calling yourself an engineer
● Lots of work in“off-the-shelf” tasks
● Cone of Uncertainty
Agile means we can't estimate
Agile means we can't estimate
“Yeah, well, you know, that's just like, your opinion, man.”
Agile means we can't estimate
● Over-reaction to Waterfall
“Yeah, well, you know, that's just like, your opinion, man.”
Agile means we can't estimate
● Over-reaction to Waterfall
● Excuse to drop software engineering and just hack it
“Yeah, well, you know, that's just like, your opinion, man.”
Enough mistakes, time for a treat
Help your client understand
● Estimates as a budget
Help your client understand
● Estimates as a budget
● The Holy Triangle● MoSCoW● Kano model
Holy Triangle
Good
Fast
Cheap
Holy Triangle
Good
Fast
Cheap
Scope
Time
CostQuality
MoSCoW
● Must● Should● Could● Won't
MoSCoW
● Must● Should● Could● Won't
Density
Capacity
MoSCoW
● Must● Should● Could● Won't
Density
MoSCoW
● Must● Should● Could● Won't
Density
MoSCoW
● Must● Should● Could● Won't
Density
MoSCoW
● Must● Should● Could● Won't
Density
MoSCoW
● Must● Should● Could● Won't
Density
Kano Model
Kano Model
● Basic functionality● Performance● Exciters
Kano Model
● Basic functionality● Performance● Exciters Exciters
Performance
Basic
High Satisfaction
Low Satisfaction
FeatureAbsent
FeaturePresent
Earn their trust, then get agile
Earn their trust, then get agile
● Low risk, fixed price to start
Earn their trust, then get agile
● Low risk, fixed price to start
● Create a roadmap
Earn their trust, then get agile
● Low risk, fixed price to start
● Create a roadmap
● Move to sprint-based work
Gamble with Planning Poker
Gamble with Planning Poker
● The whole team makes the commitment
Gamble with Planning Poker
● The whole team makes the commitment
● Combines independent estimates and review
And now mistakes during projects
Lose track of time
Lose track of time
● Developers hate time-tracking
Lose track of time
● Developers hate time-tracking
● Automate if you can
Lose track of time
● Developers hate time-tracking
● Automate if you can● Include it in
stand-ups to update the burn-down
Estimate bugs
Estimate bugs
● “Nein, nein, nein! Das ist verboten!”-- @dzuelke
Estimate bugs
● “Nein, nein, nein! Das ist verboten!”-- @dzuelke
● You do not know the size of the problem
Estimate bugs
● “Nein, nein, nein! Das ist verboten!”-- @dzuelke
● You do not know the size of the problem
● Spend 3 days investigating – change 1 line of code
Try to catch up
Try to catch up
● [wo]man up and admit you're wrong
Try to catch up
● [wo]man up and admit you're wrong
● Don't burn yourself or your team out
Try to catch up
● [wo]man up and admit you're wrong
● Don't burn yourself or your team out
● Work overtime and you set a precedent
Skip the review
Skip the review
● Make time to learn
Skip the review
● Make time to learn● Share your mistakes,
so others avoid them
Credits
● All sculpture/photos© Tamra Kohlhttp://www.flickr.com/photos/claylindo/
(Used with kind permission)
● Thank you!
● Photo jiggery-pokery:http://pixlr.com/o-matic/
● Background:http://www.colourlovers.com/pattern/635/Death_Flowers