Estimation or, "How to Dig your Grave"

Preview:

DESCRIPTION

Clients need to know how much a project will cost. Waterfall development is always late and over-budget. Agile development is done when it's done. You're left with estimates that you know are too low and then you squeeze them anyway. It shouldn't be this way. We'll look at how this happens, early warning signs, ways out and ways of avoiding it in the first place.

Citation preview

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

Questions?

● Feedback

http://joind.in/6321

(don't make me send the clown)

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