Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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


Published on

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.

Published in: Technology
  • Be the first to comment

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

  1. 1. Do My Requirements Look Big In This? #NoEstimates Gerard Beckerleg Solution Architect Live Backchannel: #NETUG #NoEstimates Delivering Awesome Web Applications
  2. 2. “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
  3. 3. About me  Gerard Beckerleg  Solution Architect at SSW     SSW Scrum White Robe Agile Automated testing Continuous delivery
  4. 4. Do My Requirements Look This? BIG In
  5. 5. Agenda  Background  Why estimate?  Problems with software estimation  Are there any alternatives?  Discussion
  6. 6. 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.
  7. 7. 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
  8. 8. 1. Why estimate?
  9. 9. 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
  10. 10. What’s the best thing to do when faced with uncertainty?  Seek information
  11. 11. Project x Cost 20,000 Development Value 50,000 Decision: BUILD IT Project y Cost 60,000 Value 50,000 Decision: DON’T BUILD IT Business
  12. 12. 100,000
  13. 13. 2. Problems with software estimation
  14. 14. Vacations Holidays Sick days Training Weekends Company meetings Department meetings Setting up new workstations Installing new versions of tools on workstations Troubleshooting hardware and software problems Ramp-up time for new team members Mentoring of new team members Management coordination/manager meetings Cutover/deployment Data conversion Installation Customization Requirements clarifications Maintaining the revision control system Supporting the build Maintaining the scripts required to run the daily build Maintaining the automated smoke test used in conjunction with the daily build Installation of test builds at user location(s) Creation of test data Steve McConnell
  15. 15. Management of beta test program Participation in technical reviews Integration work Processing change requests Attendance at change-control/triage meetings Coordinating with subcontractors Technical support of existing systems during the project Maintenance work on previous systems during the project Defect-correction work Performance tuning Learning new development tools Administrative work related to defect tracking Coordination with test (for developers) Coordination with developers (for test) Answering questions from quality assurance Input to user documentation and review of user documentation Review of technical documentation Demonstrating software to customers or users Demonstrating software at trade shows Demonstrating the software or prototypes of the software to upper management, clients, and end users Interacting with clients or end users; supporting beta installations at client locations Reviewing plans, estimates, architecture, detailed designs, stage
  16. 16. Functional Requirements Areas Setup/installation program Data conversion utility Glue code needed to use third-party or open-source software Help system Deployment mode Interfaces with external systems Steve McConnell
  17. 17. Effect of personnel factors on project effort
  18. 18. 21st Century 20th Century
  19. 19. Overestimation
  20. 20. Is it better to over or underestimate?
  21. 21. 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
  22. 22. We usually estimate at the start of a project when we have the least amount of knowledge. The Cone of Uncertainty
  23. 23. Suppose you're developing an order-entry system and you haven't yet pinned down the requirements for entering telephone numbers. • 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?
  24. 24. 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
  25. 25. The Result  “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
  26. 26.
  27. 27. 3. Are there any alternatives?
  28. 28. “People do not need umbrellas. They need a way to stay dry on a rainy day.” Neil Killick
  29. 29. 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? Business  How much of this product can we get done, by what date, for how much money? Development  Can we begin to bring in enough money to stay alive before our cash runs out? Need certainty
  30. 30. Example - Budgeting a new project  Team costs 10,000 per week  Business has 500,000  MVP after 9 months  …this is a big risk
  31. 31. 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
  32. 32. Risk Estimation Method  Sequence the work to get as much information as possible  Attack the bigger risks first  Offer choices
  33. 33. Work in progress  Limit your team’s WIP  Measure throughput  Little’s Law to calculate lead times
  34. 34. Whenever you feel the urge to start a large project  Stop  Ask yourself, what can I deliver tomorrow that is valuable?
  35. 35. 100,000
  36. 36. 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????
  37. 37. References Part 1           Delivering Awesome Web Applications
  38. 38. Reference Part 2           
  39. 39. Thank You! Sydney | Melbourne | Brisbane | Adelaide Delivering Awesome Web Applications
  40. 40. 3 things • @gerardbeckerleg • • http://gerardbeckerleg.wordpres Delivering Awesome Web Applications