As just discussed, you can draw upon many sources of useful information from completed projects. Taking the time to distill the lessons learned from each project experience is worthwhile. Examining past performance, extracting lessons learned, and incorporating them back into the processes the organization uses are basic tenets of continuous improvement. Yet, many organizations do not take the time to do this. As work on a project winds down, the participants are eager to move to the next project. As a result, the people with the knowledge needed to record the project's experiences may no longer be available. At best, the information may be passed on, but only by word of mouth. Documenting this information is a better way to distribute these best practices uniformly across the organization. Accordingly, an organization's management must encourage this activity if they want the organization to improve. Why bother? Consider the following motivations:
This last item, concerning the software estimation process, may seem to contradict earlier statements in this book. Given the creative and uncertain nature of software projects, it is still not possible to accurately estimate the cost and time needed to complete a software project in the beginning stages. Yet, as the development organization becomes more fluent and comfortable with an iterative development process, it will recognize how the estimation process becomes easier and more accurate after some iterations are completed. The most difficult aspect is explaining to and convincing the client why it is not possible to give a complete, accurate, and precise estimate before the work begins. In the past, the client has probably used contractors who provided these estimates up front. As a result, clients are not easily convinced that this cannot be done reliably. Clients often explain that they must have this information to plan their expenditures in advance. This is a valid issue. This is where the concept of staged contracts is useful (as explained in Chapter 3, "Getting Started: Request for Proposals (RFPs), Proposals, and Contracts"). Figure 15-2 illustrates this. Most early estimates are unreliable and unrealistic. This is partly because the estimates are produced without a good understanding of the system to be built. It's also partly because of wishful thinking, competitive pressure, and the human tendency to overestimate the ability to build a complex product from scratch. It is far better to estimate during or near the conclusion of the Elaboration phase. By the end of the Elaboration phase, information useful to the estimation process can assist with developing the estimate, yet competitive pressure still exists to balance the estimation effort. The amounts shown in Figure 15-2 are not meant to be exact. In other words, estimating the remaining effort at the end of Elaboration doesn't guarantee an accuracy of plus or minus 30%, as the figure implies. You may be able to do considerably better (or worse, depending on your estimation skills!). It is helpful to create a chart similar to Figure 15-2 and populate it with the results of periodic estimates taken during each project's duration. This will help you understand and refine the team's ability to estimate. Figure 15-2. Accuracy of project estimates over timeDerived from Agile & Iterative Development: A Manager's Guide. Used with permission. |