π Hello, Iβm Vibhor, and welcome to the π subscriber-only edition π of my newsletter, the βWinning Strategy.β Every week, I answer one reader question about Agile Products / Processes, Role-based Skills, and anything else that you need answered about your Career Growth. You can send me your questions here.
Note: If you enjoy reading this post, please show your support by clicking the little gray heart below the title above. It would really mean a lot and help spread the word about this growing newsletter. π
On to this weekβs question!
Q: Hi Vibhor. I am a Chief Product Owner at a tech firm based in Australia. My teams constantly struggle with work alignment. Can you shed some light on Dependency Mapping/Management for multiple scrum teams?
Thanks for the question.
For the rest, hereβs an example scenario to understand the issue at hand better.
Imagine a product with 3 teams: Team A, Team B and Team C.
Team A is responsible for developing an API that Team B needs to integrate into their mobile application.
Team C, meanwhile, is working on a database that Team A's API relies on.
Any delay in Team C's database development can cause a chain reaction:
first, Team A's API development gets delayed, and
subsequently, Team B's application integration is held up.
This interconnected web of dependencies is a common challenge in Scrum environments where multiple teams are interlinked.
In this post, we will address Dependency Mapping and Management head-on. Weβll look at how to effectively identify, track, and navigate these intricate dependencies.
My focus will be on helping you learn how to guide your teams toward not just understanding their interdependencies but also collaborating effectively to meet their deadlines and objectives.
But before we dig deeper into the dependency-resolving strategies, let's first see how we can avoid dependencies right from the get-go. An effective approach lies in the thoughtful structuring of teams using Team Topology.
What the heck is Team Topology?
What is Team Topology?
Team Topologies is a concept (and a book) that provides a βteam designβ framework for modern software development teams.
It was introduced by Matthew Skelton and Manuel Pais in their book "Team Topologies: Organizing Business and Technology Teams for Fast Flow."
The main ideas behind Team Topologies are to optimize team structures for effective software delivery and to improve collaboration and communication within an organization.
The framework suggests four fundamental team types and three interaction modes:
Team Types:
Stream-Aligned Teams: Focused on continuous delivery of value to a specific stream of work, such as a product or a set of features.
Enabling Teams: Provide assistance and support to other teams, helping them overcome obstacles or develop new skills.
Complicated Subsystem Teams: Specialized in dealing with complex areas of the system that require deep expertise.
Platform Teams: Develop and maintain a platform that enables stream-aligned teams to deliver their work more effectively.
Interaction Modes:
Collaboration: Teams work closely together for a defined period to solve a problem or develop a new capability.
X-as-a-Service: One team provides a service (like an API or a software tool) that other teams consume.
Facilitating: One team helps another to remove impediments or improve its capabilities.
In simple words, itβs a framework that helps you create cross-functional teams.
Thatβs what Team Topology is for.
HOW it does that is a topic for another post.
If you're interested in learning the steps and want me to give you a walkthrough, please let me know in the comments.
Coming back to todayβs topic.
You can massively reduce dependencies among multiple product teams by creating cross-functional teams.
But this needs to be done as the first step before the teams are formed. What about the products or projects where teams are already formed, and restructuring teams is out of the question?
In these cases, we must turn our attention to managing the dependencies as they stand.
The reality is that in many organizations, the existing team structure is deeply entrenched, and reshaping it may not be feasible due to various constraints, be it cultural, logistical, or simply due to the maturity of the product.
So, how do we handle dependencies in such scenarios?
We start by first understanding the different types of dependencies.