Antipattern #4: Pushing dependencies to the side
If your teams are experiencing slowness, which could jeopardize the transformation, the root cause is most likely dependencies.
Note: this is the fourth article in the series on anti-patterns when moving to the product model. Here’s the first anti-pattern: "Giving too much autonomy, too soon".
By Marcus Castenfors and Jan Grape
The tech lead, arms crossed, wasn’t being passive-aggressive—just stating the facts. The company was bogged down with dependencies, hindering their ability to deliver value quickly. They were boxed in.
A week or so earlier, we had facilitated a session to define experiments that could be quickly launched in the market. We used Teresa Torres’ discovery technique, Opportunity Solution Trees, to break down how teams could:
Meet business objectives
Solve customers’ problems and address their needs
Brainstorm solutions
Slice the solutions into small, tangible experiments
There was great enthusiasm during and after the workshop, but as the team moved into delivery, they encountered several “Oh crap” moments.
Oh crap moments
“Oh crap” moments happen when you’ve left discovery and moved into delivery. You have a solution to build and a line of sight on the goal, but as you progress, you hit a roadblock. You need something from another team. You look at each other and say: “Oh crap.”
The number of “Oh crap” moments a team faces in delivery is a direct measure of their slowness. These moments lead to a cascade of poor outcomes:
Waiting
Parallel work
Loss of focus and re-prioritization
Oh crap moments = dependencies
These issues lower engagement within the team. Dependencies not only hinder a team's ability to deliver value but can also lead to the “loop of transformation failure”—where stakeholders don’t see the value in the new way of operating. Moving to the product model comes with the expectation of faster deliveries, better returns on investment, and other significant business outcomes.
But what exactly are dependencies, and why are they so bad?
A dependency means you need to rely on something or someone outside your team to complete your work. Here’s a classification of dependencies into four categories:
Should teams have no dependencies?
No, dependencies aren’t inherently bad. Essentially, you don’t want teams to be totally “uncoupled”—you want them to be “loosely coupled.”
Uncoupled: Teams can release independently with little to no collaboration with other teams.
Loosely coupled: Teams can release independently but still collaborate with other teams.
Here’s a question for you, the reader: What dependencies do you have? What’s causing you or your teams “Oh, crap” moments? Ponder upon that question for a second or two.
Now, let’s dive into how you could remove some of your roadblocks.
How to avoid this anti-pattern
To avoid this anti-pattern, you need to be diligent about identifying and removing blocking dependencies. One effective approach is to facilitate a value stream mapping workshop.
Value stream mapping
First, what’s a value stream? A value stream is the series of activities that you do to create value, from the very first upstream activities of hatching the idea to downstream, launching in production, and having the features used by customers or end-users.
Step 1: Gather a cross-functional team who have been involved in delivering a recent initiative
To identify dependencies, facilitate a retrospective on a recently challenged initiative. The more recent, the better—the knowledge will still be fresh.
Ideally, the participants in the room will not only be from product and tech, but also from other parts of the organization who have been involved from upstream to downstream.
Step 2: Visualize the timeline of activities from start to finish
If you have a large group, divide them into sub-groups. The first task is to visualize a timeline of activities from start to finish. What discovery and delivery activities were involved?
For instance:
Customer X wants to receive this feature → They talk to sales → Sales talks to product → Product investigates etc
Step 3: Highlight where there were issues along the way
Use icons like an exclamation point (⚠️) to visualize dependencies.
Step 4: Stack rank dependencies
Once you have mapped out the value stream, discuss and stack rank the dependencies that you have found, with the most blocking ones at the top.
Step 5: Create action to remove dependencies
Create an action plan to remove a specific dependency. This could mean that you need to have discussions with other teams about:
Simplifying ways-of-working
Streamlining or removing unnecessary approval procedures
Automating tasks
Training in new technologies
Optimizing the architecture for speed of delivery to reduce architectural dependencies
Step 6: Create a wall of dependencies
For your team, visualize the list of dependencies. Try to cut one dependency per sprint or increment.
Be relentless about cutting blocking dependencies.
What else you could try
Create a dependency map
This is an excellent technique for product teams to isolate their most blocking dependencies with other teams.
Use a whiteboard:
Draw your team in the center.
Surround it with the teams you collaborate with to deliver value, and draw lines connecting your team to each of these teams.
Discuss the types of dependencies you have with these teams, and use smiley faces (happy, neutral, angry) to reflect the current status of collaboration:
Happy smiley: No big deal
Neutral smiley: Dependencies happen, but not all the time
Angry smiley: Often slows us down
Isolate the teams with your most blocking dependencies, and create an action plan to improve collaboration and eliminate these dependencies.
This is also a great tool to empower teams to address and fix their own dependencies.
As a product leader, ask for maps from all teams to get a holistic view of dependencies across the organization. This helps you understand the full system of what's slowing things down.
Key takeaways
If your teams are experiencing slowness, which could jeopardize the transformation, the root cause is most likely dependencies. To speed up, be relentless about removing blocking dependencies. Use the value stream mapping or dependency mapping techniques to surface and address them.
What’s next
Next up, we’re going to explore the pitfall where the CPO and CTO have different, often hidden, agendas.