SlideShare une entreprise Scribd logo
1  sur  30
Stop Multiplying by 4
Practical software estimation
Chuck Reeves @manchuck
What is estimation?
Why even estimate?
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”. Were 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 = 5
Deduction
2 + x = y
Induction
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 a
lead 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 with the option 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
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
How far is NY from LA
The average house in the United States uses how many gallons/liters of water
per day?
Francis Scott Key wrote the lyrics, but not the music, for the American National
Anthem
28 degrees Fahrenheit is colder than -15 degrees Celsius.
America On Line purchased Netscape.
Repetition
Pros and Cons
Absurdity Test
Equivalent Bet
90% WIN
10%
Loose
Q. What is the wingspan of a 747
A. 211 ft (64m)
Q. How far is NY from LA
A. 2,808 mi (4,519 km)
Q. The average house in the United States uses how many gallons/liters of
water per day?
A. 350 g (1,324 l)
Q. Francis Scott Key wrote the lyrics, but not the music, for the American
National Anthem
A. True
Q. 28 degrees Fahrenheit is colder than -15 degrees Celsius.
A. False
Q. America On Line purchased Netscape.
A. True
Fuzzy Logic / Tee Shirt
Size Average LOC
Very Small 127
Small 253
Medium 500
Large 1,014
Very 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
Feature
Relative
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
ISBN-13: 978-0735605350
ISBN-13: 978-1118539279
Questions?
Thank You!
Chuck Reeves @manchuck
Software Estimation: Demystifying the Black Art – by Steve McConnell |
ISBN-13: 978-0735605350
Software Requirements: Practical Techniques for Gathering and Managing
Requirements – by Karl Wiegers ASIN: B0043M56R8
How to Measure Anything: Finding the Value of Intangibles in Business –
by Douglas Hubbard | ISBN-13: 978-1118539279
Dev Hell Podcast - Episode 29: Snappy Answers to Stupid Questions

Contenu connexe

En vedette

30 gennaio x sito
30 gennaio x sito30 gennaio x sito
30 gennaio x sitotrimarci
 
Qayamatkabaege
QayamatkabaegeQayamatkabaege
Qayamatkabaegeuzmaan
 
Novembre vetrina
Novembre vetrinaNovembre vetrina
Novembre vetrinatrimarci
 
Zend Framework Foundations
Zend Framework FoundationsZend Framework Foundations
Zend Framework FoundationsChuck Reeves
 
