This is a blog post that I’ve been kicking around for a couple of years, and is based on a demonstration that I often do in my Scheduling classes.  Note that this posting is meant more to demonstrate a concept within the tool, and as it is based on a customized third party macro, is not a step by step guide on how to accomplish the exact results. That being said, if set up properly, the entire process can be quite quick and easy.

The PMBOK Guide 3rd Edition identifies the following Time Management Processes:

1) Activity Definition

2) Activity Sequencing

3) Activity Resource Estimating

4) Duration Estimating

5) Schedule Development

6) Schedule Control

….and I admit that I have a copy of the 4th Edition, but can’t claim to have mastered the nuances of the changes from 3rd to 4th.  While we’re on that topic, I’ve been concerned for years that there’s no Schedule Management Planning process to develop the Schedule Management Plan.  It appears that in the newest PMBOK Guide, that’s been given a shout-out in the Develop Project Management Plan process….but I digress, and that is probably a topic for another blog posting.

So the question is what exactly is Schedule Development, and how does this allow us to create more predictable schedules – which is the eternal goal of the scheduler.  I can’t tell you how many times I have had students state that their goal in attending a class is to develop more predictable schedules.  Schedule Development is taking a “paper-based” schedule of durations and network logic, and turning it into a realistic prediction of the future.

So let’s start from the Critical Path Management (CPM).  How do we make a CPM schedule more accurate in determining when a project will end?  There’s no shortage of methods, proponents argue Resource Critical Path, Critical Chain, Earned Schedule, or any one of a number of possibilities.  This blog post is not meant to take a position on any of those methods, but rather to present a simple, easy to use method to insert risk assessments into a typical schedule.

So back to the Critical Path.  Here’s a simple schedule, with a simple Critical Path.  Note that the Critical Path predicts the project will complete on 3/24/2009.

image

In this schedule, I’ve added a couple of custom fields: Risk Factor (Number1), Calculate Optimistic (Duration1), Calculated Pessimistic (Duration2).

To generate these fields, I am asking the user, or more specifically, the project team as a group to assess the level of risk for each given activity, and to assign a measure of the risk from 0-5, with 0 being no risk, 1 being relatively low risk, and a 5 being relatively high risk.

For example, if this is a task we’ve done many times before, and expect the risk of variance to be minimal, we assign it a risk factor of “1.”  If the activity has never been done before, and we honestly have no clue how long it will take, we assign it a risk factor of “5.”  “0” is for completed tasks only.

On the backend, I have developed a table to map each of the risk factors to a predefined (and yes, arbitrarily developed) probability distribution curve:

Risk Factor Optimistic Pessimistic
0 1 1
1 0.9 1.1
2 0.8 1.5
3 0.7 2
4 0.6 2.5
5 0.5 3

So if a task of 10 days is assigned a Risk Factor of “5,” the Optimistic Duration will be .5 X 10d = 5d, and the Pessimistic Duration will be 3 X 10d = 30d.

Now, as a team, let’s revisit the original schedule and perform a group activity to identify the level of risk on each of the tasks.

image

Now we need to incorporate a third party tool.  For demonstration purposes, I typically like to use a customized version of Jack Dahlgren’s free Blackjack macro, which is downloadable from his website, www.masamiki.com.  For a production schedule, I would recommend using a more robust tool like Risk+ or @Risk.

image

Now, depending on the specs of your machine and the time of the day, you go and get a knish and coffee while you wait – or if you are in Houston, like I am right now, you go out and get a jalapeno sausage kolache and a Shiner.  When you come back after a minute or so, you should see the following:

image

The macro will drop the 500 different permutations of the schedule into an Excel workbook that looks like this:

