Stop multiplying by 4 Laracon

Post on 15-Apr-2017

1,425 views 1 download

transcript

STOP MULTIPLYING BY 4

CHUCK REEVES @MANCHUCK

Why even estimate?

What is estimation?

Why should developers estimate?

I'll tell you how I estimate things. I sit down and figure out how long I think it would take me to do it. Then I double that time and then I push it up to the next point on the “Time Progression Scale”. Where the “Time Progress Scale” starts off: seconds, minuets, hours and days. So if I think something is going to take me 4 hours to do. I will double it to 8 and then I would say it would take me 8 days to get it all completely done start to finish. And I'm usually right, because there are so many impediments. If you are the only one doing it yourself your schedule can be very accurate. Once you have to involve other people, you might as well just make numbers up. You might as well say “I think this will take me Blue days to get done”

- Development hell podcast; Episode 29: Snappy to Snappy question

2 + x = 5Deduction

2 + x = yInduction

Requirements are the key

Measure what is measurable, but make measurable what is not so

-Galileo Galilei

“Wordy” Expression

Our new Contact form, is a quick and easy way for the sales team to collect information to contact people to sell our service. The contact form will require someone to enter in: Their name, their email address and their phone number. The sales team will then contact that person to tell them how awesome our service is

Actors:

Sales – Employees of Initech who promote the product

Leads – People who are not already signed on for Initech products

The contact form will have fields for: Name, Email, and Valid Phone number.

Misplaced Modifier

The contact form allows Leads to enter in: Name, Email and Valid phone number. The sales team needs a list of leads with the option to mark as contacted

Top Tip: Prevent children from ingesting dangerous medicines by locking them in a childproof cupboard. 3 children per cupboard is a good fit

-Periwinkle Jones @peachesanscream

The contact form will have fields for: Name, Email, and Phone number.

All fields are required and must be validated. The sales team needs a list of leads. Sales team needs a checkbox to mark a lead as contacted

Valid Phone numbers:

(202) 456-1111

555-1212

212-867-5309

1-800-MATTRES

911

+44 871 984 6352

+852 2280 2898

+91 11 2679 1234

fast, rapid, efficient Use a set time: "5 seconds"

valid, including but not limited too, etc., and so on

Describe what is valid or invalid. use comprehensive list

maximize, minimize, optimize, at least, between, several Be sure to include appropriate values

simple, easy, quick, user-friendly Describe what makes it these

reasonable, when necessary How do you make this judgment?

Source: Software Requirements 2 – Karl Weigers

Be sure you define the technical requirements of what you are estimating:

UTF-8

First and Last name must be between 3 and 100 characters

Email complies with RFC 822 and no longer than 300 characters and unique in our system

Phone Number < 25 characters and validated with Foo-Bar REST service

Break down requirements into smaller parts:

Email lookup service

Phone validation integration

Form logic

Lead management UI

Historical data

Dry run / Unit test

Confidence Interval (CI)

It is better to be roughly right than precisely wrong.

- John Maynard Keynes

What is the wingspan of a 747

Francis Scott Key wrote the lyrics, but not the music, for the American National Anthem

Repetition

Pros and Cons

Absurdity Test

Equivalent Bet

90% WIN

10%

Lose

Q. What is the wingspan of a 747 A. 211 ft (64m)

Q. Francis Scott Key wrote the lyrics, but not the music, for the American National Anthem A. True

Fuzzy Logic / Tee Shirt

Size Average LOCVery Small 127

Small 253Medium 500

Large 1,014Very Large 1,988

Source: Software Estimation 2 – Steve McConnell

Wideband Delphi Or Group

Round 1

Round 2

Round 3

Hours 1 2 3 4 65 7 8 9

Round 1 – 6.5

Round 2 – 6.8

Round 3 – 6

Bayes Theorem

When you get information, the level of uncertainty will decrease.

P (A|B) = P (B|A) P(A)

P (B)

Priorities – Urgency Matrix

Important Not Important

Urgent High Priority

Not Urgent Medium Priority Low Priority

Source: Software Requirements 2 – Karl Weigers

Priorities – Prioritization Spreadsheet

Source: Software Requirements 2 – Karl Weigers

https://www.microsoftpressstore.com/store/software-requirements-9780735679665

FeatureRelative Benefit

Relative Penalty

Total Value

Value %

Dev Cost

Cost %

Dev Risk

Risk %

Priority

Phone Validation 2 4 8 15.0 8 44.4 9 60.0 0.144

Lead UI 5 3 13 20.0 2 11.1 1 6.7 1.125

Form Logic 9 7 25 40.0 5 27.8 3 20.0 0.837

Email Lookup 5 5 15 25.0 3 16.7 2 13.3 0.833

Totals 21 19 61 100.0 11 100.0 15 100.0

Politics

Remove people from the problem

Focus on Interests not Positions

DO NOT NEGOTIATE YOUR ESTIMATE!!!!!

Final Thoughts

Prefer hours to days (scale easier)

Throwing more developers may not solve the problem

Iterate and be honest

ISBN-13: 978-0735618794

Software Requirements 2: Karl Wiegers

ISBN-13: 978-0735605350

Software Estimation: Steve McConnell

ISBN-13: 978-1118539279

How To Measure Anything: Douglas W. Hubbard