Food for Thought—An e-newsletter published by Software Quality Consulting, Inc. September 2007, Vol. 4 No. 7 Estimating and Scheduling for Dummies, Part 1 What topics would you like to see in this newsletter? Each month, this newsletter tries to provide you with useful information. This is a two-way street and your feedback is important. Please send your thoughts and comments to steve@swqual.com. -------------------------------------------------------------------------------- Welcome to Food for Thought(TM), an e-newsletter from Software Quality Consulting (http://www.swqual.com/index.html?Intro). I've created free subscriptions for my valued business contacts. If you find this newsletter informative, I encourage you to continue reading. Feel free to pass this newsletter along to colleagues by clicking the Forward Email link at the bottom of this email. If you’ve received this newsletter from a colleague and would like to subscribe, please click this Enter New Subscription link (http://www.swqual.com/newsletter/Subscribe.htm?Newsletter). If you don't wish to receive this newsletter, click the SafeUnSubscribe(TM) link at the bottom of this newsletter, and you won’t be bothered again. Your continued feedback on this newsletter is most welcome. Please send your comments and suggestions to info@swqual.com. -------------------------------------------------------------------------------- *** In This Issue *** In This Months’ Topic, I discuss practical techniques to improve estimating skills... Regular features to look for each month are: - Monthly Morsels Hints, tips, techniques and reference info related to this month’s topic - Calendar Conferences, workshops, and meetings of interest to software engineers, QA engineers and anyone interested in software development -------------------------------------------------------------------------------- *** This Month’s Issue *** Estimating and Scheduling for Dummies Part I - Estimating The For Dummies series started in 1991 with "DOS for Dummies" and quickly gained popularity. Now with more than 125,000,000 books in print, the For Dummies series caters to everyone’s needs. Some of the bestselling titles include "Dating for Dummies", "Shakespeare for Dummies", “Feng Shui For Dummies", and yes, “Politics for Dummies” - the book that claims to help you sift through all the babble to get to the truth! If a For Dummies book can help us understand a topic as obscure as politics, maybe its time someone wrote a For Dummies book on Estimating and Scheduling for Software Projects. Why? Because of all the things we do on software projects, by far, estimating and scheduling is the thing we do the worst. Every software company has war stories of failures resulting from inaccurate estimates and unrealistic schedules. With all of this experience to build on, you would think that we would learn from our past mistakes. Well, it seems that we haven’t. The amazing thing about this topic is that it’s not rocket science! People have been estimating and scheduling tasks for hundreds, maybe thousands of years. Yet, we in the software industry have managed to take something that is done well in other industries and screw it up to the point where we often just give up in disgust. Think about this: - Many estimates for software development projects are derived from hunches, guesswork, and gut instincts. - We say things like “that should take about 2 weeks” without any data to support the estimate. - We set schedules based on bad estimates without adjusting for past inaccuracies in estimating. - We don’t bother to keep track of the actual time it takes to complete a task. Without this key piece of information, our estimates can never improve. - Management frequently over-commits and makes unreasonable promises to customers, putting more pressure on the organization to make meaningless estimates and unrealistic schedules. This month, we look at ways to improve the accuracy of estimates. Next month, we’ll continue this discussion with a look at ways to develop realistic schedules. ESTIMATES, TARGETS, COMMITMENTS, AND SCHEDULES To begin the discussion on estimating, we need to start with some definitions. Steve McConnell says that: - “A good estimate [...] provides a clear enough view of the project to allow the project leadership to make good decisions about how to control a project in order to hit its targets.” [1] If you have good estimates, project managers can make good decisions about how to control the project so that you are more likely to meet, or come close to meeting, the project’s targets and commitments. (We’ll define these new terms in a bit.) Okay, so what is a good estimate? - An estimate is good if it is within X% of how long it actually takes to do the work. You can decide how good the estimate needs to be based on risk to the project. Clearly, for some parts of a project, estimates may not need to be as “good” as for others. An important point about estimates that most people don’t understand is that: - Estimates are never negotiable. [1] What does this mean? Well, consider this - it takes about 9 months to have a baby. This estimate is based on physiological data and a whole bunch of personal experience. There’s not much we can do change it. It’s not negotiable! One last point about estimates: - Good estimates can only come from good requirements ... If your projects suffer from poorly written, ambiguous requirements, you have no hope of getting better at estimating. Starting with well-written requirements is the first step. Read more about writing good requirements... (http://www.swqual.com/newsletter/vol3/no3/vol3no3.html) Steve McConnell [1] defines targets as descriptions of desirable business objectives that are determined by making business decisions. Targets are internal to the business. - Unlike estimates, targets are always negotiable. [1] Steve McConnell [1] defines commitments as promises to deliver defined functionality at a specific level of quality by a specific date. These are promises made specifically to customers - be they internal or external. - Like targets, commitments are always negotiable. [1] Steve McConnell [1] defines schedules as a list of a project's terminal elements with intended start and finish dates. Terminal elements are items that are estimated in terms of resource requirements, budget and duration, and are linked by dependencies. - Like targets and commitments, schedules are always negotiable.[1] An important point to remember about schedules: - Good schedules can only come from good estimates... Learn more about accurate estimating and scheduling techniques... (http://www.swqual.com/training/yellow.html) Now that we have defined these terms, let’s discuss some ways to build good estimating skills. BUILDING GOOD ESTIMATING SKILLS Karl Wiegers said that: “There are several ways to become a better estimator. The most basic approach is to record effort, duration or size estimates as well as your estimating processes and assumptions, and then record the actual results from each estimated activity. Comparing actual outcomes to the estimates helps generate more accurate estimates in the future. Estimating procedures and templates that itemize tasks help avoid the common problem of overlooking necessary work.” [2] Just like anything else, some people are better at estimating than others. These folks have mastered a few basic skills that allow them to make good estimates. What are these skills? Here are some examples: - Compare actuals and estimates - The simplest and quickest way to improve your estimating skills is to keep track of the actual time it takes to complete tasks. When a task is completed, compare the actual time with your estimate and reconcile the difference. Ask yourself: - Why did it take longer to complete this task? - What did I not know about this task when I made the initial estimate? - Use expert judgment - Simply put, this means asking people who have done an activity many times in the past. If you’ve never written a device driver before, you might want to talk to people who have, before committing to an estimate. - Analogous estimating - Compare the task to be estimated with previously completed tasks of the same or similar type. If you have recently completed a task (say testing a particular part of an application) and someone asks you how long would it take you to test a similar part of another application, you have some analogous experience upon which to base your estimate. - Parametric estimating - Some tasks are very similar. For these, parametric estimating can be used to estimate the work. Multiply the quantity of work to be performed by your productivity rate. For example, if you are developing a bunch of widgets for a GUI and you know from past experience, it takes you x hours to develop a widget, you can use that information to estimate how long it will take to develop all of the widgets. - Three-Point Estimates - With this method, you create three different estimates – a most likely, optimistic, and pessimistic estimate. Create a final estimate by averaging the three estimates. Here’s an example: testing a new build for an application would most likely take you 14 hours. If you don’t find any showstoppers ( optimistic), then testing will take 12 hours. If there are many showstoppers ( pessimistic), testing could take up to 24 hours. So your final estimate is the average of the three or (14+12+24)/3=16.7 hours. - Consensus-based Estimating - Consensus-based estimating is yet another excellent technique for improving the accuracy of estimates. This technique uses a small group of experienced people to estimate a task that is relatively new. The most popular example of a consensus-based estimating technique is the Wideband Delphi Method. [3] Originally developed by the Rand Corporation, this technique can lead to reasonably good estimates for tasks that are new. Here’s how it works: - Several experienced people are given the problem statement and separately estimate how long it would take them to complete the task – assuming they could work on the task uninterrupted. - When everyone is done, the group comes together with a facilitator and everyone’s estimates are plotted on a simple chart. - The wide variance in the estimates is directly related to differences in assumptions made by each person. - The assumptions made by each person are listed and discussed. A list of assumptions is agreed on - The same team then goes off on their own for the second round of estimating using the new list of assumptions. - The group reconvenes and everyone’s estimates are plotted again. This time it might look like this... - After just two rounds, the estimates start to converge. This process can be repeated until the desired “goodness” (as measured by the variance) of the estimate is achieved. SUMMARY Bottom line - to get better at estimating, you need to track the actual time it takes you to do the work, compare your estimate with the actual time and reconcile the difference. Measure the goodness of your estimates to see if you are getting better. Remember: Good estimates are supported by data not by hunches. Good estimates can only come from good requirements. Only by starting with good estimates can we have a chance at creating realistic schedules that we can meet. More on schedules next month... Till next time... -------------------------------------------------------------------------------- *** Monthly Morsels *** Every month in this space you’ll find additional information related to this month’s topic. - References: [1] McConnell, S., Software Estimation – Demystifying the Black Art, Microsoft Press, 2006 [2] Wiegers, K., “Stop Promising Miracles”, Software Development, Feb 2000. [3] Boehm, B., Software Engineering Economics, Prentice-Hall, 1981 [4] Nasir, M.,“A Survey of Software Estimation Techniques and Project Planning Practices,” 7th International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing (http://csdl2.computer.org/persagen/ DLAbsToc.jsp?resourcePath=/dl/proceedings/&toc=comp/proceedings/snpd- sawn/2006/2611/00/2611toc.xml&DOI=10.1109/SNPD-SAWN.2006.11) - Training in Estimating and Scheduling Building Accurate Schedules from Software Requirements, Boston -Nov 8, 2007 (http://www.ieeeboston.org/edu/2007fall/course_building_schedules.htm) Software Estimation in Depth, Steve McConnell, Oct 1-2, 2007 -Bellevue, WA (http://www.construx.com/Page.aspx?nid=15&id=32) - On-line Resources: Read more about estimating and scheduling techniques... (http://www.swqual.com/newsletter/vol4/no2/vol4no2.html) International Function Point Users Group (http://www.ifpug.org/) COCOMO II (http://sunset.usc.edu/research/COCOMOII/) Critical Chain Methodology - based on Theory of Constraints (http://www.focusedperformance.com/ccfaq.html) -------------------------------------------------------------------------------- *** Calendar *** Every month you’ll find news here about local and national events that are of interest to the software community... - Software Quality Calendar There are many organizations that sponsor monthly meetings, workshops, and conferences of interest to software professionals. Find out what’s happening... (http://www.swqual.com/links/upcoming.html) - Workshops Offered by Software Quality Consulting Software Quality Consulting offers workshops in many topics related to software process improvement. Get more info... (http://www.swqual.com/ seminars/courses.html) -------------------------------------------------------------------------------- *** About SQC *** Software Quality Consulting provides consulting, training, and auditing services tailored to meet the specific needs of clients. We help clients fine-tune their software development processes and improve the quality of their software products. The overall goal is to help clients achieve Predictable Software Development(TM) – so that organizations can consistently deliver quality software with promised features in the promised timeframe. To learn more about how we can help your organization, visit our web site (http://www.swqual.com/index.html?AboutSQC) or send us an email (info@swqual.com). -------------------------------------------------------------------------------- I hope this newsletter has been informative and helpful. Your comments and feedback are most welcome. Send me your feedback... (info@swqual.com) Thanks, Steve Rakitin info@swqual.com Food for Thought, Predictable Software Development, Act Like a Customer, and ALAC are trademarks of Software Quality Consulting, Inc. Copyright 2007. Software Quality Consulting, Inc. All rights reserved. Graphic design by Sage Studio