How to use SELINUX (No I don't mean turn it off)
How to use SELINUX (No I don't mean turn it off)How to use SELINUX (No I don't mean turn it off)
How to use SELINUX (No I don't mean turn it off)Chuck Reeves
 
中国共产主义青年团光辉历程
中国共产主义青年团光辉历程中国共产主义青年团光辉历程
中国共产主义青年团光辉历程huakaiyousheng
 
中国共产主义青年团光辉历程
中国共产主义青年团光辉历程中国共产主义青年团光辉历程
中国共产主义青年团光辉历程huakaiyousheng
 
Farmacia Adduasio Andria
Farmacia Adduasio AndriaFarmacia Adduasio Andria
Farmacia Adduasio Andriatrimarci
 
Novità Adduasio
Novità AdduasioNovità Adduasio
Novità Adduasiotrimarci
 
Kinh nghiệm thành công n21
Kinh nghiệm thành công n21Kinh nghiệm thành công n21
Kinh nghiệm thành công n21tuyenteen91
 
Software requirements and estimates
Software requirements and estimatesSoftware requirements and estimates
Software requirements and estimatesChuck Reeves
 
Stop multiplying by 4 Lone Star PHP
Stop multiplying by 4 Lone Star PHPStop multiplying by 4 Lone Star PHP
Stop multiplying by 4 Lone Star PHPChuck Reeves
 
Farmacia Adduasio Andria
Farmacia Adduasio AndriaFarmacia Adduasio Andria
Farmacia Adduasio Andriatrimarci
 
Single page Apps with Angular and Apigility
Single page Apps with Angular and ApigilitySingle page Apps with Angular and Apigility
Single page Apps with Angular and ApigilityChuck Reeves
 
Giới Thiệu Cơ Hội Kinh Doanh Cùng Amway
Giới Thiệu Cơ Hội Kinh Doanh Cùng AmwayGiới Thiệu Cơ Hội Kinh Doanh Cùng Amway
Giới Thiệu Cơ Hội Kinh Doanh Cùng Amwaytuyenteen91
 

En vedette (17)

30 gennaio x sito
30 gennaio x sito30 gennaio x sito
30 gennaio x sito
 
Stp
StpStp
Stp
 
Giugno
GiugnoGiugno
Giugno
 
Qayamatkabaege
QayamatkabaegeQayamatkabaege
Qayamatkabaege
 
Novembre vetrina
Novembre vetrinaNovembre vetrina
Novembre vetrina
 
Zend Framework Foundations
Zend Framework FoundationsZend Framework Foundations
Zend Framework Foundations
 
How to use SELINUX (No I don't mean turn it off)
How to use SELINUX (No I don't mean turn it off)How to use SELINUX (No I don't mean turn it off)
How to use SELINUX (No I don't mean turn it off)
 
中国共产主义青年团光辉历程
中国共产主义青年团光辉历程中国共产主义青年团光辉历程
中国共产主义青年团光辉历程
 
中国共产主义青年团光辉历程
中国共产主义青年团光辉历程中国共产主义青年团光辉历程
中国共产主义青年团光辉历程
 
Farmacia Adduasio Andria
Farmacia Adduasio AndriaFarmacia Adduasio Andria
Farmacia Adduasio Andria
 
Novità Adduasio
Novità AdduasioNovità Adduasio
Novità Adduasio
 
Kinh nghiệm thành công n21
Kinh nghiệm thành công n21Kinh nghiệm thành công n21
Kinh nghiệm thành công n21
 
Software requirements and estimates
Software requirements and estimatesSoftware requirements and estimates
Software requirements and estimates
 
Stop multiplying by 4 Lone Star PHP
Stop multiplying by 4 Lone Star PHPStop multiplying by 4 Lone Star PHP
Stop multiplying by 4 Lone Star PHP
 
Farmacia Adduasio Andria
Farmacia Adduasio AndriaFarmacia Adduasio Andria
Farmacia Adduasio Andria
 
Single page Apps with Angular and Apigility
Single page Apps with Angular and ApigilitySingle page Apps with Angular and Apigility
Single page Apps with Angular and Apigility
 
Giới Thiệu Cơ Hội Kinh Doanh Cùng Amway
Giới Thiệu Cơ Hội Kinh Doanh Cùng AmwayGiới Thiệu Cơ Hội Kinh Doanh Cùng Amway
Giới Thiệu Cơ Hội Kinh Doanh Cùng Amway
 

Similaire à Stop multiplying by 4 nyphp

Sales Email Hacks for Gmail and Salesforce
Sales Email Hacks for Gmail and SalesforceSales Email Hacks for Gmail and Salesforce
Sales Email Hacks for Gmail and SalesforceRingLead
 
ACC 542 Expect Success/newtonhelp.com
ACC 542 Expect Success/newtonhelp.comACC 542 Expect Success/newtonhelp.com
ACC 542 Expect Success/newtonhelp.commyblue007
 
Six steps to delivering a digital workplace - solve the right problems
Six steps to delivering a digital workplace - solve the right problemsSix steps to delivering a digital workplace - solve the right problems
Six steps to delivering a digital workplace - solve the right problemsSam Marshall
 
DNA - Einstein - Data science ja bigdata
DNA - Einstein - Data science ja bigdataDNA - Einstein - Data science ja bigdata
DNA - Einstein - Data science ja bigdataRolf Koski
 
Rinse and Repeat : The Spiral of Applied Machine Learning
Rinse and Repeat : The Spiral of Applied Machine LearningRinse and Repeat : The Spiral of Applied Machine Learning
Rinse and Repeat : The Spiral of Applied Machine LearningAnna Chaney
 
Pin the tail on the metric v00 75 min version
Pin the tail on the metric v00 75 min versionPin the tail on the metric v00 75 min version
Pin the tail on the metric v00 75 min versionSteven Martin
 
Unit 4 ProblemsInstructionsWork through all the problems in Ex.docx
Unit 4 ProblemsInstructionsWork through all the problems in Ex.docxUnit 4 ProblemsInstructionsWork through all the problems in Ex.docx
Unit 4 ProblemsInstructionsWork through all the problems in Ex.docxouldparis
 
Workkeys Tests
Workkeys TestsWorkkeys Tests
Workkeys TestsDonna Bura
 
optimizing_site_performance
optimizing_site_performanceoptimizing_site_performance
optimizing_site_performanceBryan Farrow
 
Exploring the Data science Process
Exploring the Data science ProcessExploring the Data science Process
Exploring the Data science ProcessVishal Patel
 
Selling Your Idea (in 2 minutes) w/ Stephanie Patterson
Selling Your Idea (in 2 minutes) w/ Stephanie PattersonSelling Your Idea (in 2 minutes) w/ Stephanie Patterson
Selling Your Idea (in 2 minutes) w/ Stephanie PattersonStanford Venture Studio
 
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...Optimizely
 
Disaster-Proof Your Business: It's Easier and LEss Expensive than you Think
Disaster-Proof Your Business: It's Easier and LEss Expensive than you ThinkDisaster-Proof Your Business: It's Easier and LEss Expensive than you Think
Disaster-Proof Your Business: It's Easier and LEss Expensive than you ThinkLori Mankin
 
How to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 DayHow to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 DayPhillip Law
 
How to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 DayHow to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 DayPhillip Law
 
ACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docx
ACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docxACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docx
ACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docxSALU18
 
Lidma this is now! 2006
Lidma this is now! 2006Lidma this is now! 2006
Lidma this is now! 2006Todd Ewing
 
Lidma this is Now! 2006
Lidma this is Now! 2006Lidma this is Now! 2006
Lidma this is Now! 2006Todd Ewing
 

Similaire à Stop multiplying by 4 nyphp (20)

Sales Email Hacks for Gmail and Salesforce
Sales Email Hacks for Gmail and SalesforceSales Email Hacks for Gmail and Salesforce
Sales Email Hacks for Gmail and Salesforce
 
ACC 542 Expect Success/newtonhelp.com
ACC 542 Expect Success/newtonhelp.comACC 542 Expect Success/newtonhelp.com
ACC 542 Expect Success/newtonhelp.com
 
Six steps to delivering a digital workplace - solve the right problems
Six steps to delivering a digital workplace - solve the right problemsSix steps to delivering a digital workplace - solve the right problems
Six steps to delivering a digital workplace - solve the right problems
 
DNA - Einstein - Data science ja bigdata
DNA - Einstein - Data science ja bigdataDNA - Einstein - Data science ja bigdata
DNA - Einstein - Data science ja bigdata
 
Rinse and Repeat : The Spiral of Applied Machine Learning
Rinse and Repeat : The Spiral of Applied Machine LearningRinse and Repeat : The Spiral of Applied Machine Learning
Rinse and Repeat : The Spiral of Applied Machine Learning
 
Pin the tail on the metric v00 75 min version
Pin the tail on the metric v00 75 min versionPin the tail on the metric v00 75 min version
Pin the tail on the metric v00 75 min version
 
Unit 4 ProblemsInstructionsWork through all the problems in Ex.docx
Unit 4 ProblemsInstructionsWork through all the problems in Ex.docxUnit 4 ProblemsInstructionsWork through all the problems in Ex.docx
Unit 4 ProblemsInstructionsWork through all the problems in Ex.docx
 
Workkeys Tests
Workkeys TestsWorkkeys Tests
Workkeys Tests
 
optimizing_site_performance
optimizing_site_performanceoptimizing_site_performance
optimizing_site_performance
 
Exploring the Data science Process
Exploring the Data science ProcessExploring the Data science Process
Exploring the Data science Process
 
PowerPoint Karaoke
PowerPoint KaraokePowerPoint Karaoke
PowerPoint Karaoke
 
Selling Your Idea (in 2 minutes) w/ Stephanie Patterson
Selling Your Idea (in 2 minutes) w/ Stephanie PattersonSelling Your Idea (in 2 minutes) w/ Stephanie Patterson
Selling Your Idea (in 2 minutes) w/ Stephanie Patterson
 
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
 
Disaster-Proof Your Business: It's Easier and LEss Expensive than you Think
Disaster-Proof Your Business: It's Easier and LEss Expensive than you ThinkDisaster-Proof Your Business: It's Easier and LEss Expensive than you Think
Disaster-Proof Your Business: It's Easier and LEss Expensive than you Think
 
Turning Information chaos into reliable data
Turning Information chaos into reliable dataTurning Information chaos into reliable data
Turning Information chaos into reliable data
 
How to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 DayHow to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 Day
 
How to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 DayHow to Build an Attribution Solution in 1 Day
How to Build an Attribution Solution in 1 Day
 
ACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docx
ACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docxACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docx
ACCOUNTING INFORMATION SYSTEMSAccess and Data Analytics Test.docx
 
Lidma this is now! 2006
Lidma this is now! 2006Lidma this is now! 2006
Lidma this is now! 2006
 
Lidma this is Now! 2006
Lidma this is Now! 2006Lidma this is Now! 2006
Lidma this is Now! 2006
 

Dernier

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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
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
 
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
 
"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
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 

Dernier (20)

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
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
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
 
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)
 
"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...
 
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
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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
 

Stop multiplying by 4 nyphp

  • 1. Stop Multiplying by 4 Practical software estimation Chuck Reeves @manchuck
  • 2. What is estimation? Why even estimate? Why should developers estimate?
  • 3. 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”. Were 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
  • 4. 2 + x = 5 Deduction
  • 5. 2 + x = y Induction
  • 6. Requirements are the key Measure what is measurable, but make measurable what is not so -Galileo Galilei
  • 7. “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
  • 8. 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.
  • 9. 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 a lead 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
  • 10. 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 with the option 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
  • 11. 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
  • 12. 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 Phone Number < 25 characters and validated with Foo-Bar REST service
  • 13. Break down requirements into smaller parts: Email lookup service Phone validation integration Form logic Lead management UI
  • 14. Historical data Dry run / Unit test Confidence Interval (CI) It is better to be roughly right than precisely wrong. - John Maynard Keynes
  • 15. What is the wingspan of a 747 How far is NY from LA The average house in the United States uses how many gallons/liters of water per day? Francis Scott Key wrote the lyrics, but not the music, for the American National Anthem 28 degrees Fahrenheit is colder than -15 degrees Celsius. America On Line purchased Netscape.
  • 16. Repetition Pros and Cons Absurdity Test Equivalent Bet
  • 18. Q. What is the wingspan of a 747 A. 211 ft (64m) Q. How far is NY from LA A. 2,808 mi (4,519 km) Q. The average house in the United States uses how many gallons/liters of water per day? A. 350 g (1,324 l) Q. Francis Scott Key wrote the lyrics, but not the music, for the American National Anthem A. True Q. 28 degrees Fahrenheit is colder than -15 degrees Celsius. A. False Q. America On Line purchased Netscape. A. True
  • 19. Fuzzy Logic / Tee Shirt Size Average LOC Very Small 127 Small 253 Medium 500 Large 1,014 Very Large 1,988 Source: Software Estimation 2 – Steve McConnell
  • 20. 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
  • 21. Bayes Theorem When you get information, the level of uncertainty will decrease. P (A|B) = P (B|A) P(A) P (B)
  • 22. Priorities – Urgency Matrix Important Not Important Urgent High Priority Not Urgent Medium Priority Low Priority Source: Software Requirements 2 – Karl Weigers
  • 23. Priorities – Prioritization Spreadsheet Source: Software Requirements 2 – Karl Weigers https://www.microsoftpressstore.com/store/software-requirements-9780735679665 Feature Relative 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
  • 24. Politics Remove people from the problem Focus on Interests not Positions DO NOT NEGOTIATE YOUR ESTIMATE!!!!!
  • 25. Final Thoughts • Prefer hours to days (scale easier) • Throwing more developers may not solve the problem • Iterate and be honest
  • 30. Thank You! Chuck Reeves @manchuck Software Estimation: Demystifying the Black Art – by Steve McConnell | ISBN-13: 978-0735605350 Software Requirements: Practical Techniques for Gathering and Managing Requirements – by Karl Wiegers ASIN: B0043M56R8 How to Measure Anything: Finding the Value of Intangibles in Business – by Douglas Hubbard | ISBN-13: 978-1118539279 Dev Hell Podcast - Episode 29: Snappy Answers to Stupid Questions

Notes de l'éditeur

  1. With Companies like Google and Spotify, not caring about deadlines, why should we care about estimating software? Why should we estimate? Estimation is not just about meeting deadlines. Managers need to know if the cost of building is worth the effort. Banks, budgets and backers need to gage how their investment is going to be used. Why should developers Estimate? Developers own the code Magne Jørgensen + Stein Grimstad proved If you have any inkling of budget or time line, Your estimate will be biased. Project Managers and Owners know this information and might try to “fit” the cost into what they are willing to spend
  2. What Developers do Wrong? Developers are capable of taking problems and break it down into smaller parts. When it comes to Estimating, we follow arbitrary means that can cause projects to go over budget or worse, fail completely. A story about estimation that went “well” I needed a developer that was working on another project. He was working with someone who has been programming 30 years. Both were not sure on how long it would take to complete the huge laundry list of items. I sat down with both of them, went over the whole project and broke it up into smaller parts. We then came up with estimates for each items, then sat down with the Project Manager to come up with a time line the client was happy with. The project goes along, for a month, then panic. One of the libs we were using was not working with some version of Safari. Everyone panicked to get a fix in. There was fear that we would miss the deadline. Which would set back my project. We got a fix in, deployed all the changes, and when the smoke cleared, we found that we launched a day early.
  3. How did we do it? When dealing with estimates, you are fighting a battle of uncertainty. Remember this: Its easy to estimate what you know Its hard to estimate what you don’t know Its very hard to estimate what you don’t know you don’t know **Use driving to work example**
  4. Requirements – Wordy Expressions Managers try to “sell” requirements to you. Which means that some times they will add “fluff” to requirements. Wordy expressions add useless information to a statement
  5. Requirements – Actors and Props
  6. Requirements – Misplaced Modifiers Misplaced modifier happens when a word, phrase or clause is improperly separated from the word it describes. In this case, we have valid next to first and last name. Valid modifies First and Last name. Does that mean that we can enter an invalid email address or phone number? Groucho Marx has a famous one: I shot an elephant in my pajamas the other day. How it got into my pajamas Ill never know
  7. Requirements – Clarity Now that we have cleaned up the format and grammar of the requirement, we now look for smells in the requirement. For example, what is considered a “valid” phone number?
  8. Requirement – Smells If estimation is a battle for uncertainty, requirement gathering is a battle against ambiguity. Words used in requirements that cause ambiguity, I like to call Requirement smells. Like Code Smells, these words or phrases raise some red flags about the requirements. Take the time to clarify the requirements before making an estimate.
  9. Requirements – Finial Once you have defined the requirements as best you can, you can now start estimating. We now see that our one requirement for a contact form has grown into a much bigger project then we thought. We need to break down our requirements into smaller parts. Break the requirement into smaller more manageable units. We can then take a look and see which parts have the most uncertainty.
  10. Requirements – Finial Break requirements into smaller parts to make estimating the full feature easier
  11. Tools for Estimating Before getting into some techniques, we are going to need some more information. Using the following tools we can then break down our requirement Historical data Take current data about development and proxy it to new requirements. Start tracking metrics like LOC, Number of Functions, Avg LOC / Function. Apply time to each of those metrics to get a rough idea on how long it takes to create each metric: LOC / Hour / Day. I wrote a script that would run git commit every hour to help with this Dry run / Unit test You don’t need to use a full stack testing framework, but you can test out some critical functions. If you have not previous experience with a service, you therefore have no historical data to base your estimate on. Spending an hour or two on testing out the logic, can provide you with better insight on the complexity for the requirement. Even if you have worked on something similar in the past, do a dry run for the more complex tasks. I was asked to connect to the OH tax service using a SOAP service. In the past I made many SOAP calls, so my estimate reflected that experience. After spending about 15 hours of my 12 hour estimate, I was unable to make the connection for technical reasons and the requirement was dropped (I was told by the developer that I need to use .NET or Java and not PHP in order to use the service). Confidence Interval (CI) This is a statistical model that represents uncertainty. It is calculated by using means and variances. We see them in the real world with hurricane paths. They are great because we do not need to “pad” our estimate. The interval uses a High and Low range that represents our 90% confidence that the “True” value is between them.
  12. Calibration Exercise We are going to do a practice calibration test. Three questions have a number value, for these try use the confidence interval. Three questions will be true or false, do not answer those with null ;).
  13. Repetition Take a lunch break come back in an hour and try your estimate again. Clear your mind and try the estimate again. Don’t read your 1st estimate before trying again to avoid anchoring to your original estimate. Pros and Cons Make a list of things that will happen if your estimate is right and if your estimate is wrong. This helps bring clarity to the problem and remove some bias. After the list, try again Absurdity Test Narrow down your range by using absurd values for your CI and making them smaller. For example, for the wingspan of a 747, starting with a range of 1 to 1000 ft. is absurd. Is 80 to 250 ft sound better? What about 180 to 220 ft? Equivalent Bet This works on a gut feeling. Imagine a spinner that pays out 90% of the time. You choose between your estimate and betting against the spinner. If you choose the spinner, you most likely not confident your value. If you choose your estimate, you might be overconfident and your range is too wide.
  14. Fuzzy logic A simple estimation tool to get an idea on effort. Classify features into Very Small, Small, Medium Large, Very Large. You then have an idea on how much work is needed based on Historical data or Industry average. Keep track of your estimate with hours.
  15. Wideband Delphi AKA Group Based on the statistical Law of Large Numbers. Where by the more information you have, the closer your average is to the true value. This requires a team of at lease 4 people and works best with about 10 total. First choose a coordinator. The coordinator presents the feature requested and takes estimates from each member, and averages the numbers. The coordinator then presents the data to the team. A vote is then cast and if it fails, the team estimates again. It is critical that estimates are kept secret to avoid bias. Traditional Wideband Delphi fails to represent uncertainty since the average is voted on, I recommend that you take ranges and then average the high and low numbers.
  16. Bayes Theorem As stated in the beginning of this presentation, we are going to avoid math as much as possible. However you cannot talk about probabilities with out talking about Bayes Theorem. It was developed by Howard Bayes in the 17th century and is widely used in many applications today from predictive text to suggested ads. The simplicity of the equation makes for highly complex “Bayesian trees”. The take away from Bayes Theorem is this: when you have more information about a probability, you must change your original estimate. The estimate at the start of a project might not always reflect the estimate half way through. By that point you have more clarity and now can better predict the outcome.
  17. Priorities Once all the features have estimates attached, how do you set the priorities on when items are going to get done? Most of the time we use order them in High, Medium, or Low. How effective is that? Based on surveys from project managers, you will find that ~85% of your tasks become High, ~10% Medium and ~5% Low. Three level scale is an easy way to avoid this trap. We create a matrix of Importance vs Urgency. By comparing the values, you get a grasp of the priority scale.
  18. Priorities Prioritization Spreadsheet This is the ultimate way to reduce bias. Have the customer rate relative benefit for each feature on a scale of 1-9. 9 is extremely valuable. Have the owners Estimate the penalty on a scale of 1 – 9, 9 means a serious impact on business Developers Rate the relative on a scale of 1 – 9, 1 is quick an easy. Then rate the technical risk. 1 means you can do in your sleep Then sort the list descending on priority. The priority is based on the Value % /
  19. Politics Dealing with the rest of the company can be a challenge. Keep in mind that there will be politics everywhere you go but you can curve some of resistance you will get. When dealing with managers or product owners remember this: You are responsible for the code. Imagine a scenario where a patient needs to be operated on by a Dr. The patient is on the table and sees the Dr. washing his hands. If the patient yells out to the Dr. to stop washing his hands and get in the OR to start, is the Dr. going to listen? The patient is the boss because he is paying the Dr. but the Dr. is going to act in a manner that benefits the Patient. Remove people from the problem Everyone will want everything done yesterday. You also have your own needs for the project that must be met. If you focus on what is best for the project (or better yet the dollar amount), it helps change the perspective. In the example early with connecting to the FooBar Rest service, if development will cost $2,000 plus another $500 per month to maintain, but saves $2.00 per lead. If you only get 2 leads a day, the savings per lead per month is only about $120. If a sales rep is demanding that this feature be implemented, prove that there is a loss per month with this service, make the priority lower. Focus on Interests not Positions If the estimate takes the project longer than the ship date, work out with the project owners what you can deliver in the time. Try to get features implemented with known bugs and workarounds that you can fix the ship. If this is needed for a trade show, work out a “white page” demoing the features that you wont be able to deliver
  20. Prefer Hours Hours scale more in a day then days do in a week. More Developers It takes 9 months to make a baby, 9 women cannot make a baby in one month. Developers need to be trained, and oriented to a project. Iterate Iterate your estimates in the same way that you iterate code. When you notice a job stopper, inform the party early on in the cycle rather than the end. This will help keep budgets in line and expectations high.
  21. Karl Wiegers ISBN-13: 978-0735618794
  22. Steve McConnell ISBN-13: 978-0735605350
  23. Douglas W. Hubbard ISBN-13: 978-0735605350
  24. Questions?
  25. Thank You