Estimating Cost and Schedule of Software Projects
Lawrence J. Peters · Auerbach Publications eBooks · 2024
Scheduling is an activity where our everyday experience can mislead us. As in the planning activity, what seems reasonable does not work because our everyday experience is mostly not applicable. For example, throughout our lives, we frequently have to deal with situations where adding people to a task will make completion occur sooner. By now you should realize that developing software does not work like that. Why? Because it is not a deterministic (outcome determined by cause and effect) process and controlling it until it is complete is an evolving activity. But schedule we must. There have been dozens of papers and books on the topic of project planning and scheduling. The two activities are related but not the same [ 1 ]. Our project plan lays out what we are going to do while the schedule spells out how (and when) we are going to do it. It prescribes what activities will occur, in what order as well as which tasks can occur in parallel. Since we are estimating how many person-hours and how much flow time will be required to do each task, we can compute the cost of labor related to the project plus any other costs such as hardware purchases, the use of professional services (e.g. lawyer, accountant), cost to access the internet, other costs and our profit. The planning and scheduling of even relatively simple software projects have rarely been successful. By that I mean the estimated flow time and person-hours at the start of the project were most often exceeded. In hindsight, our estimates were overly optimistic. That optimism resulted in a project that was late and over budget. Although some see this as unique to software projects, it is not. Complex construction projects and even some relatively simple ones have also run late and over budget often in spectacular fashion. As we shall see in this chapter, a 20-year study [ 2 ] that resulted in a Nobel Prize in Economics in 2003 showed that human beings are incapable of accurately estimating. But other published work [ 3 ] showed how we can correct for this as we shall describe.