Gantt charts are a useful project management tool that dates back as far as 1910 and are used to show project phases and schedules. Today’s Gantt chart software has several features. Key amongst these is their ability to help project managers keep track of a project’s progress using dependencies. This blog explains what Gantt chart dependencies are, where to use them, and the problems they help to solve.
A Gantt chart is used to visualize the tasks required for a project as building blocks. Each block represents a crucial task, and its length indicates how much time has been allocated for its completion. The longer the bar, the longer you have to complete the task.
A dependency is a relationship between each block or task. Each individual task is dependent on several others so that some tasks must be completed before you can move on to the next. A Gantt chart dependency is a way of clearly representing these relationships between tasks.
When creating a dependency, you need to identify the ‘predecessor’ and ‘successor’ tasks and then work out the relationship between them. The predecessor is the task that comes first. It controls the start or end date for all related successor tasks. The successor is the task whose start or end date is controlled by the predecessor.
A dependency is a relationship between predecessor and successor tasks. It’s important to note that tasks may have multiple predecessors or multiple successors. This is one of the main reasons for using Gantt charts to visualize these often complex relationships.
There are four commonly recognized dependency types. Knowing what these are can help project managers to complete tasks in the right order or reschedule related tasks if any delays should occur.
These are probably the most common and the most easily understood type of dependency. As the name implies, you must first complete task A before you can move on to task B. If task A is delayed, then you must delay starting on task B. In this context, task A is usually referred to as the predecessor task, while task B is the successor task.
One example of this is installing new software in a company. The company’s employees need training in how to use the software, but this cannot be done until the software has been installed. Task A (predecessor) = install software. Task B (successor) = train employees.
In this kind of dependency, a successor task (task B) cannot begin until the predecessor task (task A) has begun. This kind of dependency is not as common as Finish-to-start, so an example will probably help here.
Say a company is in the process of rolling out a new SAP system. It is standard protocol to perform a stress test on the system before it goes live, but that cannot happen before the company has set up monitoring processes to measure the performance of the stress test. Task A (predecessor) = enable system monitoring. Task B (successor) = begin stress testing.
In this case, a successor task (task B) can only be finished after the predecessor task (task A) has been finished. This is different from a Finish-to-start dependency because you can start task B before task A has been completed, but you cannot finish it. This means the two tasks may run in parallel.
Take the example of setting up a new IT system for a client. Task A is to connect the system to all interfaces and devices. Task B is to install and configure the software. Both these tasks can run in parallel, but you cannot finalize configuring the software until after you have finished connecting all the interfaces and devices.
This dependency is the opposite of the Finish-to-finish dependency. In this case, you can only finish your previous task if the subsequent task has been started. In other words, you can only finish task A (predecessor) after task B (successor) has started.
These kinds of dependencies are not as common as the previous three, but they do occur. Consider migrating from an outdated on-premise IT system to a new on-demand, cloud-based system. If task A is to shut down the old system and task B is to get the new system up and running, then task A can only begin after task B has started.
Learn more about task dependency types and examples.
Lead and lag times are also important phrases to know in the context of dependencies. Lead time is the amount of time you can start a successor task before you complete the predecessor task. Lag time is the time you need after completing the predecessor task before starting the successor task. For example, if you can start a new task before the predecessor task finishes, you can apply a lead time to the new task so that the total project time is shorter.
In a project, certain things must happen in a particular order for the end result to be a success. Gantt chart dependencies can help increase a project’s chances of success by solving some key project management problems.
Gantt chart dependencies can be used for either waterfall or Agile project planning, as they help provide an overarching view of project tasks and overall progress for senior managers and other stakeholders.
It’s true that Agile project planning values flexibility and adaptability and focuses on short-term sprint-based planning rather than extended timelines with set dates. Yet Gantt chart dependencies will still show how changing one task has the potential to impact successor tasks, and therefore impact the product roadmap. This is useful for teams using the Agile methodology since they require stakeholder feedback, and stakeholders can get a clearer idea of project progress by tracking dependencies.
While it is also often assumed that waterfall project management is best suited to a Gantt chart, while Agile project managers prefer to use Kanban boards, you can use both – as we explain in this article:
Whichever PM methodology you use, this bird’s eye view can be critical for gaining and keeping the buy-in of your key stakeholders throughout the life of the project.
By implementing task dependencies on your Gantt charts, you and your project teams are able to plan and delegate tasks more transparently, and more easily share that information between multiple teams when needed, thereby making planning more coherent, and avoiding any errors by structuring key activities in the right order.
When you understand and can anticipate the task dependencies on your project, you can see how they fit together and schedule them more accurately. If you know task B cannot start until task A is complete (a Finish-to-start dependency) you can schedule those tasks on your Gantt chart, with the two tasks as separate horizontal bars with no overlap. If, by contrast, you know task B can run in parallel with task A (a Finish-to-finish dependency) then you can represent the tasks as separate horizontal bars that overlap.
This enables you to calculate the time required for the project more accurately, avoid any possible scheduling conflicts, and reduce the chances of serious delays occurring.
When delays do occur, understanding the task dependencies of your project can save it from failure. When you know how each of your tasks is related, you can make adjustments to dependent tasks to account for setbacks. This means you’ll also be able to see the knock-on effect of a delay to a predecessor task on all of its successor tasks.
Using a Gantt chart tool with an auto-scheduling feature means it can even recalculate the dates of dependencies automatically where needed, without the need for manual intervention.
Now you can reschedule tasks and adjust your project timelines to take account of delays. This means you’re also able to see where extra resources could be applied to speed up the completion of certain key successor tasks to help get the project back on track or to avoid project overrun. This can be especially useful in a multi-team environment where you may be able to reallocate skills between teams if you can anticipate the need to do so.
The Gantt chart is a hugely effective project management tool when used well. Part of getting the most value out of Gantt charts is knowing when and how to track task dependencies. Now you understand the basics of Gantt chart dependencies and how to use them, you should be well placed to start reaping the benefits.
Learn more about task dependency types and examples: