SlideShare a Scribd company logo
1 of 68
ESTIMATION
PROTIPS
ATLANTA PHP USER GROUP
SEPTEMBER 2013
ABOUT ME
• Director of
Development
• 5+ years of full-time
web development
• Learned estimation
from the school of
hard knocks
YOUR ANSWER?
ESTIMATES ARE
NOT PROMISES
PROTIP #1:
“GOOD” ESTIMATES
A good estimation approach should
provide estimates that are within 25%
of the actual results 75% of the time.
Conte, Dunsmore, and Shen (1986)
SEEKING CERTAINTY
Sadly, people asking for control or
visibility really want certainty.
Which doesn’t exist.
Dan North
https://twitter.com/tastapod/status/116271851767992320
DISTINCTIONS
Target: a stated desirable business
objective
Commitment: a promise to deliver a
specific product within a timeframe
DEFINITION
A good estimate is an estimate that
provides a clear enough view of the
project reality to allow the project
leadership to make good decisions
about how to control the project to hit
targets.
Steve McConnell, Software Estimation
GUTS LIE
PROTIP #2:
380,000 LBS
HEAVIEST BLUE WHALE EVER RECORDED
REALISTIC?
BOOK
RECOMMENDATION
HOFSTADTER’S LAW
“It always takes longer than you
expect, even when you take into
account Hofstadter’s Law.”
Douglas Hofstadter
Gödel, Escher, Bach: An Eternal Golden Braid
TIME FRAMES
“With software estimation you've only
realistically got a choice of 5 mins, 1
hour, 1-2 days, about a week, and then
all bets are off.”
Rob Bowley
https://twitter.com/robbowley/status/115430969825181696
WHY ARE ESTIMATES
SO HARD?
IT’LL BE DIFFERENT
THIS TIME!
THE PLANNING FALLACY
Students estimated their senior thesis
completion time in a 1994 study:
27.4
33.9
48.6
55.5
0
10
20
30
40
50
60
Best Case
Expected Case
Worst Case
Actual
Source: Wikipedia
PREMATURE
ESTIMATION IS
SABOTAGE
PROTIP #3:
DON’T ESTIMATE
If there’s as much chance of you
coming up with something meaningful
by rolling some dice or rubbing the
estimate goat then what purpose are
you satisfying by doing so?
Rob Bowley
CONE OF UNCERTAINTY
OVERESTIMATION
• Inflated prices – might lose the job
• Lack of urgency – project time fills
up the estimate when it could have
been done faster
• Procrastination
UNDERESTIMATION
• Inadequate planning
• Missed deadlines
• Overwork, burnout
• More bugs
• Technical debt
• Damage control
• Unplanned interim releases
• Meetings proliferate
BIG TEAMS ARE
SLOWER THAN
SMALL ONES
PROTIP #4:
TIME
=
ESTIMATE
÷
AVAILABILITY
TEAM EFFICIENCY
Developers Communication
Paths
Individual
Efficiency
Team
Capacity
1 0 100% 1x
2 3 75% 1.5x
3 6 67% 2x
4 10 63% 2.5x
5 15 60% 3x
6 21 58% 3.5x
7 28 57% 4x
8 36 56% 4.5x
9 45 56% 5x
10 55 55% 5.5x
Source: Paul M. Jones, http://paul-m-jones.com/archives/1591
BEWARE
UNWARRANTED
PRECISION
PROTIP #5:
“533.5 hours”
vs
“13 days”
vs
“3 weeks”
COUNT ALL THE
THINGS
PROTIP #6:
TIME FRAMES
“With software estimation you've only
realistically got a choice of 5 mins, 1
hour, 1-2 days, about a week, and then
all bets are off.”
Rob Bowley
https://twitter.com/robbowley/status/115430969825181696
DECOMPOSITION AND
RECOMPOSITION
1. List all the features
2. Break the features into sub-
features
3. Break the sub-features into
components
4. Estimate the components
5. Add the estimates up
LAW OF LARGE NUMBERS
The tendency for errors on the high
side and errors on the low side to
cancel each other out.
i.e.,
The accuracy of the sum is greater
than the accuracy of the individual
estimates.
PAUL JONES’ METHOD
1. List all the controllers required for
each feature
2. List all the methods required for
each controller
3. Estimate 1 dev-pair day per
controller method
BRANDMOVERS
METHOD
1. List all the logical features required
2. Break down each feature into small
logical components
3. List all the pages and modals required for
each feature
4. Estimate the back-end time required for
each logical component
5. Estimate the front-end time required for
each page
6. Sum up the back-end and front-end totals
WHEN IN A
PINCH, USE A
PROXY
PROTIP #7:
PROXY ESTIMATION
1. Assign a size classification to each
feature
2. Compute the average time required
for similarly-sized features from
actual past projects
3. Create estimate ranges for each
feature based on past performance
4. Sum the result
PROS
• Easier
• Faster
CONS
• Less accurate
• Requires collection and archival of
project historical data on a per-
feature basis
STORY POINTS
• Uses a point scale: 1, 2, 4, 8, 16
• Break down the project into epics and
stories
• Assign a point value to each story
• Schedule releases at regular intervals
• The number of points completed per
release is known as “velocity”
• Use the velocity to plan and estimate
the delivery dates for future releases
EXAMPLE
Iteration 1
• 27 story points delivered
• 12 staff weeks expended over 3 calendar weeks
• Effort = 27 points / 12 weeks = 2.25 points/week
• Schedule = 27 points / 3 weeks = 9 points/week
Iteration 2 projection
• 33 story points scheduled
• Effort = 33 points / 2.25 points/week = 15 staff weeks
• Schedule = 33 points / 9 points/week = 4 calendar weeks
T-SHIRT SIZING
• Assign a T-shirt size for development cost
• Assign a T-shirt size for business value
• Create a table of business value to
development cost ratios
• Look up the net business value for each
feature based on the dev cost and
business value T-shirt sizes
• Prioritize the features in order of net
business value
EXAMPLE
Feature Business Value Dev Cost
Feature A L S
Feature B S L
Feature C L L
Feature D M M
Feature E M L
VALUE TO COST RATIOS
XL L M S
XL 0 4 6 7
L -4 0 2 3
M -6 -2 0 1
S -7 -3 -1 0
Development Cost
BusinessValue
BIZ VALUE EXAMPLE
Feature Business
Value
Dev Cost Net Value
Feature A L S 3
Feature C L L 0
Feature D M M 0
Feature E M L -2
Feature B S L -3
YOU CAN’T
NEGOTIATE MATH
PROTIP #8:
PROBLEM SOLVING
When the estimate and target conflict:
• Negotiate features
• Negotiate time
• Negotiate price
ATTITUDE
• Try to be helpful, offer solutions
• Be creative
• Examine what can be done in
parallel to save time
• Be firm – you can’t change the laws
of physics
QUESTIONS?
A HORROR STORY
ONE FINAL WORD
THE SETTING
• Former employer of mine
• Start-up, naïve and inexperienced
• Needed cash bad
THE CLIENT
• Local company in Atlanta
• Had four separate systems in place
for managing customer data, billing,
inventory, and fulfillment
• Wanted this unified and streamlined
into a web-based backoffice
application
• Wanted a customer-facing portal for
online ordering and bill paying
THE ESTIMATE
• Estimated at 1,039 man-hours
• Normal hourly rate was $120/hr
• We did a fixed-bid for $50k, at an
effective hourly rate of $48/hr
THE FALLOUT
• 18 months later…
• 2,500 man-hours
• 1,500+ Subversion commits
• Lots of “unknown
unknowns”, hidden
complexities, and scope creep
THE MORAL
• Don’t succumb to pressure to be
optimistic when estimating
• Use a good estimation methodology
• Try not to do fixed bidding
• Always have a thorough scope
before starting
THANK YOU!
• http://brandmovers.com
• http://jonathonhill.net
• @compwright

