Saturday, September 5, 2009

Project Scheduling And Resource Leveling

By Jorge Dominguez

We all know that in the real world we, as PMs, are given the finish date of the project before we even have a chance to plan for it. This is a good enough reason why we need to get better at scheduling our projects and leveling our finite resources.

Sure, there are tools that allow us to automate the process but a tool is as good as the knowledge of those who use it. All in all, all PMs have a tool and a method by which we create our project schedules. But... we all suffer from common mistakes such as having the wrong dependencies, excessive constraints, inadequate level of detail in the WBS, estimates too granular or inexistent, over allocated resources, etc. Ring a bell?

The tool that is most widely used is MS Project® (MSP). And I am not going to take the time of this article to talk about MSP since this is not the topic. I will, however, mention it as it applies to project scheduling and resource leveling.

The method is what changes from PM to PM. I will explain the "must do" steps and in the correct order.

• Develop WBS

Most organizations have a hierarchical structure to break down the work. Typically, it looks like this: Stage, Phase, Task/Deliverable/Milestone.
This is a way to organize and define the total scope of the project by decomposing the work to be executed into tasks that the project team can execute and create the required deliverables. The tasks, deliverables or milestones are components that can be scheduled, cost estimated, monitored and controlled

• Establish dependencies

Dependencies are defined so that the work is executed in the proper order. Understand the following task dependency types before you use them; incorrect dependencies will impact the finish date of your schedule and create unnecessary constraints:

1) Mandatory (hard logic) - Inherent in the nature of the work being done. They often involve physical limitations (i.e.: a test case must be defined before testing)

2) Discretionary (soft/preferred/preferential logic) - Based on experience, desire or preferences (i.e.: the team decides that they will create the user manual after the first round of testing, although it is not necessary)

3) External - Based on needs or desires of a party outside the project (i.e.: the server must be purchased before configuring)

A network diagram is used to show dependencies in a graphical form. MSP generates a network diagram automatically

• Estimate work

Work is the number of labor units (usually expressed in hours, days or weeks) required to complete a scheduled task. Estimation is equivalent to success. Duration is the total number of work periods (usually expressed as days or weeks) required to complete a scheduled task.
When estimating, keep in mind the different task types:

1) Fixed units (MSP default) - Allows the schedule to calculate the finish date ASAP based on resource availability

2) Fixed duration - Used when the priority is to preserve duration. To complete work, assign resources as needed to satisfy the finish date (remember my comment about "knowing" the finish date before we even plan?)

3) Fixed work - Some project management systems (i.e.: Clarity, formerly Niku) that sit on top of MSP don't support this type because of the effort driven nature of it and the unpredictable results it may create. So, I have chosen to get used to not to use it at all

This is how task types work:

...if you revise Duration ...if you revise Work ...if you revise Units

In a Fixed Units task... Work is recalculated, and units are fixed Duration is recalculated, and units are fixed Duration is recalculated, and work is fixed

In a Fixed Duration task... Work is recalculated, and duration is fixed Units is recalculated, and duration is fixed Work is recalculated, and units are fixed

Task constraint is the next item we need to look at when estimating. You must avoid using moderate and inflexible types. Wrong constraints increase the project risk and extend the finish date:

1) As late as possible (flexible; default) - For projects scheduled from the finish date. Schedules the latest possible start and finish dates for the task

2) As soon as possible (flexible; default) - For projects scheduled from the start date. Schedules the earliest possible start and finish dates for the task

3) Finish no earlier than (moderate; avoid) - For projects scheduled from the start date. Indicates the earliest possible date that the task can be completed, and the task cannot finish any time before the specified date

4) Finish no later than (moderate; avoid) - For projects scheduled from the finish date. Indicates the latest possible date that the task can be completed, and the task can be finished on or before the specified date

5) Start no earlier than (moderate; avoid) - For projects scheduled from the start date. Indicates the earliest possible date that the task can begin, and the task cannot start any time before the specified date

6) Start no later than (moderate; avoid) - For projects scheduled from the finish date. Indicates the latest possible date that the task can begin, and the task can start on or before the specified date

7) Must finish on (inflexible; avoid) - Indicates the exact date on which the task must finish. Other scheduling parameters such as task dependencies, lead or lag time, and resource leveling become secondary to this requirement

8) Must start on (inflexible; avoid) - Indicates the exact date on which the task must begin. Other scheduling parameters such as task dependencies, lead or lag time, and resource leveling become secondary to this requirement

• Assign resources

Resources (typically human) are assigned to tasks, deliverables and milestones that need to be executed. At the beginning of the project, when named resources are not known yet, roles are assigned that can later be replaced with names (i.e.: the role of Analyst is assigned to a task during project scheduling and is later replaced with John Doe when he is the analyst assigned to the task)

• Level resources

Helps in utilizing resources consistently throughout the project. Ensures resources are not over allocated. Helps the PM avoid delays caused by bad allocations. Helps the PM identify and take advantage of unused times by analyzing task dependencies. MSP can automatically level resources based on resource calendar, task types, dependencies, and constraints, however, I have yet to find a PM that has felt comfortable with the way MSP does it. I level resources manually via the Resource Usage view, but if you insist in using the automatic feature of MSP, save a copy first.
If you find resource conflicts (over or under allocations) you could:

1) Delay certain tasks

2) Assign a different resource

3) Change task dependencies

4) Remove tasks

5) Add tasks (instead of using the MSP's split task functionality which is not supported by some project management systems (i.e.: Clarity)

• Determine critical path

Helps the PM identify tasks that must be carefully monitored. The critical path is the longest duration path through a network diagram and it is the shortest path to complete the project. Knowing the project's critical path should be the goal of the scheduling process. MSP calculates the critical path automatically and through the Gantt chart it shows what tasks are in it. One thing to keep in mind is that as tasks are completed ahead or behind schedule the critical path changes. Another is that there can be more than one critical path but this increases risk.

If the critical path takes your project's finish date way too far there are a couple of techniques that PMs can use to compress the schedule:

1) Fast tracking - Perform critical path tasks in parallel that were originally planned sequentially. It usually increases risk and often results in rework

2) Crashing - Assign additional resources to critical path tasks while maintaining scope. Almost always results in increased costs

As PMs, we forget a very important intangible: resource calendars affect project scheduling. Public holidays or time off in a resource's calendar makes those days as non-workdays and therefore, MSP skips them altogether.

If you follow the basic steps explained in this article you should not have major problems with scheduling and resource leveling. Don't you think so...? Well, I do.

Jorge Dominguez, PMP®
http://www.Expiriance.com

Article Source: http://EzineArticles.com/?expert=Jorge_Dominguez
For his entire career Mark Woeppel has been challenging the status quo in organizations, helping to make changes that matter. He is a leader in developing and implementing project scheduling strategies. He is founder and president of Pinnacle Strategies, in Plano, Texas. Pinnacle Strategies offers project planning control training and project management consulting.