How to Effectively Track Software Progress
- Tracking Progress: Criteria for Effective Measures
- Activity-Based Measures of Progress
- Detailed Activity-Based Measure
- Comparing Activity-Based and Product-Based Measures of Progress
How can we avoid the"90 percent done"syndrome in software development? Whether through wishful thinking, general optimism, or a desire to avoid confronting difficult situations, many projects do not communicate schedule overruns until late in the project when corrections are much more difficult and the consequences much more severe. In my consulting experience over the past twenty years, I have found that the most common motivation for implementing a measurement program is to track progress. My clients have typically fallen into one of the following categories:
An acquisition or outsourcing organization wanting increased visibility into vendor progress following a bad experience with a vendor who never got the job done or was very late.
A contracting organization experiencing problems in meeting schedules. For them, this situation is no picnic either. By the time they have missed repeated deadlines, their credibility is lacking and project members are burned out.
Executive management wanting a quick, easy-to-understand view of status for a large number of projects.
A typical project in trouble shows an activity or Gantt chart that looks something like Figure 14-1.
Figure 14-1: Typical Gantt chart reflecting overrun schedules and repeated replanning
This pattern is sometimes referred to as a "slinky chart" because the end date just keeps inching to the right. The amount of time scheduled for integration and test typically gets shorter with each new plan. For projects delivering in multiple increments, we may find that functionality moves to later increments, producing what has been called a "bow wave" effect.
Gantt charts provide an easy-to-understand visual representation of the temporal sequencing of activities and certainly have their proper place as a management tool. But they do not give us information about how much of a given activity or product is completed at any specific time. For example, Figure 14-2 shows a Gantt chart for a hypothetical project on March 15. That date marks the halfway point in elapsed time for coding, but that is all the information we have. We know nothing about how much coding was actually done by March 15.
Figure 14-2: Gantt chart for a hypothetical project
How can we effectively track progress? This chapter will describe the characteristics of an effective progress measure. It will also give examples of real-life progress measures that have been used with varying degrees of success, and the pros and cons of each. In each consulting engagement, my objective is to build on what the client currently has available, making those resources more useful. One of the key messages I try to convey is that effective measurement does not, by itself, fix anything, solve anything, or do anything. Measurement often raises more questions than it answers, but these are better questions than people were asking before. And that is a big step forward. The effective use of any progress measure requires an honest desire to know the real status of the project and a willingness to take action to correct problems.
Tracking Progress: Criteria for Effective Measures
An effective measure for tracking progress should exhibit the following characteristics:
Objectivity: The measurements should be based on criteria that are observable and verifiable. Measurements based on objective criteria are difficult to manipulate to make things look better than they are.
Near real time: The measurements should reflect what is going on in the project now, not what happened a month ago. We want to be managing the present, not the past.
Multiple levels: Multiple levels of data enable a manager to drill down and isolate problem areas or to roll up for high-level views. When a project is slipping its schedule, most managers want to know if the entire project is late or specific trouble spots need attention. Along with the drill-down capability, the measure can be rolled up to summary levels for upper management (oversight) review. Thus, an effective progress measure provides a vehicle for communicating project status to people outside the project.
Prediction: The measure must support projections about future progress. Simply knowing that a project is behind schedule is not enough. We also need to predict when it will be completed. In general, past performance provides the best predictor of the future.
Two types of measures are commonly used for tracking progress.
Activities Complete: This measure compares actual progress against planned in terms of the number or percentage of completed activities.
Work Units Complete: This measure compares actual progress against planned in terms of the number or percentage of completed product units.
Each type of measure has strengths and weaknesses that are discussed in the following sections. Each type can be implemented poorly or effectively. Examples of each have been taken from real projects.
Fundamental to each type of measure is the comparison of planned to actual progress. The only way to know whether your project is ahead of or behind schedule is to look at it relative to an expectation. That expectation is your plan.