Team Topologies: A Blueprint for Effective Team Structures — Part 2
In today’s fast-paced and ever-changing business landscape, effective team structures are crucial for organizations to stay competitive and deliver value to customers efficiently. Team Topologies is an approach that focuses on optimizing team structures to enhance agility, collaboration, and innovation within an organization. In this article, we will delve into the four fundamental team topologies: Stream-aligned Teams, Enabling Teams, Complicated-Subsystem Teams, and Platform Teams, exploring their characteristics, behaviors, and outcomes.
Stream-aligned Teams
Stream-aligned teams are the backbone of the Team Topologies approach. They are designed to deliver a continuous flow of work aligned to a specific business domain or organizational capability. These teams are empowered to build and deliver customer value independently, without relying on other teams for hand-offs. Key characteristics of stream-aligned teams include:
Clear alignment to a single valuable stream of work, such as a product, user journey, or user persona.
Cross-functional skills mix, allowing the team to handle end-to-end development and delivery.
Rapid course correction based on feedback, using an experimental approach to product evolution.
Minimal or zero hand-offs of work to other teams, resulting in increased speed and efficiency.
Evaluation based on the sustainable flow of change and supporting technical and team health metrics.
Focus on addressing code quality changes to maintain a safe and easy-to-change codebase.
An effective stream-aligned team fosters a sense of autonomy, mastery, and purpose among its members, promoting engagement and high performance.
Enabling Teams / Technical Consulting Teams
While stream-aligned teams have end-to-end ownership, they often face challenges in finding time for research and learning new skills due to constant delivery pressure. Enabling teams’ step in to bridge this capability gap by providing specialized expertise and guidance. Key characteristics of enabling teams include:
Specialists in a given technical or product domain, providing insights and suggestions to stream-aligned teams.
Collaborative nature, understanding the problems of stream-aligned teams and empowering them to grow their capabilities.
Focus on increasing the autonomy of stream-aligned teams, prioritizing problem-solving over providing ready-made solutions.
Regularly staying updated on new approaches and practices in their area of expertise, acting as curators for knowledge sharing.
Acting as messengers of good and bad news regarding technology life cycles and facilitating learning across teams.
Complicated-Subsystem Teams
Some systems within an organization require specialized knowledge to understand and make changes effectively. Complicated-subsystem teams are responsible for building and maintaining such subsystems. Their primary goal is to reduce the cognitive load on stream-aligned teams by handling complex components. Key characteristics of complicated-subsystem teams include:
Specialists in the specific area of knowledge related to the subsystem.
Collaboration with stream-aligned teams during early development phases and a focus on subsystem interface and feature evolution in later stages.
High delivery speed and quality for the complicated subsystem compared to stream-aligned teams working on it alone.
Correctly prioritizing and delivering upcoming work to meet the needs of stream-aligned teams using the subsystem.
Platform Teams
Platform teams work on the underlying platform that supports stream-aligned teams in their delivery process. By simplifying complex technology and reducing cognitive load, platform teams empower stream-aligned teams to focus on their core work. Key characteristics of platform teams include:
Full ownership of building, running, and fixing their application in production by stream-aligned teams.
Provision of internal services via self-service capabilities, reducing the effort required from stream-aligned teams to develop underlying services.
A focus on usability and reliability, continuously assessing and improving their services.
Leading by example by using their services internally and collaborating with other teams.
Understanding the adoption curve for new services and technologies, facilitating smooth integration within the organization.
Team Interaction Modes
It is not enough to organize teams into specific patterns. High effectiveness is achieved by identifying how these teams interact and knowing when to change those interactions. Poorly defined team interactions and responsibilities can lead to friction and inefficiency within organizations. To address this, the concept of Team Interaction Modes is introduced, helping teams make informed decisions about their collaboration methods.
Importance of Team Interaction Modes
Simply arranging teams into predefined patterns is insufficient for high effectiveness. Teams must also understand how to interact with one another to achieve optimal results. Poorly defined team interactions can lead to frustration and hinder productivity.
Choosing Between Collaboration and Service Consumption
A crucial decision when considering the relationship between teams is whether to collaborate or treat another team as a service provider. This choice can be made at various levels within an organization, such as collaborating on projects or consuming services from specialized teams.
The Three Essential Team Interaction Modes
Collaboration
Characteristics
Suitable for high adaptability and discovery, especially when exploring new technologies or techniques.
Facilitates rapid innovation and discovery by avoiding costly hand-offs between teams.
Best suited for early phases of new systems development or situations requiring quick discovery of new information.
May not be ideal for extended periods if clear, well-defined interfaces between teams are necessary.
Advantages
- Rapid innovation and discovery, fewer hand-offs.
Disadvantages
- Wide shared responsibility, higher cognitive load, possible reduced output.
Constraints
- A team should collaborate with, at most, one other team at a time.
X-as-a-Service
Characteristics
Suitable for situations where one team provides a code library, component, API, or platform “as a service” to other teams.
Provides clear responsibility boundaries and allows teams to focus on their work without requiring extensive collaboration.
Requires effective service management by the providing team to maintain viability over time.
Advantages
- Clarity of ownership, reduced cognitive load
Disadvantages
- Slower innovation, potential flow reduction if not effectively implemented
Constraints
- A team can expect to use X-as-a-Service with multiple other teams simultaneously.
Facilitating
Characteristics
Suitable when one team needs active help from another team to enhance productivity and remove impediments.
Enables teams to be more effective, learn quickly, and understand new technologies better.
Facilitating teams focus on enhancing interactions between other teams rather than building software systems.
Advantages
- Unblocking teams, detecting gaps and misaligned capabilities.
Disadvantages
- Requires experienced staff, unfamiliar interactions.
Constraints
- A team should facilitate with only a small number of other teams simultaneously.
Conclusion
Team Topologies offers a valuable framework for organizations to optimize their team structures and achieve better collaboration, agility, and innovation. The four fundamental team topologies — Stream-aligned Teams, Enabling Teams, Complicated-Subsystem Teams, and Platform Teams — each play a crucial role in creating a successful and efficient organization. By understanding their characteristics, behaviors, and outcomes, organizations can tailor their team structures to meet specific business needs and deliver exceptional value to customers.
Subscribe to my newsletter
Read articles from Arsalan Valoojerdi directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Arsalan Valoojerdi
Arsalan Valoojerdi
Energetic software engineer with background in developing and executing software solutions to enhance business productivity. Skilled in DDD, TDD, BDD, CQRS, Microservices and more.