A whitepaper describing the management of critical path in Microsoft Project, and how various settings and details affect it.
In the real world, if I was driving from Cleveland, OH to Cincinnati, Ohio for a noon lunch, and it is a 4
hour drive, I must leave before 8:00am or I have no slack. If I leave at 8:00, my little lunch project is on
schedule, but it is mandatory that I make the trip in 4 hours. Any delays for traffic, gas, etc., will cause
me to be late, delaying my lunch by whatever time overrun the drive takes. In other words, a lunch
project with a planned 8:00 start on a 4 hour task is a critical task.
A critical path is made up of the tasks that cannot slip in terms of completion time or else the whole
project would slip.
A critical task is one that if delayed would cause the project completion date to be delayed. A task is
considered critical if it has zero days of slack, where slack is the amount of time that a task can slip
before it affects another task or the project’s finish date. Free slack is how much a task can slip before it
delays another task. Total slack is how much a task can slip before it delays the project. In other words,
a task with no slack that is delayed will cause the project to be delayed. You can change the amount of
time a project plan considers when determining how long before a task is critical by going to the “Tools”
menu and select “Options”, then click on the “Calculation” tab and change the value for “Tasks are
critical if slack is less than or equal to __ days” to some other value. For example, a task requiring 5 days
of work with 7 calendar days available is not critical, unless you set this value to 2.
The critical path may change throughout a project’s lifecycle. As tasks are completed on time, or
delayed new items may become critical to the project. For example, in my drive to lunch, if I originally
scheduled a 7:00am departure for my 4 hour drive, the task is not critical. But if it were delayed until
8:00am or later, it becomes critical.
Critical Path in MS Project
There are several ways to show the critical path in MS Project, the easiest way is to use the detailed
Gantt view. To access this in Project 2007, click the “View” menu, then “More views…”, then select
“Detail Gantt” and choose apply. The critical path is displayed in red. Additionally, next to some noncritical tasks (by default displayed in blue), it shows an additional thin black line and a value in days. This
is the slack time for the task, if it goes beyond that, the task will become part of the critical task. You
should note that the default information columns change on the left hand side. It may wise to create a
project template that uses the detailed Gantt view, with the columns you need to see.
An alternative way is to choose “Project” from the menu, and then select “Filtered…”, and then select
“Critical”. This view may be helpful in very large projects, since it removes from view all but critical
tasks. The tasks still exist, they are just hidden. You can bring all tasks back into view by following the
same steps, but select “All Tasks” in the Filtered menu.
A third way to see critical tasks is to group the project by those criteria. From the “Project” menu,
choose “Group by…”, then chose “Critical”. This will create yellow borders around groups so that you
can see Critical and non-critical tasks. You can reset he view by going back to the “Project” menu,
choose “Group by…”, and then chose “No Group””.
How Project calculates the time a task takes
Since the critical path is essentially the combined time (duration) for all tasks that have no slack and
which do not overlap, Microsoft Project works with two variables to determine the duration for each
task. By default, the formula is:
Duration = Work/ Assignment Units
The duration is the calendar time a task can take (which could be minutes to years), the work is how
much total effort in man-hours a task should take, and the Assignment units is the number of resources
assigned to the task. If we were digging a hole, and assumed one resource on the task, and knew it
would take 8 hours to dig the hole by one person, our formula reveals the obvious: it will take 8 hours
for one person to dig the hole. We see this as:
8 hours of work / 1 resource = 8 hours duration
But if we could add a resource and they could both work just as effectively at the same time, then we
8 hours of work / 2 resources = 4 hours duration
Obviously, we just changed the duration (calendar time) by doubling up resources. Sometimes we
cannot do this; in my previous lunch project, adding a second driver won’t get me there twice as fast,
only one of us can drive at a time.
Just as we added a resource to dig the hole in ½ the time, we may sometimes reduce resources or a
resource’s availability. If we had 8 hours of work to dig the hole, but had a part time employee assigned
to dig it, and they worked 4 hour days, we assign them as 50% on the task (or adjust their work
calendar). A second scenario may be one where they are not as good with a shovel, so we assign a full
time employee as a 50% resource. Regardless, the formula now looks like:
8 hours of work / 1 resource * 50% = 16 hours duration
Obviously we just doubled the task’s duration. If it was part of critical path, we may look at the team
and change or add resources to the task.
So inherently the other variable we may miss is how we understand “assignment units”, it always
inherently takes into account availability or productivity of the resource. And keep in mind a resource
may be a person, or it may be a machine, truck, livestock, etc. If we had two machines that could each
do 100 parts per hour, and needed to turn out 1,600 parts in a work day (8 hours), that task is critical
path (no slack), and we should make it. But if one of the machines is slower and only does 50 parts an
hour, we should assign it as 50% in the units value, to account for its lesser production. Now we can see
the task will take 10.66 hours (1600 parts needed / 150 parts per hour). That can be flagged on our
project plan and we can now adjust accordingly.
Thankfully Project allows us to fix a different variable in the equation, instead of just fixed duration.
There are three ways to set a task (or the default for the project) to use the variables.
- Fixed Units
- Fixed Work
- Fixed Duration (default)
Going back to our hole digging project:
8 hours Work / 1 resource * 100% Units = 1 day Duration
If we create this as a Fixed Duration task type and then change the Units to 50%, Project automatically will change the Work value to four hours. In other words we said no matter what, this will take 8 hours, we can adjust the other variables, and the duration remains the same.
If we set the task to Fixed Work, then the same change in Units (50%) would cause Project to adjust the Duration value to two days. And, if we set the task to Fixed Duration and edited Work to 16 hours, Project would adjust the Units value to 200% in order to keep the Duration value fixed yet still balance the equation. In other words the hole digger must work twice as fast! By the way, that was the only way to get to my lunch faster: if I set the driving task to be Fixed Duration of 3.5 hours, it would tell me what % above the speed limit I must drive to get there. Try telling that to the police officer, and show them your project plan