More Related Content

What's hot

[HCM Scrum Breakfast] Agile estimation - Story points
[HCM Scrum Breakfast] Agile estimation - Story points[HCM Scrum Breakfast] Agile estimation - Story points
[HCM Scrum Breakfast] Agile estimation - Story pointsScrum Breakfast Vietnam
 
Introduction to Kanban
Introduction to KanbanIntroduction to Kanban
Introduction to KanbanDev9Com
 
Agile estimation and planning peter saddington
Agile estimation and planning  peter saddingtonAgile estimation and planning  peter saddington
Agile estimation and planning peter saddingtonPeter Saddington
 
Estimating and planning Agile projects
Estimating and planning Agile projectsEstimating and planning Agile projects
Estimating and planning Agile projectsMurray Robinson
 
How to estimate in scrum
How to estimate in scrumHow to estimate in scrum
How to estimate in scrumGloria Stoilova
 
The Kanban Retrospective
The Kanban RetrospectiveThe Kanban Retrospective
The Kanban RetrospectiveColleen Johnson
 
Project Server: Who can benefit from it and how?
Project Server: Who can benefit from it and how?Project Server: Who can benefit from it and how?
Project Server: Who can benefit from it and how?SPC Adriatics
 
Mythbusting Software Estimation - By Tood Little
Mythbusting Software Estimation - By Tood LittleMythbusting Software Estimation - By Tood Little
Mythbusting Software Estimation - By Tood LittleSynerzip
 
