Organizing Chaos: The Basics of Dependencies

Building a useful and organized schedule is a difficult process. Dependencies are a key part of this process.  Dependencies are the bridge between tasks and the glue that holds the pieces together. They direct the traffic between tasks and tell them when to take place. The better your dependencies, the more organized your schedule becomes.

A Dependency is simply the logic that tells a task when it can occur. This logic creates the organized structure that allows tasks in your project to move, or even be blocked by other tasks. The network of dependencies works in harmony to order tasks so your project flows smoothly from beginning to end.

To make a dependency you need to identify the tasks that will be involved, the task that moves (the successor task), and the task that forces the move (predecessor task). If you have spent time around project managers, you have heard successor and predecessor before.  Unfortunately, these can be confusing terms because they refer to a sense of time. Too often the predecessor is viewed as having to occur before the successor. In terms of dependencies, the predecessor task controls the timing of the successor, and the successor task is one whose date can be changed by a predecessor. This means that the predecessor does not have to occur first.

There are multiple ways to use dependencies, and thus, multiple types of dependencies. Let’s look at a few:

  • Finish to Start: This is the most common and most straightforward type of dependency.  This dependency places the start of the successor task after the end of the predecessor task.
  • Start to Start:  This dependency lines up the start of the successor task with the start of the predecessor task. This can be handy when you want tasks to run along a parallel path.
  • Start to Finish:  This dependency can be a little tricky.  It aligns the end of the successor task with the start of the predecessor.  This can get a little difficult to manage, especially when there are other dependencies that refer to the successor task.  This type of dependency is best suited to tasks that are not on the critical path of the project.
  • Finish to Finish:  Similar to the Start to Start dependency, this lines up the end date of the successor with the end date of the predecessor.

You can enhance any of these types of dependencies by adding a lag.  A lag is simply an amount of time between the ends of the dependency.  For example: Task A (successor) starts 5 days (the lag) after Task B (predecessor) begins.

Date constraints are another way to control tasks on your schedule.  Constraints act like walls that allow tasks to move but have hard stops based on calendar dates.  These generally take the form of “No Sooner Than” or “No Later Than” a specific date.  Tasks can also be anchored to specific dates in the form of “Exactly On”.  Be careful with this one.  By anchoring a task to a date, you remove any flexibility in your schedule and that task essentially controls everything else.