Prework Envisioning Planning Developing Stabilizing Deploying Wrapup
1/5/2009 16:54 1/21/2009 14:56 2/20/2009 13:02 3/11/2009 8:19 3/17/2009 13:46 4/3/2009 14:30 4/8/2009 14:14
1/5/2009 16:38 1/21/2009 14:47 2/12/2009 14:22 3/25/2009 10:06 4/6/2009 10:57 4/21/2009 16:20 4/27/2009 10:32
1/6/2009 8:03 1/26/2009 8:03 2/17/2009 14:48 3/25/2009 14:52 4/8/2009 15:55 4/24/2009 10:34 4/28/2009 9:32
1/6/2009 8:05 1/19/2009 14:04 2/12/2009 15:39 3/26/2009 16:38 4/8/2009 8:53 4/24/2009 15:18 4/28/2009 15:53
1/6/2009 8:25 1/19/2009 13:12 2/19/2009 10:26 3/18/2009 15:47 3/31/2009 15:42 4/20/2009 11:45 4/23/2009 14:46
1/6/2009 9:08 1/21/2009 16:24 2/12/2009 15:45 3/18/2009 16:23 4/2/2009 8:43 4/20/2009 10:38 4/23/2009 8:45
1/6/2009 9:10 1/19/2009 11:27 2/18/2009 11:34 3/11/2009 14:47 3/20/2009 11:53 4/10/2009 9:15 4/15/2009 13:22
1/5/2009 16:45 1/21/2009 11:20 2/25/2009 11:25 3/25/2009 15:26 4/1/2009 16:22 4/21/2009 11:41 4/24/2009 8:32
1/6/2009 8:37 1/21/2009 10:11 2/24/2009 15:47 3/12/2009 8:19 3/19/2009 14:07 4/7/2009 16:22 4/10/2009 10:45
1/6/2009 9:21 1/21/2009 15:53 2/20/2009 8:28 3/9/2009 14:36 3/25/2009 10:04 4/14/2009 9:32 4/16/2009 11:50
1/6/2009 8:32 1/22/2009 13:50 2/19/2009 11:58 4/1/2009 13:33 4/15/2009 15:37 5/7/2009 13:29 5/11/2009 11:44
1/6/2009 9:43 1/23/2009 11:29 2/18/2009 9:06 3/25/2009 15:25 4/7/2009 16:18 4/30/2009 15:22 5/4/2009 15:55
1/6/2009 8:50 1/22/2009 14:33 2/24/2009 15:27 3/30/2009 11:11 4/8/2009 13:39 4/23/2009 16:49 4/27/2009 14:34
1/6/2009 9:44 1/20/2009 15:46 2/23/2009 11:52 3/31/2009 11:37 4/14/2009 13:06 4/30/2009 9:40 5/1/2009 16:23
1/6/2009 8:48 1/23/2009 11:37 2/24/2009 13:25 3/19/2009 13:29 4/2/2009 15:49 4/21/2009 9:29 4/23/2009 16:07
1/6/2009 8:58 1/22/2009 14:57 2/18/2009 9:24 3/27/2009 11:24 4/9/2009 8:47 4/28/2009 8:35 5/1/2009 15:05
1/6/2009 9:18 1/22/2009 16:17 2/18/2009 14:22 3/20/2009 14:59 3/31/2009 15:03 4/22/2009 11:43 4/27/2009 16:42
1/6/2009 9:33 1/21/2009 8:21 2/12/2009 16:43 3/2/2009 14:07 3/16/2009 14:03 4/8/2009 10:37 4/13/2009 10:32
1/6/2009 8:24 1/23/2009 15:36 2/12/2009 11:53 3/3/2009 15:56 3/10/2009 16:56 4/1/2009 13:35 4/6/2009 11:52
1/5/2009 17:00 1/21/2009 13:41 2/10/2009 15:44 3/5/2009 14:45 3/13/2009 8:58 4/6/2009 16:02 4/9/2009 10:51

It is using the Excel random number generator to generate random dates between the optimistic and pessimistic dates.  Note that the more robust risk management tools have their own random number generator which is more statistically robust than the Excel engine, and allow you to change the random number distribution based on the task characteristics and historical data.

In Excel, I then run the Data Analysis add in to generate a histogram of the output.

image

….and after some formatting, I get the following result:

image

Using the red line as a guide, I can now predict that there’s only a minimal chance that this project will complete on or even near 3/26.  And if I really sharpen my Excel skills, I can develop a picture showing the most probable end date of the project:

image

*Disclaimer: I took a couple of shortcuts to develop this picture, so it should not be considered to be statistically accurate based on the data above.

Using tools like this, you can now easily assess the level of risk on your project, and the probability based on that risk of hitting a specific date.

Note that there are a couple of things you will need to do to keep your project updated each reporting cycle:

1) As tasks complete, make sure that the actual duration is entered, and the Risk Factor is toggled to “0.”  As the task is now completed, there should be no risk that the task will shift, thus the Optimistic and Pessimistic Durations should equal the Duration.

2) Periodically, the team will need to reassess the risk of future activities.  As the activities get closer to the present, the number of unknowns should decrease, and the level of risk should decrease accordingly.

3) Run the Monte Carlo simulation and statistical evaluation at each update cycle.  Check to see if the probable end date is shifting.

4) Track buffer and buffer penetration on your schedule (which will be the topic of another post).