Agile Estimating And Planning
Agile Estimating And PlanningAgile Estimating And Planning
Agile Estimating And PlanningLuca Grulla
 
It's not a bug, it's a feature!
It's not a bug, it's a feature!It's not a bug, it's a feature!
It's not a bug, it's a feature!SPC Adriatics
 
2015 drupalcampcebu estimation_jrf
2015 drupalcampcebu estimation_jrf2015 drupalcampcebu estimation_jrf
2015 drupalcampcebu estimation_jrfJohnnie Fox
 
Agile estimating 12112013 - Agile KC Dec 2013
Agile estimating 12112013 - Agile KC Dec 2013Agile estimating 12112013 - Agile KC Dec 2013
Agile estimating 12112013 - Agile KC Dec 2013molsonkc
 
Agile Planning and Learning
Agile Planning and LearningAgile Planning and Learning
Agile Planning and LearningAaron Bjork
 
Schedule management where the rubber meets the road v1.5
Schedule management   where the rubber meets the road v1.5Schedule management   where the rubber meets the road v1.5
Schedule management where the rubber meets the road v1.5Nicholas Errico, PMP, PgMP
 
Superweek2019 dmo presentation
Superweek2019 dmo presentationSuperweek2019 dmo presentation
Superweek2019 dmo presentationDanny Mawani Olsen
 

What's hot (20)

[HCM Scrum Breakfast] Agile estimation - Story points
[HCM Scrum Breakfast] Agile estimation - Story points[HCM Scrum Breakfast] Agile estimation - Story points
[HCM Scrum Breakfast] Agile estimation - Story points
 
Introduction to Kanban
Introduction to KanbanIntroduction to Kanban
Introduction to Kanban
 
Agile estimation and planning peter saddington
Agile estimation and planning  peter saddingtonAgile estimation and planning  peter saddington
Agile estimation and planning peter saddington
 
Estimation
EstimationEstimation
Estimation
 
Estimation and Release Planning in Scrum
Estimation and Release Planning in ScrumEstimation and Release Planning in Scrum
Estimation and Release Planning in Scrum
 
Estimating and planning Agile projects
Estimating and planning Agile projectsEstimating and planning Agile projects
Estimating and planning Agile projects
 
How to estimate in scrum
How to estimate in scrumHow to estimate in scrum
How to estimate in scrum
 
