Estimates That Don't Suck
-
Upload
nell-shamrell-harrington -
Category
Software
-
view
679 -
download
3
Transcript of Estimates That Don't Suck
Estimates That Don’t Suck Nell Shamrell-Harrington
@nellshamrell
Who Am I?
Estimates That Don’t Suck @nellshamrell
Nell Shamrell-HarringtonSoftware Engineer at Chef@[email protected]
Estimates are hard, technical engineering skills
Engineers hate estimates
Estimates mean differentthings to engineers and
business people
“It is the primary wedge that has been driven
between business people and developers”
Robert C. Martin
An estimate is not…
Estimates That Don’t Suck @nellshamrell
• A commitment or deadline
An estimate is not…
Estimates That Don’t Suck @nellshamrell
• A commitment or deadline• An accountability or disciplinary tool
An estimate is not…
Estimates That Don’t Suck @nellshamrell
• A commitment or deadline• An accountability or disciplinary tool• Negotiable
An estimate is not…
Estimates That Don’t Suck @nellshamrell
• A commitment or deadline• An accountability or disciplinary tool
• Based in hope• Negotiable
“Our estimates are poorly developed. More seriously,
they reflect an unvoiced assumption which is quite
untrue (…) that all will go well” Fred Brooks
Estimates based on hope are worse than no estimates
An estimate is…
Estimates That Don’t Suck @nellshamrell
• The expected effort for a defined workload based on our best knowledge at this time
The goal of an estimate is notprecision accuracy. It is to be useful and meaningful.
Before you estimate… analyze the project or
feature at hand
Example: Widget World 2.0
Management:“So how long will this take?”
“When someone asks for an estimate, the answer is always ‘Let me get
back to you’”
Andy Hunt & Dave Thomas
Management:“Just give me a ballpark figure”
Engineer:“I want to give you a good
estimate. I will get back to you at [specific date/time]”
Management:“Well, we can have it done by
[date/time], right?”
Engineer:“I can’t give you a commitment right now. I need to make sure this will be successful for the
business. I will get back to you at [specific date/time]”
A milestone is a defined piece of useful functionality
Widget World 2.0 Milestones
Estimates That Don’t Suck @nellshamrell
Widget World 2.0 Milestones
Estimates That Don’t Suck @nellshamrell
• A user must be able to access Widget World 2.0
Widget World 2.0 Milestones
Estimates That Don’t Suck @nellshamrell
• A user must be able to access Widget World 2.0
• A user must be able to create an account
Widget World 2.0 Milestones
Estimates That Don’t Suck @nellshamrell
• A user must be able to access Widget World 2.0
• A user must be able to create an account• A user must be able to log in and out
Widget World 2.0 Milestones
Estimates That Don’t Suck @nellshamrell
• A user must be able to access Widget World 2.0
• A user must be able to create an account• A user must be able to log in and out• A user must be able to view a list of widgets
Milestones emphasize iterations
Milestones must be broken down into user stories
User stories define the user experience
A user must be able to create an account
Estimates That Don’t Suck @nellshamrell
A user must be able to create an account
Estimates That Don’t Suck @nellshamrell
• As a user, when I access Widget World, I see a login button
A user must be able to create an account
Estimates That Don’t Suck @nellshamrell
• As a user, when I access Widget World, I see a login button
• When I click the login button, I’m brought to a “Create an account” form
A user must be able to create an account
Estimates That Don’t Suck @nellshamrell
• As a user, when I access Widget World, I see a login button
• When I click the login button, I’m brought to a “Create an account” form
• When I fill in the form and click “submit”, I see a “Welcome” page
Break down user stories into technical tasks
Only engineers should define technical tasks
Technical tasks do not prescribe an implementation
Technical tasks help a team think through an implementation
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model • Create a users controller
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model • Create a users controller • Add a “create” action
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model • Create a users controller • Add a “create” action • Create a “welcome” page
Engineer:But what about auth?
Always include research tasks
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model • Create a users controller • Add a “create” action • Create a “welcome” page• Research current auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model • Create a users controller • Add a “create” action • Create a “welcome” page• Research current auth solution • Research alternative auth solutions
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table • Create a users model • Create a users controller • Add a “create” action • Create a “welcome” page• Research current auth solution • Research alternative auth solutions • Implement auth solution
Define a scale for estimating
Estimation Scales: Points
Estimates That Don’t Suck @nellshamrell
Estimation Scales: Points
Estimates That Don’t Suck @nellshamrell
• 2 points: 1-2 hours
Estimation Scales: Points
Estimates That Don’t Suck @nellshamrell
• 2 points: 1-2 hours • 4 points: 1/2 day
Estimation Scales: Points
Estimates That Don’t Suck @nellshamrell
• 2 points: 1-2 hours • 4 points: 1/2 day • 8 points: Full day
Estimation Scales: Points
Estimates That Don’t Suck @nellshamrell
• 2 points: 1-2 hours • 4 points: 1/2 day • 8 points: Full day • 16 points: Two full days
Estimation Scales: T-Shirt Sizes
Estimates That Don’t Suck @nellshamrell
Estimation Scales: T-Shirt Sizes
Estimates That Don’t Suck @nellshamrell
• Small: 1/2 day
Estimation Scales: T-Shirt Sizes
Estimates That Don’t Suck @nellshamrell
• Small: 1/2 day • Medium: 1 day
Estimation Scales: T-Shirt Sizes
Estimates That Don’t Suck @nellshamrell
• Small: 1/2 day • Medium: 1 day • Large: 1-2 days
Estimation Scales: T-Shirt Sizes
Estimates That Don’t Suck @nellshamrell
• Small: 1/2 day • Medium: 1 day • Large: 1-2 days • XL: 2 days
It doesn’t matter what scale you use as long as
it is consistentand meaningful
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts)• Create a users model • Create a users controller • Add a “create” action • Create a “welcome” page• Research current auth solution • Research alternative auth solutions • Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts)• Create a users controller • Add a “create” action • Create a “welcome” page• Research current auth solution • Research alternative auth solutions • Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts) • Create a users controller (2 pts)• Add a “create” action • Create a “welcome” page• Research current auth solution • Research alternative auth solutions • Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts) • Create a users controller (2 pts) • Add a “create” action (2 pts)• Create a “welcome” page• Research current auth solution • Research alternative auth solutions • Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts) • Create a users controller (2 pts) • Add a “create” action (2 pts) • Create a “welcome” page (4 pts)• Research current auth solution • Research alternative auth solutions • Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts) • Create a users controller (2 pts) • Add a “create” action (2 pts) • Create a “welcome” page (4 pts)• Research current auth solution (8 pts)• Research alternative auth solutions • Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts) • Create a users controller (2 pts) • Add a “create” action (2 pts) • Create a “welcome” page (4 pts)• Research current auth solution (8 pts) • Research alternative auth solutions (16 pts)• Implement auth solution
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Create a users table (2 pts) • Create a users model (2 pts) • Create a users controller (2 pts) • Add a “create” action (2 pts) • Create a “welcome” page (4 pts)• Research current auth solution (8 pts) • Research alternative auth solutions (16 pts) • Implement auth solution (8 pts)
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Add up total points (44 points)
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Add up total points (44 points) • Multiply by a variable (i.e. 1.5)
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Add up total points (44 points) • Multiply by a variable (i.e. 1.5) • 44 * 1.5 = 66
When I fill in the form and click “Submit” I see a welcome page.
Estimates That Don’t Suck @nellshamrell
• Add up total task points (44 points) • Multiply by a variable (i.e. 1.5) • 44 * 1.5 = 66 • Total estimate = 66 points
Can every task be estimated? No
When a task cannot be estimated, the business
must define the maximum time a task is worth
What if an estimate is wrong?
Change the estimate
An estimate should always reflect the truth as we
best understand it at this time
Communicate the change!
The worst thing to do to a manager or stakeholder
is the surprise them
Estimate Antipatterns
Estimates That Don’t Suck @nellshamrell
• Assume that things will go better than before
Estimate Antipatterns
Estimates That Don’t Suck @nellshamrell
• Assume that things will go better than before
• Leave out testing
Estimate Antipatterns
Estimates That Don’t Suck @nellshamrell
• Assume that things will go better than before
• Leave out testing • Assume engineers will code 8 hrs/day
Estimate Antipatterns
Estimates That Don’t Suck @nellshamrell
• Assume that things will go better than before
• Leave out testing • Assume engineers will code 8 hrs/day • Assume engineers will work overtime
Find peace between engineers and business people
Who Am I?
Estimates That Don’t Suck @nellshamrell
Nell Shamrell-HarringtonSoftware Engineer at Chef@[email protected]
Who Am I?
Estimates That Don’t Suck @nellshamrell
Nell Shamrell-HarringtonSoftware Engineer at Chef@[email protected]
Any Questions?