5. @mattphilip #bettersoftwarecon
THE SPECTRUM OF ESTIMATING
NeverEstimateAnything
AlwaysEstimateEverything
Estimate Default Behavior Donāt estimate
Eļ¬ort Factors All sources of variation
Intuition Approach Data
Deterministic Forecast Type Probabilistic
Tasks in hours Level of Detail Work items in days
High Eļ¬ort Spent Low
Estimating better Improvement Aim Reducing variation
Commitment Management Service Expectations
8. @mattphilip #bettersoftwarecon
WHAT NOESTIMATES IS NOT SAYING
ā«ļø You are evil if you estimate
ā«ļø All estimates are totally useless
ā«ļø Stop doing your successful estimating practice
ā«ļø Stop having the conversations to understand/analyze/
break down work
ā«ļø Work items must be the same size
ā«ļø You must place your full faith and conļ¬dence in Monte
Carlo forecasts
9. @mattphilip #bettersoftwarecon
WHAT NOESTIMATES IS SAYING
ā«ļø Know why you are estimating
ā«ļø Discover for yourself how good you are at estimating
(measure)
ā«ļø Keep doing the things that help you understand the work
ā«ļø Upfront estimates need to be held loosely
ā«ļø If you focus on delivering value quickly, you obviate the
need for Iron Triangle considerations
10. @mattphilip #bettersoftwarecon
MY NOESTIMATES MANIFESTO
ā¦ We have come to value:
Reducing sources of variation over Improving estimating
Data over Intuition*
Probabilistic over Deterministic
MVP scope over Full scope
That is, while there is value in the items on the right, we value
the items on the left more.
*Neil Killick uses āempiricism over guessworkā
12. @mattphilip #bettersoftwarecon
DO YOU ASSUME CORRELATION?
Is the initial sizing a good predictor for when you can get your stuļ¬?
In our case, the surprising truth was āno.ā
ā Mattias Skarin, Real-World Kanban
15. @mattphilip #bettersoftwarecon
WHAT ACTUALLY HAPPENS
Analyze Code Test DeployDesign
Wait for approval
Wait for staļ¬
availability
Wait for āØ
rework
Wait for API
availability
Wait for āØ
higher-priority work
to ļ¬nish
Wait for approval
Wait for āØ
blocker āØ
removal
17. @mattphilip #bettersoftwarecon
WHATāS GOING ON?
Low process eļ¬ciency (typically 5-15%
in software delivery) means that even if
we nailed the eļ¬ort estimates ā¦ we
would be accurately predicting 5-15% of
elapsed delivery time!āØ
ā Troy Magennis
21. @mattphilip #bettersoftwarecon
WHAT YOU CAN DO ABOUT VARIATION
ā«ļøLower WIP
ā«ļøConWIP/System WIP
ā«ļøFive Focusing Steps
ā«ļøBlocker clustering
ā«ļøReduce workļ¬ow stages
ā«ļøExplicit policies
ā«ļøCost of Delay scheduling, sequencing and selection
ā«ļøReduce āexpeditesā
Lean-Kanban
22. @mattphilip #bettersoftwarecon
WHAT YOU CAN DO ABOUT VARIATION
ā«ļøāAgile 101ā (simple, decoupled design; thin vertical
slices; pairing)
ā«ļøIdentify/make visible/measure dependencies
ā«ļøCollaborate/Share work (Dimitar Bakardzhiev)
ā«ļøSpike and stabilize (Dan North)
ā«ļøReduce accidental complexity (Liz Keogh)
Team
Why?
23. @mattphilip #bettersoftwarecon
WHAT YOU CAN DO ABOUT VARIATION
ā«ļøDetermine what actions would be diļ¬erent based on
the estimate
ā«ļøCustomer-based ļ¬tness criteria
ā«ļøBudgeting: Team run rate
ā«ļøFocus conversation on value, not cost
ā«ļøMVP and product ownership
ā«ļøCreate probabilistic forecast ASAP (as soon as you have
data) ā together!
ā«ļøService-Delivery Reviews
ā«ļøTeams: Keep teams together, dedicated (reduces
context-switching, Tuckman stages)
Business
24. @mattphilip #bettersoftwarecon
POLICIES TO REDUCE VARIATION
ā«ļøWe will only start new work at about the same rate that
we ļ¬nish old work.
ā«ļøWe will make every reasonable eļ¬ort to ļ¬nish all work
that is started and minimize wasted eļ¬ort due to
discarded work items
ā«ļøIf work becomes blocked, we will do everything we can
do unblock that work as expeditiously as possible.
ā«ļøWe will closely monitor our policies around the order in
which we pull items through our system so that some
work items do not sit and age unnecessarily.
ā Daniel Vacanti, When Will It Be Done?
28. @mattphilip #bettersoftwarecon
KEOGHāS āSCALE OF IGNORANCEā
1. Just about everyone in the world has done this.
2. Lots of people have done this, including someone on
our team.
3. Someone in our company has done this, or we have
access to expertise.
4. Someone in the world did this, but not in our
organization (and probably at a competitor).
5. Nobody in the world has ever done this before.
33. @mattphilip #bettersoftwarecon
VACANTIāS VERITY
When making a forecast (predicting the future),
you have to accept that there is more than one
possible outcome. Thereforeā¦ A forecast is a
calculation about the future that includes both
a range and a probability of that range
occurring.
41. @mattphilip #bettersoftwarecon
STRAIGHT-LINE (AVERAGE) FORECASTS
Team A Team B
Work item #1 5 days 3 days
Work item #2 1 day 3 days
Work item #3 3 days 3 days
Average 3 days 3 days
3-day delivery time āØ
expectancy
66% 100%
45. @mattphilip #bettersoftwarecon
TO ESTIMATE OR NOT TO ESTIMATE?
NeverEstimateAnything
AlwaysEstimateEverything
Estimate Default Behavior Donāt estimate
Eļ¬ort Factors All sources of variation
Intuition Approach Data
Deterministic Forecast Type Probabilistic
Tasks in hours Level of Detail Work items in days
High Eļ¬ort Spent Low
Estimating better Improvement Aim Reducing variation
Commitment Management Service Expectations
46. @mattphilip #bettersoftwarecon
BETTER QUESTIONS TO ASK
@mattphilip
ā«ļøIn what context would estimates bring value, and what
are we willing to do about it when they donāt? ā Woody
Zuill
ā«ļøHow much time do we want to invest in this? ā Matt
Wynne
ā«ļøWhat can you do to maximize value and reduce risk in
planning and delivery? ā Vasco Duarte
ā«ļøCan we build a minimal set of functionality and then
learn what else we must build?
ā«ļøWould we/you not invest in this work? If not, at what
order-of-magnitude estimate would we/you take that
action?
ā«ļøWhat actions would be diļ¬erent based on an estimate?
47. @mattphilip #bettersoftwarecon
HOW TO GET STARTED (PROJECT IN PROGRESS)
1. Continue to discuss the work to analyze it and break it into thin
vertical slices.
2. Start tracking two pieces of data for each work item: commit
date and delivery date.
3. After accumulating 10 data points, run a Monte Carlo
simulation to provide a probabilistic forecast.
4. Begin answering the āWhenā question using data, either at the
project level or individual work-item level.
5. Validate whether the probabilistic forecasts match what actually
occurs.
6. If the forecasts are helpful, wean your team oļ¬ estimating.
7. Focus improvement eļ¬orts on reducing the sources of variation.
48. @mattphilip #bettersoftwarecon
HOW TO GET STARTED (NEW PROJECT)
1. Ask the ābetter questionsā above about the use and
importance of estimates.
2. Use reference-class data (similar delivery times from other
projects in similar tech stacks with similar teams) to provide an
initial probabilistic forecast
3. As soon as you accumulate 10 data points, run a Monte Carlo
simulation to provide an updated probabilistic forecast.
4. Continually reforecast when you get more information.
49. @mattphilip #bettersoftwarecon
REFERENCES AND FURTHER EXPLORATION
ā«ļø noestimatesbook.com (Vasco Duarte)
ā«ļø infoq.com/articles/noestimates-monte-carlo (Dimitar Bakardzhiev)
ā«ļø priceonomics.com/why-are-projects-always-behind-schedule
ā«ļø http://scrumandkanban.co.uk/estimation-meets-cyneļ¬n/
ā«ļø ronjeļ¬ries.com
ā«ļø Lizkeogh.com
ā«ļø https://neilkillick.wordpress.com/
ā«ļø http://zuill.us/WoodyZuill/
ā«ļø mattphilip.wordpress.com/noestimates-game
ā«ļø When Will It Be Done? (Dan Vacanti)
ā«ļø focusedobjective.com (Troy Magennis)
ā«ļø actionableagile.com (Dan Vacanti)
ā«ļø kanbanize.com
ā«ļø scrum.org