Thursday, June 30, 2016

Practical PMP with MS Project - Negative Total Float

Can negative float exist in a schedule network? What impact does it have? How does it impacts the critical path? As a Project Planner or Manager how should work on these cases?

These were some of the questions that came up in a recent session on Practical PMP with MS Project. The MS Project® version used was 2016 and PMBOK® version used is its 5th edition.

First, the definition of Total Float (or Total Slack). Putting it simply:  "This is the amount of time that an activity can be delayed without delaying the project finish date or violating a schedule constraint."

Taking an example - say you have a task "Task - A". This task can be delayed by 3 days without delaying the project's finish date. The total float of Task - A is 3 days.

Now, let us take a MS Project sample, which is shown below. There are many tasks in this project - each of these tasks have Free Slack (or Free Float) or Total Slack (or Total Float) shown. To see these floats - just switch to View tab -- Data group -- Tables -- Schedule table (or you can add the columns in the default Entry table).

Figure - 1: A Sample Project
In the above project, let us look at Task B. It is starting on Wednesday (July 1) and finishing on Friday (July 3), i.e., a duration of 3 days. The project's end date is Wednesday, July 8 (in next week). Obviously, you can push "Task B" by 3 days - Monday, Tuesday and Wednesday (July 6, July 7 and July 8) - without impacting the finish date of the project. Hence the total float or total slack for Task B = 3 days. 

Note the critical path here: Start - Task E - Task F - Finish. It is the longest path or path having float values less than equal to zero. The critical path is highlighted in red. To see the critical path enable the checkbox "Critical Tasks" under Format tab -- Bar Styles group. There many other ways to see the critical tasks.

Next, let us see when the negative total float can come. 

Scenario - 1: Setting a Hard Constraint (MSO)

I'll be setting a hard constraint on Task B - a Must Start On (MSO) constraint. This can be done in the Task Information dialog box, which is launched when you double click on a task.

Figure - 2 : Hard Constraint Set
I have set the MSO on June 30 (Tuesday) for Task B, 1 day before the scheduled start of the task, which is July 1 (Wednesday). Next, I pressed the "OK" button in the dialog box. 

As I pressed OK, the below message popped up. I selected the 3rd option and continued by pressing OK button.

Figure - 3: Message while Setting the MSO

Next, the below message popped up. This is clearly saying there will be scheduling conflict if you set this constraint. 

Figure - 4: Message - Scheduling Conflict
We will go ahead as we know there will be scheduling conflict by setting a hard constraint on a linked task. I selected the 2nd option above and then clicked OK. 

Now, see the impact on the schedule. The new schedule comes as shown below with two critical paths now. But more importantly, the total float/slack of Task B is now changed from 3 days to -1 day.

Figure - 5: Total Float as Negative with MSO Constraint
The constraint is shown in the indicator column. As you can see B's total slack/float has turned negative. Similarly for the tasks it has been linked to. Also, another critical path has come in, i.e., Start - Task A - Task B - Finish. This is due to my setting for critical path - any tasks having a float value less than equal to zero will be critical.

By how it became -1 day (earlier 3 days)?

To understand that, let us draw the Schedule Network Diagram, where we will find out the Early Start (ES), Late Start (LS), Early Finish (EF) and Late Finish (LF). I am using Forward and Backward pass approach to calculate these values (as one would be doing while preparing for PMP Exam)
Figure - 6: Forward and Backward Pass Calculation

The legend on the top right of the above diagram shows the ES, LS, EF, LF values for each activity. 

Now total float is calculated as the difference between LS and ES or the difference between LF and EF. For example the total float for Task A = LS - ES = 4 - 1 = 3 days. Take the Task B, for it total float = LS - ES = 6 - 3 = 3 days. The result is same while being calculated with MS Project (refer Figure - 1). But that diagram does not show the ES, LS, EF, LF values. The below one shows (Figure - 7). To see Early Start, Late Start, Early Finish and Late Finish, you can add them as columns into the table of MS Project view.

Figure - 7: Forward and Backward Pass - Auto Calculated in MS Project

These values exactly matches what we saw in theory. 
For Task B, when it was scheduled, without any constraint:

ES = Wednesday (July 1) 
LS = Monday (July 6)
EF = Friday (July 3)
LF = Wednesday (July 8)
Total Slack = 3 days

Now, let us see what happens when I applied the MSO constraint. The values change as shown below.
Figure - 8: Forward and Backward Pass with Constraint
- Auto Calculated in MS Project

The values for ES, LS and also EF and LF have changed. By applying a hard constraint, we changed the dates for ES, LS, EF and LF.

This resulted in the Total Slack/Float as -1 day.

Scenario - 2: Setting a Semi-Flexible Constraint (SNLT)

In this scenario, I am setting a semi-flexible constraint on Task B, i.e., Start No Later Than (SNLT) constraint. I'll set the constraint in similar fashion as done before. The constraint date is June 30 again.

Figure - 9: Total Float as Negative with SNLT Constraint
As you can see, here again the total float/slack has turned negative for Task B. Here too, we have multiple critical paths.

Scenario - 3: Setting a Deadline 

In this case I am setting a deadline for Task B. Task B is scheduled to be completed by Friday, July 3. (Check the Figure - 1). I am setting the deadline as Wednesday, July 1. Deadline can be set from the Task information dialog box as shown below.

Figure - 10 : Setting Deadline for Task B
After I set the deadline, I pressed on OK button on the above dialog box. Now see how the schedule for the project looks like.
Figure - 11: Total Float as Negative with Deadline
In this case, again the total float has turned negative. There are now multiple critical paths as float value is negative for some of the tasks. 

Finally, coming back to our initial set of questions:

1. Can negative float exist?
Yes. As we saw, negative float can exist with various scenarios. If total slack or float is positive, it informs about the time that the task can be delayed without delaying the project's finish date. If total slack/float is negative, it informs about the amount of time that must be saved so as not to delay the project's end date.

2. Where does negative float come?
I have listed scenarios where negative float comes up for the schedules - primarily with constraints (deadline, if you think at a higher level, is also a type of constraint). So, negative total float can come up when you violate a schedule constraint.

3. What impact does negative floats have?
It lessens the flexibility of the schedule. A schedule with many negative floats is not a desirable one. The schedule also becomes quite unrealistic.

4. What impact does it have on the critical path?
There will be multiple critical paths in the network diagram now. This increases the risk of the project. Do note that critical path setting here has been done that way from Backstage View -- Options. 

5. As a Project Planner or Manager how should work on these cases?
Rework the schedule to remove the negative floats. In fact, there are cases when a schedule with negative float will not be accepted by your sponsor or sponsoring organization.

You may also like courses on Practical PMP:

You may also like: