#noestimates - stop lying to yourself and your customers, and stop estimating

73
Do My Requirements Look Big In This? #NoEstimates Gerard Beckerleg Solution Architect Live Backchannel: #NETUG #NoEstimates Delivering Awesome Web Applications

Upload: gerardbeckerleg

Post on 08-May-2015

1.331 views

Category:

Technology


0 download

DESCRIPTION

After his successful session last year on Agile Scrum, our resident Scrum White Robe Gerard Beckerleg is at it again, except this time he's taking on one of the most divisive topics in software development: Estimation. In this video recorded at the Sydney SSW offices, Gerard Beckerleg takes a dive into the depths of this controversial topic and extracts the most interesting ideas and raises some very difficult questions about the big white elephant in the room that is Software Estimation. After examining the pros and cons of estimation Gerard lays the blueprint for a better way to help you and your clients get what they are really looking for.

TRANSCRIPT

Page 1: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Do My Requirements Look Big In This?

#NoEstimates

Gerard Beckerleg

Solution Architect

Live Backchannel: #NETUG #NoEstimates

Delivering Awesome Web Applications

Page 2: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

“Is there is a way to work, where the software you write ends up being valuable, and the business people you work with end up being happy?”

Dan Milstein

"#NoEstimates is not about ditching estimates. It is about improving the way we work such that estimates become redundant.“

Neil Killick

Page 3: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

About me

Gerard Beckerleg

Solution Architect at SSW SSW Scrum White Robe Agile Automated testing Continuous delivery

Page 4: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Do My Requirements Look

BIG In This?

Page 5: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Agenda

Background

Why estimate?

Problems with software estimation

Are there any alternatives?

Discussion

Page 6: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 7: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 8: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 9: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 10: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

What is an estimate?

verb (used with object), es·ti·mat·ed, es·ti·mat·ing.

1. to form an approximate judgment or opinion regarding the worth, amount, size, weight, etc., of; calculate approximately: to estimate the cost of a college education.

2. to form an opinion of; judge.verb (used without object), es·ti·mat·ed, es·ti·mat·ing.

3. to make an estimate.

Noun

4. an approximate judgment or calculation, as of the value, amount, time, size, or weight of something.

5. a judgment or opinion, as of the qualities of a person or thing.

6. a statement of the approximate charge for work to be done, submitted by a person or business firm ready to undertake the work.

Dictionary.com

Page 11: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

What is an estimate?

“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 its targets.”

Steve McConnell

Page 12: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

1. Why estimate?

Click icon to add picture

Page 13: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

What problem does estimating solve?

“the business as a whole is trying to make a decision — about how to spend it’s money (your time)” Dan Milstein

Businesses need certainty about what they will get and when

Unfortunately for most businesses there is very rarely any certainty in software design and development

Page 14: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

What’s the best thing to do when faced with uncertainty?

Seek information

Page 15: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Cost 20,000

Value 50,000

Decision: BUILD IT

Cost 60,000

Value 50,000

Decision: DON’T BUILD IT

Development

Business

Project x

Project y

Page 16: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 17: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

100,000

Page 18: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

2. Problems with software estimation

Click icon to add picture

Page 19: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 20: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

VacationsHolidaysSick daysTrainingWeekendsCompany meetingsDepartment meetingsSetting up new workstationsInstalling new versions of tools on workstationsTroubleshooting hardware and software problemsRamp-up time for new team membersMentoring of new team membersManagement coordination/manager meetingsCutover/deploymentData conversionInstallationCustomizationRequirements clarificationsMaintaining the revision control systemSupporting the buildMaintaining the scripts required to run the daily buildMaintaining the automated smoke test used in conjunction with the daily buildInstallation of test builds at user location(s)Creation of test data

Steve McConnell

Page 21: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Management of beta test programParticipation in technical reviewsIntegration workProcessing change requestsAttendance at change-control/triage meetingsCoordinating with subcontractorsTechnical support of existing systems during the projectMaintenance work on previous systems during the projectDefect-correction workPerformance tuningLearning new development toolsAdministrative work related to defect trackingCoordination with test (for developers)Coordination with developers (for test)Answering questions from quality assuranceInput to user documentation and review of user documentationReview of technical documentationDemonstrating software to customers or usersDemonstrating software at trade showsDemonstrating the software or prototypesof the software to upper management, clients, and end usersInteracting with clients or end users; supporting beta installations at client locationsReviewing plans, estimates, architecture, detailed designs, stage plans, code, test cases, and so on

Page 22: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Functional Requirements Areas

Setup/installation program

Data conversion utility

Glue code needed to use third-party oropen-source software

Help system

Deployment mode

Interfaces with external systems

 

 

 

 

 

Steve McConnell

Page 23: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 24: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 25: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Effect of personnel factors on project effort

Page 26: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 27: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 28: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 29: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 30: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 31: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 32: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 33: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

21st Century 20th Century

Page 34: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Overestimation

Page 35: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Is it better to over or underestimate?

Page 36: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 37: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 38: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 39: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 40: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Requirements

“Until each specific feature is understood in detail, it's impossible to estimate the cost of a software project accurately” Steve McConnell

Not very agile

Page 41: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

We usually estimate at the start of a project when we have the least amount of knowledge.

The Cone of Uncertainty

Page 42: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

• When telephone numbers are entered, will the customer want a Telephone Number Checker to check whether the numbers are valid?

