Chapter 9—Scheduling 9.1 OVERLY OPTIMISTIC SCHEDULING Excessive or irrational schedules are probably the single most destructive influence in all of software. A. Root Causes of Overly Optimistic Schedules 1. There is an external, immovable deadline. 2. Managers or customers refuse to accept a range of estimates and make plans based on a single-point “Best case” estimate. 3. Managers and developers deliberately underestimate the project because they want a challenge or like working under pressure. 4. Management or sales deliberately underestimate the project in order to submit a winning bid. 5. Developers underestimate an interesting project in order to get funding to work on it. 6. The project manager believes that developers will work harder if the schedule is ambitious and therefore creates the schedule accordingly. 7. Top management, marketing, or an external customer want a particular deadline, and the project manager can’t talk them out of it. 8. The project begins with a realistic schedule, but new features are piled on to the project, and before long the project is running under an overly optimistic schedule. 9. The project is simply estimated poorly. B. Effects of Overly Optimistic Schedules If you want to complete your project in the shortest possible time, it seems to make sense to set a short schedule—it doesn’t work. 1. Schedule accuracy—using an overly optimistic schedule reduces schedule accuracy. If you schedule in the middle of the schedule curve, you’ll have a 50/50 chance of making your deadline. If you go beyond that to an optimistic estimate, you’ll have little or no chance of delivering your product on time. 2. Quality of project planning—an overly optimistic schedule undermines effective planning by feeding bad assumptions into your plans. 3. Adherence to plan—setting an optimistic, unachievable schedule increases the risk that a project will run without a plan. 4. Underscoping the project—an overly optimistic schedule can cause you to spend too little time on the upstream activities of requirements analysis and design. On a wee-run project, you’ll typically spend about one-third of your time on design. The usual effect of a short schedule is that the project rushes through requirements and design. 5. Project focus—overly optimistic schedule can divert managers away from activities that move the project forward. After the project fails to meet its initial delivery date, the project manager’s efforts are diverted into “schedule politics”. 6. Customer relations—when a project starts to look as though it won’t meet its optimistic delivery date, customers, managers, and end-users are unpleasantly surprised. The project manager’s attention is diverted from managing the project to managing the relationship with the customer, and the developer’s attention is diverted from doing real work that move the project forward to generating signs of progress to reassure the customer. 7. Premature convergence—when a project tries to force convergence too early, it will fail to converge, and then it has to do all of those time-consuming activities again later. There is no point in creating a shippable version of a software product until the product is feature-complete and stable. Eight to twelve weeks before you are scheduled to ship the product, you’ll launch a major effort to prepare the product for release, this is called convergence. C. Excessive Schedule Pressure Customers’ and managers’ first response when they discover they aren’t meeting their optimistic schedule is to heap more schedule pressure onto the developers and to insist on more overtime. 1. Quality—About 40 percent of all software errors have been found to be caused by stress. When schedule pressure is extreme, about four times as many defects are reported. 2. Gambling—schedule pressure contributes to poor risk management. 3. Motivation—a little bit of schedule pressure resulting from a slightly optimistic but achievable schedule can be motivating. But at some point the optimistic schedule crosses the threshold of believability, and at the point motivation drops—fast. Developers will not “sign up” to achieve a schedule that is out of reach. 4. Creativity—requires hard thinking and persistence. Excessive stress reduces internal motivation and in turn reduces creativity. 5. Burnout—if you use too much overtime in one project, your developers will more than make up for it on the next project. If your schedule pushes developers too hard, you can experience that burnout on your current project rather than the next. 6. Turnover—overly optimistic schedules tend to cause extraordinarily high voluntary turnover. 7. Long-term rapid development—excessive overtime eliminates the free time that developers would otherwise spend on professional development. 8. Relationship between developers and managers—schedule pressure widens the gap between developers and managers. D. The Bottom Line Accurate schedules results in On-time project High-quality product Happiness and satisfaction More loyalty Greater individual development skills Increased respect among all project participants Experience releasing software on time Overly optimistic schedule and schedule pressure results in Late project Low-quality product Stress Disgruntled, cynical developers Higher turnover Strained relations among all project participants Weakened capacity to develop the next product The shortest actual schedule results from the most accurate planned schedule. 9.2 BEATING SCHEDULE PRESSURE Three factors converge to make up the bulk of the problems associated with setting software schedules 1. Wishful thinking—most software projects are ambitious, not average. 2. Little awareness of the software estimation story or the real effects of overly optimistic scheduling—software can’t be reliably estimated in its early stages. It’s logically impossible. 3. Poor negotiating skills—developers were fairly good at estimating but poor as defending their estimates. Principled Negotiation 1. Separate the people from the problem DO: Work to improve the relationship with you manager or customer. Be cooperative. Work to set realistic expectations. Be sure that everyone understands the software-estimation story Be an advisor on schedule matters, and avoid slipping into the role of adversary. Suggest ways to change the project that will reduce the schedule, but hold firm to not just writing down a different date. 2. Focus on interests, not positions Positions are bargaining statements that are so narrow that in order for one person to win, the other person has to lose. Underlying interests are broader than bargaining positions, and focusing on them opens up a world of negotiating possibilities. If you focus on interests, you’re more likely to find a win-win solution than if you dig into bargaining positions. For schedule demands: Appeal to true development speed Appeal to increasing the chance of success Invoke you organization’s track record 3. Invent Options for mutual gain (win-win) It’s your role to explain the full range of possibilities and trade-offs. Some product options Move some of the desired functionality into Version 2 Deliver the product in stages Cut features altogether Polish some features less Relax the detailed requirements for each feature Some project resource options Add more developers early in the schedule Add higher-output developers Add more testers Add more administrative support Increase the degree of developer support Eliminate company red tape Increase the level of end-user involvement Increase the level of executive involvement Some schedule options Set a schedule goal not an ultimate deadline until the detailed design is completed Agree to look for ways to reduce the development time as you refine the product Agree to use estimation ranges or coarse estimates and to refine them as the project progresses Some miscellaneous options Provide exceptional developer support Provide increased developer motivation 4. Insist on using objective criteria When you reach a deadlock, search for objective criteria you can use to break the deadlock. Don’t yield to pressure, only to principle. Guidelines for keeping schedule negotiations focused on principles 1. Don’t negotiate the estimate itself—you can negotiate the inputs to the estimate, but not the estimate itself. The estimates are determined by its inputs, but only the inputs are negotiable. The results speak for themselves You could say something like this: “This is my best estimate. I can write a different date on a piece of paper, but that won’t be a valid estimate. I can write a bigger number in my checkbook, too, but that doesn’t mean that I’ll have any more money. I’ve already given the team only about a 50-percent chance of delivering the software on time. Planning for a shorter schedule won’t shorten the amount of time it will take them to create the product you want. It will just increase the risk of being late.” Point out that by refusing to accept an impossible deadline you’re really looking out for your customer’s best interests. 2. Insist that the estimate be prepared by a qualified party 3. Insist on a rational estimation procedure. It should comply with the following guidelines: (1) Nails down features before it nails down the estimate, (2) Doesn’t provide unrealistic precision, (3) Re-estimates after changes. 4. Weather the storm. Politely and firmly stand by your estimate. Batten down the hatches and endure the thunderstorm of an unwelcome estimate early in the project rather than the hurricane of schedule slips and cost overruns that will ship your ship.