- Why do we makes estimates?
-
Is it really hard to do?
-
Let's find out!
- How much time will it take you to travel home from your office at 7PM, 8PM, 9PM, or 10PM?
- How many stands of hair do your seatmate have?
- How many bees does an average hive of African honeybees have
- What are factors that affects estimates?
-
Estimates, Targets, Commitment
-
Estimates
- prediction of how long or how much a project will take
-
Targets
- statement of a desirable business objective
-
Commitment
- promise deliver a defined functionality at a specific level of quality at a certain date
-
Accuracy vs Precision
-
Precision
- exactness of measurement
-
Accuracy
- closeness to the target
-
Plan vs Estimates
-
Estimate
- unbiased analytical process
- goal is accuracy
-
Plan
- biased goal-seeking process
- deliberately bias plans to achieve a specific end
-
Count, Compute, Judge
-
Count if it is all possible.
- Look for something to count that is a meaningful measure of work in your environment.
-
Compute if you can't count directly.
- Use computation to convert a count to estimates.
- Collect historical data that allows you to compute an estimate from a count.
- Use judgement alone only as a last resort.
-
Techniques
-
SLOC
- count number of lines of the delivered source code of the software, excluding comments and blank lines
- convert to effort estimate
-
SLOC originated as a metric when the most commonly used languages, such as fortran and assembler, were line-oriented
- Programs with higher SLOC values take more time to develop
- Experiments have repeatedly confirmed that effort is highly correlated with SLOC
-
Function Points
- measurement to express the amount of business functionality an information system provides to a user
-
count
- External User-input types - data or control user-input types
- External User-output types - output data types to the user that leaves the system
- External Inquiry types - interactive inputs requiring a response
- Internal file types - files (logical groups of info) that are used and shared inside the system
- External file types - files that are passed or shared between the system and other systems
-
assign complexity
- 1 = simple
- 2 = medium
- 3 = complex
-
assign weight
- 3 (for simple input) to 15 (for complex internal files)
- compute
- convert to effort estimate
-
Analogy/Historical Comparison
- compare against a similar project
-
Group Review
- review the requirements as a group
- discuss & agree on the high & low ends of the estimate
- arrive at a consensus estimate for the whole group
-
Wideband Delphi
-
Delphi
- several experts creates independent estimates & then meets (for as long as necessary) to agree on a single estimates
- no more effective than a structured group meeting
- affected by politics & dominated by the more assertive estimators in the group
- anonymous individual estimates are submitted
- estimates compared with one another presented to estimators
- estimators agree to accept average estimate or to vote "no"
- final estimate is the range created & the single-point is the expected case
-
Support
-
Setting the Mindset & Expectations
-
Cone of Uncetainty
- Shows how estimates becomes more accurate as project progresses.
- The cone helps explain why your estimate is not accurate at the beginning and when you can make it more accurate.
- p84
-
Confidence Range Chart
- Show level of confidence that project can be completed over time spent in the project.
- p82
-
How Little Can You Do
-
How-much thinking carries these assumptions:
- • People are not a scarce resource. We should put all of them to use immediately, working like mad on the project.
- • Schedule really doesn’t matter.
- • Cost of development is not a driving factor.
-
How-little thinking carries these assumptions:
- • Understanding the requirements is a scarce resource. We should focus our energies on delivering something that shows we understand the specific requirement and the value it has to our customer.
- • Schedule is critical, and we don’t have time to do it again or build technical debt.
- • Project cost is important, and we need to manage it.
- Too often, project managers (and their senior managers) say that the characteristics of how-little thinking are important, but they manage according to how-much.
- p93
-
Separating Sizing & Duration
- Separate size & duration during estimation.
-
Size
- size relative to another activity
- use fibonacci numbers
- break apart large tasks to get better sizing
-
Duration
- factor in resources that will perform the task
- architects vs jr. programmer
- p86
-
Facilitating the Process
-
Inch-Pebble
- one day to two days tasks that are either done or not done
-
Rolling-Wave Schedule
- A rolling-wave plan is a continuous detailed schedule that’s only a few weeks long. As you complete one week of detailed schedule, you add another week to the end of the schedule.
-
Planning Poker
- As a team, everyone determines the relative sizing for a feature.
- Use Fibonacci numbers.
-
Other Stuff that Would Help
-
Diseconomies of Scale
- As project size increases, the number of communication paths increases as a squared funtion of the number of people on the projet. As a consequence, there is also an exponential increase in effort.
-
Law of Large Numbers
- If you create one big estimate, the estimate's error tendency will be completely on the high side or completely on the law side. But if you create several smaller estimates, some of the estimation errors will be on the high side, and some will be on the low side. The errirs will tend to concel each other out to some degree,
-
Student Syndrome
- When given time, developer will procrastinate until late in the project, at which point they'll rush to complete their work, & probably they won't finish the project on time.
-
Parkinson's Law
- Work will expand to fill available time.
-
Overestimation vs Underestimation
-
Underestimation
- Management approving proposed system that exceeds budget
- Incomplete delivery of functions &/or with poor quality
- Failure to complete on time
-
- Reduced effectiveness of project plan.
- Statistically reduced chance of on-time completion.
- Poor technical foundation leads to worse-than-nominal results.
-
Destructive late-project dynamics make the whole project nominal.
- more meetings with upper management to get project on track
- frequent reestimation, late in the project, to determine when project can be completed
- apologizing to key customers for missing delivery dates (including meeting with those customers)
- preparing interim releases to support demos, trade shows, etc
- more discussions which requirements absolutely must be added because the project has been underway long
- fixing problems arising from quick & dirty workarounds that were implement in response to schedule pressure
-
Overestimation
- Too many resources committed to the project
- Not winning the contract during bidding because
-
- parkinson's law kicking in
- attack of the goldratt's syndrome
-
What's the best estimation technique?
- is what works for you according to your constraints
-
O&B's estimation process
- use of RFP
- initial requirements discussion
-
estimation process
- estimation checklist
- group expert judgement
- planning poker
-
derive expected case
- best case
- most likely case
- worst case
- impute sizing & duration requirements
-
Tips (Manage IT)
- Tips to Make Estimation Easier
- Here are approaches that will make estimation and reporting your estimates easier:
- • Remember that an estimate is an approximation—a guess. The bigger the guess, the more error you will have. Make sure when you provide an estimation of the project completion “date,” you provide a range of dates so your audience understands that your estimate is a guess.
- • Many software people are optimistic. They are trained to be optimistic in school, where every project can be completed in one semester (with a sufficient number of all-nighters). That training will persist unless they learn to estimate small pieces and receive feedback on their estimation.
- • Tasks will take longer than you think they will.
- • It’s easier to estimate smaller chunks of work.
- • Decide how everyone on the team will estimate: in person-days or hours. I recommend person-hours.
- • You and your project team need to practice estimation and receive feedback about estimation. Estimation without feedback is write-only estimation — it makes you feel good, but it doesn’t produce long-term results and is ultimately rendered worthless.
- • Plan to iterate on the estimates. If you realize partway through the project that your estimates are too optimistic, take the time to reestimate and replan the rest of the project. Late projects don’t make up time; they get later. Even if your project doesn’t appear to be late, take the time to reestimate.
- • If you’ve been given a project deadline, you don’t need to estimate anything at all. Rank the features so you implement features by priority. For this case, I strongly recommend you use an agile life cycle so that you can implement and get feedback quickly. If you can’t use an agile life cycle, consider an incremental life cycle, implementing by feature as you proceed.
- • Timebox phases and tasks if you have an overconstrained project.
- • Consider a spike if the task is too big (too much technical risk) to estimate well.
-
Remember This
- • Never provide a single-point date for an end date.
- • The smaller the task, the easier it is to estimate.
- • Look for estimate accuracy, not precision.
-
Notes
- Remove Variability
- Lessen Granularity