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




Cheap
          Fast
Holy Triangle
           Good
           Scope


        Quality
 Cost
Cheap
             Time
              Fast
MoSCoW
   ●
       Must
   ●
       Should
   ●
       Could
   ●
       Won't
MoSCoW
              ●
                  Must
              ●
                  Should
              ●
                  Could    Density
              ●
                  Won't

Capacity
MoSCoW
   ●
       Must
   ●
       Should
   ●
       Could    Density
   ●
       Won't
MoSCoW
   ●
       Must
   ●
       Should
   ●
       Could    Density
   ●
       Won't
MoSCoW
   ●
       Must
   ●
       Should
   ●
       Could    Density
   ●
       Won't
MoSCoW
   ●
       Must
   ●
       Should
   ●
       Could    Density
   ●
       Won't
MoSCoW
   ●
       Must
   ●
       Should
   ●
       Could    Density
   ●
       Won't
Kano Model
Kano Model
●
    Basic functionality
●
    Performance
●
    Exciters
Kano Model
●
    Basic functionality                        High Satisfaction

●
    Performance
●
    Exciters                        Exciters
                                                        Performance    Feature
                                                                       Present
                          Feature
                          Absent

                                                               Basic




                                               Low Satisfaction
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 Kohl
    http://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

Estimation or, "How to Dig your Grave"