So what’s all the fuss about dependencies, anyway? I mean, it’s a nice way to tie tasks together but it’s also a lot of work! Besides, I can just enter the start date to get tasks to start where I want them to and there’s nothing wrong with that, right? WRONG!!!!! Sad smile

If you are entering start dates for most tasks you may as well go back to using Excel to manage your schedules. Believe me, I do not want to encourage to do that but let’s face it, if you’re entering too many of those dates then you aren’t letting Microsoft Project do its job. Our schedules need to be dynamic and that can only happen when we have captured ALL of the necessary dependencies.

So how do I know if I have “enough” dependencies in my schedule? I’m glad you asked. EVERY detail task and milestone in your schedule must have a dependency on its finish date. Most tasks should also have dependencies on their start dates, but there will be exceptions to that when you have to schedule tasks to start no earlier than a specific date. (but please keep in mind these should be exceptions to the rule)

If you followed Step 2, entering all of these dependencies will be a breeze. Well, “a breeze” might be a stretch because entering dependencies correctly is actually a lot of work….BUT, following Step 2 will definitely make it easier. In Step 2, I explained that EVERY deliverable (which should be a summary task) needs to have a milestone marking its completion. Not only does this make it possible for you to easily see total cost, total duration and total work for each deliverable but it also makes it easier to set your dependencies.

For example, in the first screenshot below, task B is not driving any other task in this deliverable so what do I link it to? Perhaps it isn’t driving anything else in the entire schedule so should I just leave it as it is and not worry about a dependency for it? NO! If nothing else, task B has to finish before I can finish this deliverable, right? So I have to at least link it to the finish milestone.

PRoject picture

It should look like this instead:

PRoject picture

Now, if something happens and task B takes a lot longer than expected, it the milestone will not show the deliverable has been completed until task B has been completed.

You should also have a milestone marking the completion of the overall project and if there are deliverables that aren’t driving anything else, at the very least they should be linked (the milestones) to the end milestone of the project. For example, I am managing a project right now that involves A LOT of documentation. (Seriously, I have about 50 pages of “light reading” to go through today and that is just for ONE of those documents. Sigh.) There are several documents but they are all pretty much independent of each other and independent of anything else in the schedule. But they have to be written and until they are my project cannot be finished. Each of those documents is linked to the finish milestone of Stage 1. (if you aren’t using stages, you would link this to the end milestone of the project)

In the example below, Deliverable A must finish before we can start working on Deliverable G but notice that the two documents aren’t driving anything else in the schedule. They are both linked to the finish of the project.

PRoject picture

Getting the dependencies right is the key to minimizing the amount of time you’ll spend updating the schedule as the project is underway. It allows the schedule to dynamically update itself as changes are made and also helps you identify a complete critical path.

There’s one more thing I should mention and it’s something I feel strongly about so I’m even going to type it in all CAPS for you. KEEP DEPENDENCIES OFF OF YOUR SUMMARY TASKS. If you’re wondering why dependencies on summary tasks is such a bad thing keep checking back here because I’ll write another post about that eventually. For now, you’ll just have to trust me.

There you have it. Step 4: Entering Dependencies. Just in case you missed it, here are links to Step 1, Step 2 and <a href=”” target=”_blank&quo