estimates that don't suck

94
Estimates That Don’t Suck Nell Shamrell-Harrington @nellshamrell

Upload: nell-shamrell-harrington

Post on 11-Jan-2017

679 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Estimates That Don't Suck

Estimates That Don’t Suck Nell Shamrell-Harrington

@nellshamrell

Page 2: Estimates That Don't Suck

Who Am I?

Estimates That Don’t Suck @nellshamrell

Nell Shamrell-HarringtonSoftware Engineer at Chef@[email protected]

Page 3: Estimates That Don't Suck

Estimates are hard, technical engineering skills

Page 4: Estimates That Don't Suck

Engineers hate estimates

Page 5: Estimates That Don't Suck

Estimates mean differentthings to engineers and

business people

Page 6: Estimates That Don't Suck

“It is the primary wedge that has been driven

between business people and developers”

Robert C. Martin

Page 7: Estimates That Don't Suck
Page 8: Estimates That Don't Suck

An estimate is not…

Estimates That Don’t Suck @nellshamrell

• A commitment or deadline

Page 9: Estimates That Don't Suck

An estimate is not…

Estimates That Don’t Suck @nellshamrell

• A commitment or deadline• An accountability or disciplinary tool

Page 10: Estimates That Don't Suck

An estimate is not…

Estimates That Don’t Suck @nellshamrell

• A commitment or deadline• An accountability or disciplinary tool• Negotiable

Page 11: Estimates That Don't Suck

An estimate is not…

Estimates That Don’t Suck @nellshamrell

• A commitment or deadline• An accountability or disciplinary tool

• Based in hope• Negotiable

Page 12: Estimates That Don't Suck

“Our estimates are poorly developed. More seriously,

they reflect an unvoiced assumption which is quite

untrue (…) that all will go well” Fred Brooks

Page 13: Estimates That Don't Suck

Estimates based on hope are worse than no estimates

Page 14: Estimates That Don't Suck
Page 15: Estimates That Don't Suck

An estimate is…

Estimates That Don’t Suck @nellshamrell

• The expected effort for a defined workload based on our best knowledge at this time

Page 16: Estimates That Don't Suck

The goal of an estimate is notprecision accuracy. It is to be useful and meaningful.

Page 17: Estimates That Don't Suck

Before you estimate… analyze the project or

feature at hand

Page 18: Estimates That Don't Suck

Example: Widget World 2.0

Page 19: Estimates That Don't Suck

Management:“So how long will this take?”

Page 20: Estimates That Don't Suck

“When someone asks for an estimate, the answer is always ‘Let me get

back to you’”

Andy Hunt & Dave Thomas

Page 21: Estimates That Don't Suck

Management:“Just give me a ballpark figure”

Page 22: Estimates That Don't Suck

Engineer:“I want to give you a good

estimate. I will get back to you at [specific date/time]”

Page 23: Estimates That Don't Suck

Management:“Well, we can have it done by

[date/time], right?”

Page 24: Estimates That Don't Suck

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]”

Page 25: Estimates That Don't Suck
Page 26: Estimates That Don't Suck

A milestone is a defined piece of useful functionality

Page 27: Estimates That Don't Suck

Widget World 2.0 Milestones

Estimates That Don’t Suck @nellshamrell

Page 28: Estimates That Don't Suck

Widget World 2.0 Milestones

Estimates That Don’t Suck @nellshamrell

• A user must be able to access Widget World 2.0

Page 29: Estimates That Don't Suck

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

Page 30: Estimates That Don't Suck

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

Page 31: Estimates That Don't Suck

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

Page 32: Estimates That Don't Suck

Milestones emphasize iterations

Page 33: Estimates That Don't Suck

Milestones must be broken down into user stories

Page 34: Estimates That Don't Suck

User stories define the user experience

Page 35: Estimates That Don't Suck

A user must be able to create an account

Estimates That Don’t Suck @nellshamrell

Page 36: Estimates That Don't Suck

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

Page 37: Estimates That Don't Suck

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

Page 38: Estimates That Don't Suck

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

Page 39: Estimates That Don't Suck

Break down user stories into technical tasks

Page 40: Estimates That Don't Suck

Only engineers should define technical tasks

Page 41: Estimates That Don't Suck

Technical tasks do not prescribe an implementation

Page 42: Estimates That Don't Suck

Technical tasks help a team think through an implementation

Page 43: Estimates That Don't Suck

When I fill in the form and click “Submit” I see a welcome page.

Estimates That Don’t Suck @nellshamrell