The Kanban Retrospective
The Kanban RetrospectiveThe Kanban Retrospective
The Kanban Retrospective
 
Project Server: Who can benefit from it and how?
Project Server: Who can benefit from it and how?Project Server: Who can benefit from it and how?
Project Server: Who can benefit from it and how?
 
Agile Projects | Rapid Estimation | Techniques | Tips
Agile Projects | Rapid Estimation | Techniques | TipsAgile Projects | Rapid Estimation | Techniques | Tips
Agile Projects | Rapid Estimation | Techniques | Tips
 
Mythbusting Software Estimation - By Tood Little
Mythbusting Software Estimation - By Tood LittleMythbusting Software Estimation - By Tood Little
Mythbusting Software Estimation - By Tood Little
 
Agile Estimating And Planning
Agile Estimating And PlanningAgile Estimating And Planning
Agile Estimating And Planning
 
It's not a bug, it's a feature!
It's not a bug, it's a feature!It's not a bug, it's a feature!
It's not a bug, it's a feature!
 
2015 drupalcampcebu estimation_jrf
2015 drupalcampcebu estimation_jrf2015 drupalcampcebu estimation_jrf
2015 drupalcampcebu estimation_jrf
 
Agile estimating 12112013 - Agile KC Dec 2013
Agile estimating 12112013 - Agile KC Dec 2013Agile estimating 12112013 - Agile KC Dec 2013
Agile estimating 12112013 - Agile KC Dec 2013
 
Agile Planning and Learning
Agile Planning and LearningAgile Planning and Learning
Agile Planning and Learning
 
Why WIP Matters
Why WIP MattersWhy WIP Matters
Why WIP Matters
 
Schedule management where the rubber meets the road v1.5
Schedule management   where the rubber meets the road v1.5Schedule management   where the rubber meets the road v1.5
Schedule management where the rubber meets the road v1.5
 
The Pragmatic Agilist
The Pragmatic AgilistThe Pragmatic Agilist
The Pragmatic Agilist
 
Superweek2019 dmo presentation
Superweek2019 dmo presentationSuperweek2019 dmo presentation
Superweek2019 dmo presentation
 

Similar to Estimation Protips

Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyJohn Giaconia
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyKara Hansen
 
Measure what matters for your agile project
Measure what matters for your agile projectMeasure what matters for your agile project
Measure what matters for your agile projectMunish Malik
 
An Agile Overview @ ShoreTel Sky
An Agile Overview @ ShoreTel SkyAn Agile Overview @ ShoreTel Sky
An Agile Overview @ ShoreTel Skygirabrent
 
From Project Manager to Scrum Master
From Project Manager to Scrum MasterFrom Project Manager to Scrum Master
From Project Manager to Scrum MasterLitheSpeed
 
Software Test Estimation
Software Test EstimationSoftware Test Estimation
Software Test EstimationJatin Kochhar
 
Scaling Fast: Growing Engineering Orgs From Zero to IPO
Scaling Fast: Growing Engineering Orgs From Zero to IPOScaling Fast: Growing Engineering Orgs From Zero to IPO
Scaling Fast: Growing Engineering Orgs From Zero to IPONick Caldwell
 
Agile & Lean @ MediaGeniX
Agile & Lean @ MediaGeniXAgile & Lean @ MediaGeniX
Agile & Lean @ MediaGeniXESUG
 
Retrospective and different ways to run it
Retrospective and different ways to run itRetrospective and different ways to run it
Retrospective and different ways to run itLiandra Bassiane
 
The Business Case for DevOps - Justifying the Journey
The Business Case for DevOps - Justifying the JourneyThe Business Case for DevOps - Justifying the Journey
The Business Case for DevOps - Justifying the JourneyXebiaLabs
 
Estimation - web software development estimation DrupalCon and DrupalCamp pre...
Estimation - web software development estimation DrupalCon and DrupalCamp pre...Estimation - web software development estimation DrupalCon and DrupalCamp pre...
Estimation - web software development estimation DrupalCon and DrupalCamp pre...Andy Kucharski
 
