Introduction
In this post, I explore how to consciously design team structures and responsibilities to enable effective, sustainable software delivery. Inspired by Team Topologies, this approach emphasizes the deliberate design of team boundaries and interactions to maximize flow and minimize friction.
As Team Topologies explains:
“We call these consciously designed team structures team topologies, a term that acknowledges that teams should be deliberately ‘placed’ into organizations while also referring to the boundary of responsibility of each team.”
By addressing the challenges of reactive team design and adopting the four fundamental team types—stream-aligned, enabling, complicated-subsystem, and platform—organizations can create adaptive, high-performing teams that deliver exceptional results.
1. The Challenge of Ad Hoc Team Design
Reactive or ad hoc team design often creates inefficiencies. Teams formed in response to crises—whether for middleware, database management, or specific technologies—may solve short-term problems but fail to consider the broader system. This leads to bottlenecks, blurred responsibilities, and dependency issues:
“The first anti-pattern is ad hoc team design. Without considering the broader context of the interrelationships between teams, what seems like a natural solution might slow down delivery and eat away at the autonomy of teams.”
Instead of patchwork fixes, organizations should focus on intentional team structures that address broader organizational needs. This involves adopting the four fundamental team topologies.
2. Introduction to the Four Fundamental Team Types
To reduce complexity and promote sustainable software delivery, Team Topologies defines four primary team types:
- Stream-aligned teams: Deliver value by focusing on a specific business or customer stream.
- Enabling teams: Help other teams adopt new practices or technologies to improve their capabilities.
- Complicated-subsystem teams: Manage areas of the system requiring specialized knowledge.
- Platform teams: Provide internal services to reduce the cognitive load on other teams.
This structured approach ensures clarity in roles, responsibilities, and interactions across the organization.
3. Stream-Aligned Teams: Delivering Value
Stream-aligned teams are the default team type in a well-structured organization. They align directly to business streams, such as customer segments, product lines, or compliance needs, enabling them to deliver a steady flow of value:
“In a modern software organization, we expect most teams to be stream aligned. The flow of work is clear, and each stream has a steady, expectable flow of work for the stream-aligned team to prioritize.”
Key characteristics of stream-aligned teams include:
Ownership of live operations:
“Stream-aligned teams follow good software-delivery practices (like continuous delivery and operability), and they are responsible for live operation.”
Minimal hand-offs to other teams:
“A stream-aligned team has minimal (ideally zero) hand-offs of work to other teams.”
Autonomy in decision-making, akin to Amazon’s two-pizza-team model:
“The teams are substantially independent, have ownership over their services, and have responsibility for the runtime success of the software they write.”
Stream-aligned teams thrive when supported by other team types, ensuring they can focus on delivering value without being bogged down by technical debt or dependencies.
4. Enabling Teams: Bridging Gaps
Enabling teams play a critical role in helping stream-aligned teams grow their capabilities. These teams consist of specialists who provide guidance and support, ensuring that stream-aligned teams can operate autonomously in the long term:
“The end goal of an enabling team is to increase the autonomy of stream-aligned teams by growing their capabilities with a focus on their problems first, not the solutions per se.”
Examples of enabling team activities include:
- Knowledge transfer, such as pairing to adopt Infrastructure-as-Code practices.
- Staying ahead of the curve to introduce new tools and practices:
“An enabling team stays ahead of the curve in keeping abreast of new approaches, tooling, and practices in their area of expertise.”
Enabling teams act as temporary partners, working closely with stream-aligned teams to solve specific challenges before stepping back.
5. Complicated-Subsystem Teams: Managing Complexity
When parts of a system require deep expertise, complicated-subsystem teams are created to manage them. These teams handle components that demand specialized knowledge, which would otherwise overwhelm stream-aligned teams:
“A complicated-subsystem team is created only when a subsystem needs mostly specialized knowledge. The decision is driven by team cognitive load.”
Key characteristics include:
High collaboration with stream-aligned teams during early development phases.
Ownership of complex subsystems to maintain speed and quality:
“Delivery speed and quality for the subsystem is clearly higher than if/when the subsystem was being developed by a stream-aligned team.”
By centralizing expertise, these teams ensure complex areas of the system are managed efficiently without overburdening other teams.
6. Platform Teams: Reducing Cognitive Load
Platform teams provide the foundational services that enable stream-aligned teams to work effectively and autonomously. Their focus is on creating internal platforms that streamline workflows, such as provisioning, monitoring, and deployment:
“The purpose of a platform team is to enable stream-aligned teams to deliver work with substantial autonomy.”
A good platform emphasizes usability and developer experience (DevEx):
“Ease of use is fundamental for platform adoption and reflects the fact that platform teams must treat the services they offer as products.”
Key practices include:
- Collaborating with stream-aligned teams to understand their needs.
- Leading by example, using the platform’s services internally.
- Focusing on simplicity and clarity to reduce friction:
“A good platform should make it easy for Dev teams to do the right things in the right way for the organization.”
7. Thoughts About DevOps and Support Teams
The Team Topologies model integrates DevOps principles by embedding operations and support responsibilities within long-lived teams. Instead of separate Ops or support teams, stream-aligned teams own their services end-to-end:
“There is no ‘Ops’ team or ‘support’ team in the fundamental topologies, and this is deliberate. The long-lived teams building the systems are very close to the live operation of the systems they are building.”
This approach minimizes hand-offs, improves flow, and ensures rapid feedback from live environments. Site Reliability Engineering (SRE) teams exemplify how DevOps principles can be implemented effectively:
“Site Reliability Engineering (SRE) teams, pioneered by Google, are really a special kind of stream-aligned team in the sense that they are responsible for the reliability of large-scale applications running in production.”
By integrating operations and support into the team topologies framework, organizations can break down silos and build a culture of shared ownership and accountability.
Final Reflections
The four fundamental team types—stream-aligned, enabling, complicated-subsystem, and platform—offer a proven framework for designing effective, sustainable software delivery organizations. By embracing these topologies and integrating DevOps principles, teams can deliver value faster, reduce friction, and adapt to changing demands.
As Team Topologies reminds us:
“Many organizations would benefit from increasing the clarity around the definition and purpose of their teams.”