estimates that don't suck

Post on 11-Jan-2017

679 Views

Category:

Software

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Estimates That Don’t Suck Nell Shamrell-Harrington

@nellshamrell

Who Am I?

Estimates That Don’t Suck @nellshamrell

Nell Shamrell-HarringtonSoftware Engineer at Chef@nellshamrellnshamrell@chef.io

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@nellshamrellnshamrell@chef.io

Who Am I?

Estimates That Don’t Suck @nellshamrell

Nell Shamrell-HarringtonSoftware Engineer at Chef@nellshamrellnshamrell@chef.io

Any Questions?

top related