User Stories from Scenarios
User Stories from ScenariosUser Stories from Scenarios
User Stories from ScenariosRavikanth-BA
 
Project Management
Project ManagementProject Management
Project ManagementLean Teams
 
Just Enough: Minimally Viable Agile
Just Enough: Minimally Viable AgileJust Enough: Minimally Viable Agile
Just Enough: Minimally Viable Agiletroytuttle
 

Similar to Estimation Protips (20)

Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an Agency
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an Agency
 
Measure what matters for your agile project
Measure what matters for your agile projectMeasure what matters for your agile project
Measure what matters for your agile project
 
Basics of Agile
Basics of Agile Basics of Agile
Basics of Agile
 
An Agile Overview @ ShoreTel Sky
An Agile Overview @ ShoreTel SkyAn Agile Overview @ ShoreTel Sky
An Agile Overview @ ShoreTel Sky
 
Eric Naiburg (Scrum.org)
Eric Naiburg (Scrum.org)Eric Naiburg (Scrum.org)
Eric Naiburg (Scrum.org)
 
From Project Manager to Scrum Master
From Project Manager to Scrum MasterFrom Project Manager to Scrum Master
From Project Manager to Scrum Master
 
Software Test Estimation
Software Test EstimationSoftware Test Estimation
Software Test Estimation
 
Scaling Fast: Growing Engineering Orgs From Zero to IPO
Scaling Fast: Growing Engineering Orgs From Zero to IPOScaling Fast: Growing Engineering Orgs From Zero to IPO
Scaling Fast: Growing Engineering Orgs From Zero to IPO
 
Agile & Lean @ MediaGeniX
Agile & Lean @ MediaGeniXAgile & Lean @ MediaGeniX
Agile & Lean @ MediaGeniX
 
Retrospective and different ways to run it
Retrospective and different ways to run itRetrospective and different ways to run it
Retrospective and different ways to run it
 
Requirements the Last Bottleneck
Requirements the Last BottleneckRequirements the Last Bottleneck
Requirements the Last Bottleneck
 
The Business Case for DevOps - Justifying the Journey
The Business Case for DevOps - Justifying the JourneyThe Business Case for DevOps - Justifying the Journey
The Business Case for DevOps - Justifying the Journey
 
Estimation - web software development estimation DrupalCon and DrupalCamp pre...
Estimation - web software development estimation DrupalCon and DrupalCamp pre...Estimation - web software development estimation DrupalCon and DrupalCamp pre...
Estimation - web software development estimation DrupalCon and DrupalCamp pre...
 
SCRUM Intro
SCRUM IntroSCRUM Intro
SCRUM Intro
 
User Stories from Scenarios
User Stories from ScenariosUser Stories from Scenarios
User Stories from Scenarios
 
NoEstimates@iNatuix
NoEstimates@iNatuixNoEstimates@iNatuix
NoEstimates@iNatuix
 
Project Management
Project ManagementProject Management
Project Management
 
Just Enough: Minimally Viable Agile
Just Enough: Minimally Viable AgileJust Enough: Minimally Viable Agile
Just Enough: Minimally Viable Agile
 
Lean analytics
Lean analyticsLean analytics
Lean analytics
 

Recently uploaded

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Estimation Protips

