You have to disconnect and temporarily relocate the automated conveyor system you just installed to make room for your move of the new switchgear from the loading dock to the switchgear room. How could you have foreseen, and prevented, such rework?
Today's project management software comes with Critical Path Method (CPM) capabilities. So, why do you need to understand CPM? Well, having a handle on the basics of CPM will allow you to use project management software with confidence. Also, you'll have the background for exploring the next layer of complexity in project management: probability, which attempts to compensate for the many factors that cause activity times to vary. But that's another topic.
CPM is not just a data manipulation tool, but a logical approach to work. The better you understand CPM, the better you can use it in software. And that means you can use it where the proverbial rubber meets the road: in the field.
So why use CPM, anyway? A simple project, like installing a new breaker panel, is simple to schedule. However, many projects are not so simple. Projects such as installing new production equipment or building a new facility often contain individual schedules of other disciplines that are also interdependent schedules. In other words, some of your tasks depend on the completion of other tasks by other trades. Thus, you must determine which activity must begin or end for you to start another activity.
You also must determine how many activities you can do concurrently to finish the project on time. For example, if you're wiring a new facility, you have to place your service entrance transformers on their pad before hooking them up. However, while you are preparing the pad, you can rough-in, for example, lighting and receptacle conduits in the building: a concurrent activity. If you're doing a design/build project, then you certainly don't want your electricians standing around waiting for interior walls to go up so they can mount device outlet boxes.
Finally, you need to coordinate activities so other disciplines are not getting in your way. Managing projects involves the usual management functions of planning, scheduling, and controlling (buzzwords in the management training industry). CPM, which is a planning tool, helps you do all three.
Network representation is the foundation for CPM. In other words, you can represent any project pictorially. In the world of CPM, you can represent individual tasks as nodes (shown as circles) and the relationships between them as branches (shown as arrows). Another name for branch is arc.
After first listing all the steps in chart format, as shown in Table 1 (on page 64D of the original article), you develop the network representation shown in Fig. 1 (of the original article), which is an Activity-on-Node (AON) diagram. We use this name because there is one node per activity. This is the most common way people represent projects pictorially, and it's the one we'll use to explain CPM.
Alternatively, you can think of each activity as having a specific beginning and ending point (which it does). We call these ending points events, and you can also use nodes to represent them. If you can represent the events with nodes, then you can represent the activities as arcs connecting the nodes. We call this an Activity-on-Arc (AOA), which is what you see in Fig. 2 (of the original article). Because we use AOA networks to represent both activities and precedence, you have an additional requirement. That is, you must add a dummy activity, represented by a dashed arrow. We use them only to make the system work, the same way you might use a dummy connector on a computer's SCSI port when connecting the various SCSI nodes together. This is no different, really, so don't let it confuse you. Dummy activities have a duration of zero, and their only value is to show precedence. Most CPM programs use the AON diagram as their foundation. But, if you see an AOA diagram, you now know what it means.
What exactly does a CPM do? To answer this, you have to look again at Fig. 1. Yes, you can understand the relationships of activities, but you really have no idea when each activity should start. So, the answer to our question is CPM helps you determine that starting time. Actually, you use CPM to determine the earliest (and latest) starting time, based on your expected duration for each activity and the precedence relationships you determine. (You'll see how to do that in a moment.) When you finish a CPM diagram, you'll know the total expected time it will take to complete your project.
By working backward from a completion date, you determine the latest time to start any given activity without delaying the project. Once you do that, you're ready to calculate the critical path, from which this method gets its name. The critical path consists of those activities that determine how long it will take to complete the entire project. Any delay along the critical path will delay the project.
To develop a critical path, you need to develop earliest start and finish times. Let's begin by calculating the earliest times-we'll refer to Fig. 3 (on page 64F of the original article). Let's call the starting time "time zero." Activity A, which has no precedent activities and thus can be done first, can start as early as time zero. You find the expected finish time by adding the expected duration time to the starting time. In the case of A, that starting time is zero. Let's designate these starting and finish times as the Earliest Start (ES) and Earliest Finish (EF).
We know the EF time for A is 3 (0+3). Remember, you have to do A before you can start B or C. Thus, the ES time for B or C is 3, which is the EF time for A. For any activity, its ES time will be the same as the EF time for all of its predecessor activities. You determine the EF time for B or C by adding the expected duration to the earliest start time.
You continue to add the expected duration to the earliest start time of the other nodes until you get to the end of the activities. Then you have the earliest completion time for the project. Just add this information to your CPM diagram as you go along.
Let's clarify something here. If an activity, such as F, has more than one predecessor, its ES time will be the same as the latest of the predecessor's EF times. You can't start a new activity until you finish every activity you're supposed to do first. In other words, if the longest predecessor activity takes five weeks, you won't start this new activity for five weeks-no matter how fast you finish everything else.
So, how do you develop latest start and finish times? From Fig 3 (of the original article), you can see you could finish the project in 26 days. You also see the earliest time each activity can start.
But what about the latest time for starting each activity without slipping the schedule? Let's suppose you have to complete the project 26 days from now. That date is the latest one at which you can finish the last activity, which is G. Since G takes two days to complete, the latest you can start G is two days before the project completion date. So now you know the Latest Finish (LF) and Latest Start (LS) for activity G. You can keep working backward from the desired completion date to determine other LS and LF times. Remember, you must complete all of an activity's predecessor activities before you can start that activity. For example, if G cannot wait past day 24 (that's the 26 day deadline minus the two days it takes to do activity G), then the LF time for activity F is at the 24th day.
When you are working backward, watch your predecessor relationships carefully, and remember you can't start a task until you finish its predecessor. It can get confusing- that's one reason so many people have stopped doing this by hand for large projects and instead rely on software. Understanding how this works is pertinent to understanding the diagrams.
Remember to cut yourself some slack to avoid late completion. All this information about Earliest Start, Earliest Finish, Latest Start, and Latest Finish can help you keep a project on schedule. But there is one more bit of information that can help you. By comparing the earliest and latest times, you can determine the amount of slack for each activity. If your LF time is 12 weeks and your EF time is 10 weeks, you have two weeks of slack. So in this case, slack is LF minus EF. You can use the Earliest and Latest Start times, too, making slack equal to LS minus ES.
Table 2 (on page 64D of the original article) shows how we calculate slack. As you look at it, note some activities have more slack than others. If you look at all the slack times, you'll see there is one lowest time that's common to several activities. Those activities with the least slack time tend to form a path through the CPM diagram from beginning to end. (You can see this in Fig 3 of the original article.)
This path is what we've been building up to: the critical path. All activities along that path are critical path activities. These activities are the ones you have to watch most closely because problems in any one of these activities will slow the whole project down. You can also see which activities can experience significant delay (C and E) with no impact on the schedule.
This CPM diagram becomes a "moving target" as the project progresses. Keeping up with that target by hand gets tedious. By using software, however, you simply enter the completion times or percent complete data for each activity, and you get a new CPM diagram whenever you want; without going through the whole diagramming process.
Slack won't always be zero along the critical path; it can even be negative in value. When you have negative slack, you must shorten activity times.
1. Develop a statement of work that describes your overall goal. What are you trying to achieve? 2. Define the individual activities or tasks you must perform. 3. Draw the relationships between each activity, and identify the precedence relationships between them. 4. Document the resources you need, including money, personnel, equipment, material, and special services. 5. Decide how long each activity will take, and tie resource elements to your time frame.