• If the customer wants the Telephone Number Checker, will the customer want the cheap or expensive version of the Telephone Number Checker? (U.S.-only versus international phone numbers.)

• If you implement the cheap version of the Telephone Number Checker, will the customer later want the expensive version after all?

• Can you use an off-the-shelf Telephone Number Checker, or are there design constraints that require you to develop your own?

• How will the Telephone Number Checker be designed?

• How long will it take to code the Telephone Number Checker?

• Do the Telephone Number Checker and the Address Checker interact? How long will it take to integrate the Telephone Number Checker and the Address Checker?

• What will the quality level of the Telephone Number Checker be?

• How long will it take to debug and correct mistakes made in the implementation of the Telephone Number Checker?

Suppose you're developing an order-entry system and you haven't yet pinned down the requirements for entering telephone numbers.

Page 43: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 44: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

We need everything in the spec!” … tick tock … “We don’t need that … that can wait … this can be simpler … I forgot what that is!

“When we write down our “requirements,” we act like this is our very last chance to ask for anything. So we ask for everything we can think of, everything we might need. We’re pretty sure we won’t get it all anyway, so let’s ask for a lot and hope we get something we can live with.” Ron Jeffries

Page 45: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 46: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

“something based on an unrealistic list of requirements, using weak estimates, made at the moment of maximum ignorance, by people who are always optimistic about their own abilities. It has been squeezed down by managers who think they need to be tough, and sometimes it is just overridden by someone who has made a rash promise to someone higher up the food chain.” Ron Jeffries

The Result

Page 47: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 48: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

http://drewchialauthor.com

Page 49: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 50: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

3. Are there any alternatives?

Click icon to add picture

Page 51: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

“People do not need umbrellas. They need a way to stay dry on a rainy day.”

Neil Killick

Page 52: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 53: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Example - Budgeting a new project

New Subscription Web App

How many people will be interested? What percentage of prospects will turn into subscribers? How much will subscribers pay for the product?

How much of this product can we get done, by what date, for how much money?

Can we begin to bring in enough money to stay alive before our cash runs out?

Business

Development

Need certainty

Page 54: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Example - Budgeting a new project

Team costs 10,000 per week

Business has 500,000

MVP after 9 months

…this is a big risk

Page 55: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Example - Budgeting a new project

Work for 2 weeks (20,000)

Start work on the most important, most risky, most informative parts of the product

Gain better understanding of how hard it is and how long things take

Business will see it working

If after two weeks, things look bad, we’ll know it and we’ll recommend the business stops

If things look good so far, we’ll decide together what the next major decision point will be. It might be a month out, or three months out

Page 56: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Risk Estimation Method

Sequence the work to get as much information as possible

Attack the bigger risks first

Offer choices

Page 57: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 58: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 59: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 60: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 61: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Work in progress

Limit your team’s WIP

Measure throughput

Little’s Law to calculate lead times

Page 62: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 63: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 64: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 65: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 66: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Whenever you feel the urge to start a large project

Stop

Ask yourself, what can I deliver tomorrow that is valuable?

Page 67: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

100,000

Page 68: #NoEstimates - Stop lying to yourself and your customers, and stop estimating
Page 69: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Acknowledgements

Neil Killick @neil_killick

Kent Beck @KentBeck

Ron Jeffries @RonJeffries

Bob Martin @unclebobmartin

Dan Milstein @danmil

Vasco Duarte @duarte_vasco

Woody Zuill @WoodyZuill

Chris R. Chapman @DerailleurAgil

Steve McConnell no twitter????

Page 70: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Delivering Awesome Web Applications

References Part 1

http://xprogramming.com/articles/the-noestimates-movement/

http://www.cio.com/article/742684/_No_Estimates_in_Action_5_Ways_to_Rethink_Software_Projects

http://pragprog.com/magazines/2013-04/estimation

http://neilkillick.com/category/noestimates/

http://derailleurconsulting.com/blog/how-to-run-the-noestimates-puzzle-experiment-v10

http://www.codinghorror.com/blog/2006/06/how-good-an-estimator-are-you.html

http://www.codinghorror.com/blog/2006/07/how-good-an-estimator-are-you-part-ii.html

http://www.amazon.com/exec/obidos/ASIN/0735605351

http://www.stevefenton.co.uk/Content/Blog/Date/201401/Blog/The-No-Estimates-Debate-Distraction/

http://gothandy.wordpress.com/2013/05/19/noestimates-is-a-good-idea/

Page 71: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Reference Part 2

http://pragprog.com/magazines/2013-02/estimation-is-evil

http://www.youtube.com/watch?v=rrkrvAUbU9Y

http://www.amazon.com/gp/product/1935401009

http://www.amazon.com/gp/product/0884271951

http://www.amazon.com/gp/product/0307887898

https://www.facebook.com/notes/facebook-engineering/software-design-glossary/10150309412413920

http://www.amazon.com/gp/product/0321278658

http://www.amazon.com/gp/product/1452654204

http://usersknow.blogspot.com/

http://www.amazon.com/gp/product/1449334911

http://blog.hut8labs.com/no-deadlines-for-you.html

Page 72: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Delivering Awesome Web Applications

Thank You!Sydney | Melbourne | Brisbane | Adelaide

[email protected]

www.ssw.com.au

Page 73: #NoEstimates - Stop lying to yourself and your customers, and stop estimating

Delivering Awesome Web Applications

3 things• @gerardbeckerleg

[email protected]

• http://gerardbeckerleg.wordpress.com