Editor's Notes

  1. Hello! I’m Jonathon Hill, been in the industry full time for
  2. Brandmovers is a digital brand marketing companyOur clients are household names – names like Disney, Kohl’s, and Dr PepperProjects vary from small to very largeCurrently hiring a mid-level PHP and front-end developer
  3. This is you. You’re peacefully composing code into a profoundly elegant masterpiece, or maybe you’re just staring at your desk, when…
  4. suddenly this guy shows up. He’s got this big idea that he’s pitching to some VCs.You get the30 secondelevator pitch, and then he says,“I’m gonna need you to go ahead and give me an estimate on that so I can set a budget, and be sure to go ahead and use the new coversheet, mmkay?”
  5. Your answer?How you answer this question is extremely important.
  6. Judging by the number of people that think that “estimate” and “quote” are synonymous, I think there is a lot of misunderstanding on what an estimate actually is.There is nothing at all binding in an estimate, it is more like a measurement.
  7. An estimate is simply a “tentative evaluation or rough calculation”.Even a good estimate (by the textbook definition) has a 25% chance of falling short.Would you buy a car that had a 1-in-4 chance of not starting when you try to crank it?If even the best estimation process has a 25% uncertainty, and you allow estimates to be confused for commitments, then from management’s perspective, or the client’s perspective, you’re just like that car – unreliable.
  8. Dan North sez…
  9. Targets:“We need v2.1 ready to demo at a trade show in May.”“Our budget is $2mm, we must limit the cost of the next release to that budget.”
  10. Here’s the problem: estimates and targets often collide. Good estimates are probability statements based on what is known about the project and available resources, and targets are specific business objects that are sometimes quite solid.At Brandmovers, if we’re building a promotion to help generate buzz and excitement for the next Avengers movie, and that movie launches on a particular date, it isn’t really an option to delay launching the promotion if the project runs over.So if an estimate isn’t a promise, what is a good estimate?
  11. To illustrate the point, I’d like to do a little exercise.
  12. I’d like you to estimate the weight, in pounds, of the heaviest blue whale ever recorded.No cheating, don’t Google it.Give a high and a low estimate.Here’s the catch: I want you to estimate this with a wide enough range so that you are 90% confident that the correct answer is in the range that you set.You’ve got one minute. Go.
  13. Now, I’d like to get a show of hands of how many of you captured the correct answer in your range.Almost everyone gets this wrong.
  14. You might be thinking, “c’mon, this is not a realistic exercise.”Folks, estimating in the face of this kind of uncertainty is business as usual for software estimators. Fortunately, there are techniques that will help you get within 25% of the actual number 75% of the time.The other takeaway here is unless you are into statistics and you have have a mathematical reason for saying so, don’t use terms like “90% confident” or “75% confident.”
  15. Before we go any further, I’d like to share a book recommendation.The exercise we just did comes from chapter 2 of the bookSoftware Estimation, by Steve McConnell.Steve is a former Microsoft employee and also authored the book Code Complete.Software Estimation is pretty much required reading for anyone who is responsible for estimating software projects. This book really helped me to understand why good estimation practices work, and what I had been doing wrong for years before.
  16. Hofstadter’s Law illustrates why estimation is so hard, and why so many people get it wrong.In fact, the difficulties with producing even a ballpark estimate and the the tendency to misunderstand and abuse estimation have led some to seek workflows which eliminate estimation altogether. Some agile methodologies do this.Sadly, the dynamics and business models of many companies do not allow such a luxury.
  17. Rob Bowleysez…
  18. Optimism bias is when you believe you are safer from a negative event than others.It’s the idea that you can “beat the odds” or it “won’t happen here because” you are somehow immune to the problems that others have faced.
  19. Similarly, the planning fallacy says,“It’ll be different this time!”
  20. Only 30% of the students completed their thesis in the time they estimated.The remarkable finding from this study is just how far off the mark these students were in their estimates – the average actual thesis completion time was longer than even the average worst-case estimate.Think about the implications of this on your own projects.What would happen if 3 out of 4 of your projects took longer than even your worst-case estimate?
  21. A “black swan” is a rare, unpredictable, high-impact event that in retrospect seems not so improbable.While it is true that it is hard to account for a black swan event in your estimates, my real point in bringing this up is to talk about how unknowns make it almost impossible sometimes to produce a useful estimate.Secretary of Defense Donald Rumsfeld is famous for saying,“There are known knowns; there are things we know that we know.There are known unknowns; that is to say, there are things that we now know we don't know.But there are also unknown unknowns – there are things we do not know we don't know.”It’s the unknown unknowns that really get you.
  22. Provide an estimate, even a range, when you don’t have enough information is worse than useless, they can actually hurt your business.
  23. Rob goes on to say,“What’s the least worst situation to be in?Having an uncomfortable situation with your boss now or when – based on your estimates – the project’s half a million over budget and 6 months late?”
  24. The cone of uncertainty shows how error-prone early estimates are. The lines of the cone outline the best case accuracy you could have in various stages of the project; the blue cloud of uncertainty shows what the variability actually looks like in practice.The cone doesn’t narrow itself over time, you have to narrow it by making decisions and defining the specifications.Early in the process, few decisions have been made about the project, so the variability in the project time/cost is very wide.It’s similar to asking a builder to give you a cost estimate on building a building without telling him whether it’s a doghouse or a skyscraper, or something in between. If the builder is smart, he’ll ask some questions before putting pen to paper.Avoid estimation prior to completion of the project requirements, and plan to re-estimate as soon as the user interface design is complete.
  25. Typical business concerns about over-estimating a project include things like…
  26. However, the consequences and costs of underestimating are vastly higher than the cost of overestimating.These include…
  27. Let’s say you’re a freelancer, and you get a project. You know everything there is to know about the project, and as such, you have the ability to work at 100% of your capacity on the project.
  28. Calculating the time required to complete the project is a simple matter of dividing your estimate by the amount of time per day or week that you can devote to the project.
  29. One day, you get a project that you’ve estimated out at somewhere between 3-4 months of development time. However, your client has a target completion timeframe of only 6 weeks. What do you do?
  30. Being the smart businessman that you are, you get help. Your buddy is available to help and you offer to split the costs with him.Great! You get get the project done in 1.5-2 months, since you’ve doubled the capacity to work on the project, right?Wrong.It’s because you’ve now introduced communication overhead between the two of you.
  31. It gets worse, the more people you add.
  32. The communication overhead grows at an exponential rate.
  33. The actual numbers may be higher or lower, this is a hypothetical model to illustrate my point.
  34. It is best to use the largest units and the fewest significant digits as possible.Match the way you present your estimate to accurately reflect how probable your estimate is, and to communicate to all project stakeholders that this is an estimate that has a certain amount of variability to it.
  35. We’ve talked about a lot of theory, what estimates are, what they’re good for.Now let’s talk about some practical methodology.
  36. Remember what Rob Bowley said?
  37. This is the underlying idea behind estimation by decomposition.Essentially, you break down the project features, and then you break down those sub-features down even further to the individual components that must be built.Estimate each component, and sum the individual estimates to produce the overall estimate.
  38. There are a few different ways to do this. The first way was pretty hard for me to swallow at first.I learned it from Paul Jones and in practice it works very well.This method includes front-end, back-end, and QA time built in and was created based on his personal observations from working on many different projects.Notice the large unit of measure (1 day), and the fact that it assumes two people will be pair programming.I never understood why this method worked so well until I learned about the law of large numbers.Simple methods are often quite effective! It doesn’t take complex mathematics or estimation modeling software to produce a useful estimate. A spreadsheet and a good method are all you need.
  39. To estimate, use multiples of 4 or powers of 2.Rules of thumb:Small features = 2hMedium features = 4hLarge features = 8hVery large features = 16hAnything larger than 16h needs to be broken down further.For pages:Layouts = 8hPages with different layout = 4hPages with same layout = 2hModals = 2-4hDouble or triple front-end time for responsive design or mobile optimization.
  40. Comes from Agile
  41. Pivotal Tracker calculates velocity and divides the upcoming stories into various releases based on the stories’ point values, your velocity, and the length of your iterations.
  42. This is not a true estimation method, but it is useful when all you need to do is figure out what order to build the features in, and what features don’t make business sense to build.
  43. When targets and estimates collide, what do you do?
  44. I.e. the target is usually negotiable, but an estimate cannot be negotiated.
  45. Attitude is everything, as my granddaddy used to say.