Tuesday 4: Jakob Persson, "A method for getting early estimates right"

Early estimating using prior experience

As you make better estimates the picture comes into focus, and what you find might surprise you.

Forecasts on uncertain specs

Early estimate usually by a single person; in-project done by the whole team

Effort and accuracy - small effort gives you decent accuracy

[We've found this: specs tend to be "fractal" and breaking them down just leads to more accurate small items which total up to very similar to the original estimate]

How made?

Spreadsheet
and dedicated developer

1. Timebox work beforehand

Based on top-level gut instinct guestimate - order of magnitude - assign time

2. Analyse requirements

Look for assumptions client made, and question them

3. Guestimate

Top-level

4. Extract features and write solutions

A deliverable with a proposed solution - not necessarly the MDF
Content type as a feature; modules as features
Cutting features [if the client will let you]
Wireframes good for extracting features
[but can contain a lot of assumptions]

5. Estimate features

Estimating needs to include:
development
unit tests
config
testing
fixing bugs
deploy

Estimation sheet
Can the client cut requirements? Negotiate high-estimate requirements with them

Use a scale [e.g. T-shirt sizes]
Always round up!

1,2,5hrs

3hrs for admins to be notified when links are added - round up to 5hrs

Order-of-magnitude estimates at the higher level e.g. 0.1,0.2,0.5hrs or 10,20,50hrs

You have to take testing and design into account

6. Uncertainty and errors

Large features - large uncertainty
Unknown features - possible error
Offer a pilot study

Chaotic development can worsen errors
inexperienced personnel
Poor coding practices
Requirements not investigated
Inexperienced personnel
Developers going too far

Constraints alongside features
Performance
Stability
Unfounded optimism - tend to underestimate by 20-30%

NO OFF-THE-CUFF estimates. Don't give a number until you're sure.

Cone of uncertainty

Reduce by proposing well-tested solutions you have used before
Research solutions by Googling, reading articles and blogposts
Prototype!
Avoid unknown third party integration

7. Final estimation

Degrees of experience

1-5 works fairly well as a scale
Put into the spreadsheet
Apply ranges based on degree of experience
Be careful with low experience - shot in the dark

Overhead time - admin / PM, testing, theming

Culture of awareness of time at the company

If unsure, ask an expert

"What do you do with early guesstimates?"

Be clear to the client: say what your assumptions are.

"How to avoid specification drift at the design phase and still encourage design creativity?

Get designers and developers to work closely together as early as possible. Include them in the estimation process. Team should share the estimate. Designers need early feedback from developers, and developers need to be constructive. Neither should restrict the other, but they need to compromise.