Page 44: Estimates That Don't Suck

When I fill in the form and click “Submit” I see a welcome page.

Estimates That Don’t Suck @nellshamrell

• Create a users table

Page 45: Estimates That Don't Suck

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

Page 46: Estimates That Don't Suck

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

Page 47: Estimates That Don't Suck

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

Page 48: Estimates That Don't Suck

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

Page 49: Estimates That Don't Suck

Engineer:But what about auth?

Page 50: Estimates That Don't Suck

Always include research tasks

Page 51: Estimates That Don't Suck

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

Page 52: Estimates That Don't Suck

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

Page 53: Estimates That Don't Suck

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

Page 54: Estimates That Don't Suck

Define a scale for estimating

Page 55: Estimates That Don't Suck

Estimation Scales: Points

Estimates That Don’t Suck @nellshamrell

Page 56: Estimates That Don't Suck

Estimation Scales: Points

Estimates That Don’t Suck @nellshamrell

• 2 points: 1-2 hours

Page 57: Estimates That Don't Suck

Estimation Scales: Points

Estimates That Don’t Suck @nellshamrell

• 2 points: 1-2 hours • 4 points: 1/2 day

Page 58: Estimates That Don't Suck

Estimation Scales: Points

Estimates That Don’t Suck @nellshamrell

• 2 points: 1-2 hours • 4 points: 1/2 day • 8 points: Full day

Page 59: Estimates That Don't Suck

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

Page 60: Estimates That Don't Suck

Estimation Scales: T-Shirt Sizes

Estimates That Don’t Suck @nellshamrell

Page 61: Estimates That Don't Suck

Estimation Scales: T-Shirt Sizes

Estimates That Don’t Suck @nellshamrell

• Small: 1/2 day

Page 62: Estimates That Don't Suck

Estimation Scales: T-Shirt Sizes

Estimates That Don’t Suck @nellshamrell

• Small: 1/2 day • Medium: 1 day

Page 63: Estimates That Don't Suck

Estimation Scales: T-Shirt Sizes

Estimates That Don’t Suck @nellshamrell

• Small: 1/2 day • Medium: 1 day • Large: 1-2 days

Page 64: Estimates That Don't Suck

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

Page 65: Estimates That Don't Suck

It doesn’t matter what scale you use as long as

it is consistentand meaningful

Page 66: Estimates That Don't Suck

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

Page 67: Estimates That Don't Suck

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

Page 68: Estimates That Don't Suck

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

Page 69: Estimates That Don't Suck

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

Page 70: Estimates That Don't Suck

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

Page 71: Estimates That Don't Suck

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

Page 72: Estimates That Don't Suck

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

Page 73: Estimates That Don't Suck

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)

Page 74: Estimates That Don't Suck

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)

Page 75: Estimates That Don't Suck

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)

Page 76: Estimates That Don't Suck

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

Page 77: Estimates That Don't Suck

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

Page 78: Estimates That Don't Suck
Page 79: Estimates That Don't Suck

Can every task be estimated? No

Page 80: Estimates That Don't Suck

When a task cannot be estimated, the business

must define the maximum time a task is worth

Page 81: Estimates That Don't Suck

What if an estimate is wrong?

Page 82: Estimates That Don't Suck

Change the estimate

Page 83: Estimates That Don't Suck

An estimate should always reflect the truth as we

best understand it at this time

Page 84: Estimates That Don't Suck

Communicate the change!

Page 85: Estimates That Don't Suck

The worst thing to do to a manager or stakeholder

is the surprise them

Page 86: Estimates That Don't Suck
Page 87: Estimates That Don't Suck

Estimate Antipatterns

Estimates That Don’t Suck @nellshamrell

• Assume that things will go better than before

Page 88: Estimates That Don't Suck

Estimate Antipatterns

Estimates That Don’t Suck @nellshamrell

• Assume that things will go better than before

• Leave out testing

Page 89: Estimates That Don't Suck

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

Page 90: Estimates That Don't Suck

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

Page 91: Estimates That Don't Suck
Page 92: Estimates That Don't Suck

Find peace between engineers and business people

Page 93: Estimates That Don't Suck

Who Am I?

Estimates That Don’t Suck @nellshamrell

Nell Shamrell-HarringtonSoftware Engineer at Chef@[email protected]

Page 94: Estimates That Don't Suck

Who Am I?

Estimates That Don’t Suck @nellshamrell

Nell Shamrell-HarringtonSoftware Engineer at Chef@[email protected]

Any Questions?