A dependency occurs when one deliverable is needed in order to make progress on another deliverable. Dependencies can occur at many different levels – one task may be waiting on another, one project may be waiting on another, and even one organization may be waiting on another.
The word “dependency” is often misused, for example, if we said “the project is dependent on having enough resources in place”, we are referring to a general dependency on a particular resource pool, and not a dependency in a project sense. Because of this it is a good idea to cross check your dependencies to ensure they are not risks, assumptions, issues, or constraints on your project.
There are only three underlying reasons why a dependency can exist. There are:
Although there are three underlying reasons why dependencies can exist, there are actually four different types of dependency. These are known as finish-to-start, start-to-start, finish-to-finish, and start-to-finish dependencies.
This is the most common type of dependency. With this type of dependency, then given two tasks, the second task can’t start until the first task has finished. Cooking pizza is used in the example below to shows that we must prepare both the topping and base before we can cook the pizza.
This type of dependency simply requires that the first task has begun, not that it is finished, before the second task can start. Going back to our pizza example, given no resource constraints, then there is no reason why we can’t prepare the toppings as we prepare the base.
This type of dependency simply requires that the first task be finished in order for the second task to finish. Both tasks do not have to complete at the same time, and the second task can be completed at any point after the first task completes. In our pizza example, after the pizza is cooked, we deliver it. We could use a finish-to-finish dependency to show that we take payment for the pizza during this delivery process, and that the delivery step doesn’t finish until after payment is taken.
With this type of dependency we are saying that the second task cannot complete until the first task is started. The second task can finish at any point after the first task starts. In our example we could say that the process of billing the customer begins as soon as the order is received from the customer, but isn’t completed until delivery begins.
Putting all the different dependencies together around our Pizza example we end up with the following project plan:
There are four different dependencies you need to be aware of when planning projects and programs. These are finish-to-start, start-to-start, finish-to-finish, and start-to-finish. I hope that by looking at the example you can see how understanding the differences between these dependencies, and their nuances, enables you to better plan your projects and programs.
RAID: Risks, Assumptions, Issues, and Dependencies
Project Dependencies and Interdependencies: How to Manage Them
Program Management Primer
The Change Equation
What is the Long Tail?
Program Management: Understanding Effort and Influence
Customer Journey Programmes in Financial Services
Lean Startup and Program Management