No one truly operates in a silo.
Everyone and everything is dependent on some other person or thing.
We see it in politics (“the country’s dependency on oil”), personal matters (“a child is dependent of their parent”), computer science (“adding dependencies to your applications’ library”) and so on so forth.
Project management is no exception.
Such dependencies pose a persisting challenge for nearly every project manager.
What Are Dependencies?
Dependencies are any tasks, events or situations that are either dependent on a previous completion of a task or on which a task is dependent on. It is the relationship between two separate activities within one larger project.
It can be as simple as waiting for a response from another team member to more complex such as data center migrations with 3rd party providers.
They are pervasive in every industry, technical or non-technical, and if not managed well, can result in an inundated backlog, inefficient work, overall project risk, destabilized velocity and postponed value.
Whenever there’s a project, expect a dependency.
Blockers, Bottlenecks and Constraints
There are a few other terms that are often associated with dependencies as it pertains to project management.
Blockers are factors, either internal or external, that prevents the movement of tasks through the workflow.
Bottlenecks are constraints in the system that limits the flow of work.
Constraints and dependencies have a direct correlation. A constraint is a restriction, limitation or setback within the scope of the task in progress.
They can be internal such as a lack of resources like manpower, money or skills.
Let’s say you need to trim 10 trees but only have one gardener skilled enough & equipped properly to do it. The trimming of the trees is therefore automatically dependent on the completion of the trimming at a time.
They can also be external. For example, if you’re building a house, you need to get the right permits and building plans approved before proceeding to lay down the foundation and building the house.
In the examples above, the constraints have produced the dependencies but dependencies can also be the cause of a constraint.
For example, if you’re an event planner, you can’t possibly begin setting up the venue until the materials and decorations arrive. If there is a delay in the movement of these materials, there will be a delay in everything that follows.
The longer it takes to arrive, the less time you have to set up for the event before it is scheduled to start.
Constraints are inevitable and every project manager operates under The Triple Constraint (or the “Iron Triangle” for some).
- Cost: the financial constraints or budget of a project
- Scope: all the tasks required to complete the project in full
- Time: the proposed timeline or schedule for the project to be completed
For a successful completion of a project, a PM should diligently keep track of all constraints and dependencies and reallocate resources as needed.
Projects should always be managed with the intention of producing valuable and high-quality outcomes. Blockers, bottlenecks, constraints and dependencies all prevent progress.
But fortunately, when managed well, they don’t have to cause distress to the project manager, team or organization.
Types of Dependencies
There are different types of dependencies that can be categorized in many ways depending on conditions, relationships, and other factors.
Causal Dependencies – these are dependencies found in the natural flow of tasks within a project. For example, to bake a cake you need to first buy the ingredients, then mix it together, then put it in the oven and finally wait for it to bake. Each task is dependent on the completion of the previous and avoiding one step or task in the process will lead to a failed project.
Resourced Based Dependencies – these are given by constraints and have no causal dependency. Meaning, if all resources were present, all tasks and activities can be completed together. For example, within technical user stories, there could be internal constraints with lack of skills of not understanding technical terms or processes.
Preferential Dependencies – these are dependencies determined by best practices, protocols or preferred processes. They are usually institutionalized to focus on the quality of deliverables. For example, when painting the interior of a home, the order in which the rooms and subsequently the walls are painted can be chosen based on a variety of things such as the required furniture removal, the most used room, or other preferences.
Cross-Team Dependencies – for larger organizations, cross-team dependencies pose a serious challenge. These dependencies tend to exist when two or more teams are needed for the completion of an end-to-end project.
External Dependencies – these are dependencies that are outside the control of project managers or teams and rely on 3rd parties or outside vendors for completion.
FS (Finish-To-Start) Dependencies – this is the most common and logical dependency found in project management (and the real world for that matter). It follows the natural progression or flow from one task to another. Task A must finish in order for Task B to start.
SF (Start-To-Finish) Dependencies – this means that the successor task (Task B) cannot finish until the initiation of the predecessor task (Task A). For example, let’s say you currently have a website live and running but want it replaced with a new one. You wouldn’t take down the old website (Task A) until you have the new website designed and built out (Task B).
SS (Start-To-Start) Dependencies – this means that the successor task (task B) can’t start until the previous task has begun. In other words, both tasks begin at the same time and can run in parallel. For example, in cooking a 3-course meal, while the main entree is in the oven, you can begin making the salad.
FF (Finish-To-Finish) Dependencies – this means that the successor task can’t finish unless the predecessor task is finished as well.
Outside-Inside Dependencies – it’s not uncommon for certain tasks to have a combination of both internal and external dependencies.
NOTE: Given its root in manufacturing, Kanban is great for non-technical projects but it’s also applied in conjunction with technical frameworks like Scrum. When it comes to dealing with dependencies in Scrum, think of them as falling within the following:
- Inter-User Story: dependencies between user stories within the same team
- Inter Team: dependencies between teams
- Inter Product/Release: dependencies across products or releases of the same product
- External: vendors, third parties, customer dependencies, people
Kanban Makes Dependencies Visible
What makes Kanban not only attractive but also efficient lies in its core principles. Among the first is the concept of visualizing the tasks at hand and the flow of work.
The brain processes visual information 60,000 times faster than text and because 40% of all nerve fibers connected to the brain are linked to the retina, we developed a preference for images over text.
An added benefit of visualizing work is it makes blockers, constraints and other dependencies visible as well. Another core principle of Kanban is managing lead time – the average time it takes for one “work” or “task” to go through the entire process from start to finish, including the time waiting between sub-processes.
An unfavorable lead time is a result of constraints in the process and a high number of work-in-process (WIP).
A Kanban board visually displays the work status and process constraints. This transparency is the key to achieving an organizational change. Kanban is designed to be an evolving and growing platform for ultimate efficiency and value.
When there are dependencies and constraints, the Kanban board has no choice but to put progress to a halt.
As a result, these constraints are elevated and must be addressed in order to move forward.
How to Deal With Dependencies in Kanban
It should be noted that there isn’t a one-size-fits-all approach. In fact, while there are many differences between agile, scrum, kanban, waterfall, and other frameworks, many organizations have found combining a mixture of elements from various project management processes better serves their purpose.
After all, the idea behind these practices is for a better and continuous deliverability of value. Kanban offers a flexible way to control and manage dependencies.
#1 Identify All Project Dependencies and Constraints
The good thing about using a visual tool like Kanban is that it brings a lot of dependencies and constraints to surface. Ideally, you’ll want to think through all possible dependencies and constraints before creating a workflow.
If you do it after your workflow is established, you may find yourself questioning or challenging the sequence of steps and as a result, create dependencies when no dependencies exist.
This has the risk of leading to unnecessary complications or delays.
The best way to excogitate potential dependencies and constraints is through a workshop or scheduled team meeting where all members and relevant parties if possible are brought together to discuss how their work is related to each other and what could be holding them back.
You may want to consider having these meetings cross-functional to gather different perspectives on risks and challenges associated with the project.
Regularly scheduled meetings, sometimes referred to as “stand-ups”, also help consistently identify dependencies or constraints within projects.
Whether you have daily standups or weekly standups, looking at the board helps you visually think about how workflows and where work gets stuck.
You may need to divide work into smaller tasks and subtasks as necessary so work can continue moving across the board at a relatively uniform pace.
A novice PM especially can feel overwhelmed with managing task dependencies. But with proper identification and preemptive brainstorming, a project manager can mitigate the chances of project mishaps.
Once you feel confident in knowing what the foreseeable disruptions could be, you are positioned to take the necessary preemptive actions.
BONUS TIP: It may be helpful to calculate the probability of something going wrong with the chained tasks and devise an overview of potential consequences that could happen if the dependency is not met.
#2 Notate Tasks
Once you’ve identified the various dependencies and constraints, annotate each task with the names of tasks it’s dependent on and is dependent on it.
Knowing the stream of prerequisites helps team members ensure the order stays in place and all tasks are completed in a steady stream.
#3 Stack Tasks
This is highly dependent on the type of Kanban board you are using but if you’re using a physical board, stack the dependent tasks on top of each other in the order in which they should be completed.
The top sticky note should be the first item of completion and everything following should be in subsequent order.
If your Kanban board is digital, it’s a matter of searching for the features that offer this type of management tool.
#4 Prioritize Based on Schedules
Sometimes tasks become relevant or more important around specific dates. If there are certain tasks that need to be worked on at a certain date, place them on an actual calendar. Once that date comes, take the task off the calendar and place it in the backlog.
#5 Adding Swimlanes
Kanban makes it easy to customize your board dynamically. You don’t have to stick to the basic 3 columns of “to-do”, “doing” and “done”.
As you go through your workflow and hold daily/weekly meetings with your team, you should constantly be adjusting and modifying your board accordingly.
Adding in horizontal “swimlanes” is an easy way to visually view and track dependencies. This is especially helpful if you have a lot of external dependencies that are mercurial and out of your control.
Parking them in a different section helps the entire team visually see which items are off schedule and spot trends in certain areas.
You could also create a completely new board for handling dependencies. Though this is a more rare practice. Another option is to completely block off a task with dependency details on top.
This visually displays what the holdup is and blocks off the task so team members won’t get distracted.
#6 Adding Additional “Blocked” or “Track” Columns
Similar to “swimlanes”, creating an entirely new column dedicated to tasks or work items that are dependent on another item can help keep your workflow moving at an efficient pace while also ensuring items don’t fall through the cracks.
With a “Blocked” or “Track” column, you can move items that are dependent on other items out of “In Progress” and into a new column that your entire team can visually see and monitor.
#7 Record & Continuously Monitor
You’ll want to log and track each dependency to not only ensure tasks are progressing but help improve the process where applicable. Start tracking 4 simple things:
- Total WIP – anything that has been started by anyone but not yet finished. This could indicate a potential constraint or dependency. For example, you may notice that projects get delayed because a majority of the team only has 3 tasks at any given time while a few other key players have much more.
- Blockers – a dependency, problem or setback. You’ll want to focus on 3 things: 1) how often are items blocked? 2) how long does it stay blocked? 3) where in the process do these blockers happen?
- Throughput – this is the number of items completed per time period.
- Lead time – how long a card takes to travel across the entire board. For example, if your data suggests you leave items blocked for a long time, you may want to approach the item with an “all hands approach” – focusing the entire team on removing the dependency as quickly as possible.
Within the dependency itself, you’ll want to log certain items and bits of information such as:
- A unique ID
- A description detailing what should be delivered
- Date of when it should be delivered by
- Who/What is dependent on it
- Owners – within internal tasks, the task owner is typically the dependency owner as well. For external tasks, such as a reliance on suppliers, it may make sense to have someone else within the project to monitor the relationship and ensure movement of tasks progress.
Having a log of all of this information will help project managers plan efficiently, schedule accordingly and minimize risks. Analyzing the dependency data can help improve the way dependencies are handled. Maybe your team needs to adopt a change in policy? Perhaps you need to bring more processes internally? Or maybe you need to put a higher priority on skills gaps?
#8 Improve Communication
Project managers have to interact with a slew of individuals so communication can be a detriment if not done well. There are two key categories project managers are constantly dealing with: the project team and stakeholders. When it comes to dependencies, specific things PM’s should focus are on:
- The Project Team – PMs should ensure everyone understands their responsibilities and their task linking with each other. Day-to-day interactions between each member can help resolve dependencies and keep the project moving forward.
- Stakeholders – PMs should engage with clients and executives regularly and ensure they understand how the determined dependencies can affect the progress. It’s also important to keep communications on this clear to set realistic expectations and avoid unreasonable requests.
Improving communication goes beyond the typical “meet and catch up” to understand what everyone is working on. True communication should focus on human communication.
This means going out with the team for happy hour or coffee and connecting with each other beyond the scope of the job.
This helps manage dependencies in many ways.
First, you are focusing on getting along with the person. Dependencies and work talk are put on the back-burner as you learn how to communicate and get along with each other.
Second, it fosters a relationship.
We spend ⅓ of our lives at work. Nobody wants the work culture to be unpleasant, and coworkers have been cited as a top reason for people staying at their jobs.
Connecting with your team members improves everyone’s willingness to collaborate and “get it done”.
#9 Empower Teams
Empowering your team members gives them the confidence to say “no” if they find a problem with the order of stories and chain of tasks and not truckle to unreasonable requests.
An empowered project manager can provide effective communication to team members and all relevant stakeholders and influencers in order to resolve any dependencies.
#10 Create a Cross-Functional Team Composition
Cross-team dependencies are one of the biggest challenges for teams and PMs.
When two teams need to rely on each other for the completion of a project, delays and risks are inevitable.
Cross-functional teams can help mitigate dependencies that arise from this.
This means making your team more versatile by having a more cross-functional team of back-end developers, front-end developers, designers, devops, marketing, even sales if needed.
If two teams are working towards different goals, you may have more than one process, especially if both teams barely intersect. You can either have a separate board for each process or add a swimlane to the original board.
#11 Clean Architecture and Code
If you’re a technical project manager, ensuring developers get in the habit of producing clean code means other team members, and even other teams or 3rd parties can easily pick up tasks without any issues.
Modular architectures and frameworks enable a seamless deployment with less unexpected dependencies.
Also having optimized and high-quality user stories can rid any potential dependencies.
Your team should whittle down stories to more granular tasks so the boundaries get minimized.
#12 Remove Accountability on a Single Unit
The Kanban board should be viewed as a complete system with everyone accountable for it as a whole.
Each task should be assigned to certain team members, but avoid managing such tasks as a “per-person” item. Instead, approach the whole solution/product for all teams as a team.
Remove individual accountabilities and being implementing team ownership and fostering a collaborative environment.
When everyone is held accountable, there’s no blame or finger pointing.
When people are accountable for individual items, you’ll find your team playing the blame game as opposed to getting to the root cause of something.
The Five Whys Technique, created by Eric Ries in The Lean Startup, is a simple yet effective strategy to combat this. The methodology is simple.
You ask “Why” five times in a row, and by the end, you should have a deeper insight into the problem at hand.
To Wrap Up
Dependencies are the bane of every PM and organization out there. But it doesn’t have to be.
Using Kanban, every individual, team or large enterprise in any industry can successfully manage and control dependencies within a project. The purpose of
Kanban is to continuously improve one’s own work process. This is done by helping you eliminate bottlenecks, dependencies, and constraints in your existing system while improving the overall workflow and cycle time.
To visualize dependencies in your process, you’ll want to first create an area for dependencies on the board that everyone can see and track.
Then add a dependency symbol or identifier to the corresponding items and finally add them to a dependency matrix and cerebrate a solution.