Team Topologies Summary

Team Topologies

Organizing Business and Technology Teams for Fast Flow
by Matthew Skelton 2019 240 pages
4.2
5.2K ratings

Key Takeaways

1. Conway's law shapes software architecture through team structures

If the architecture of the system and the architecture of the organization are at odds, the architecture of the organization wins.

Communication structures matter. Conway's law reveals that an organization's communication structure directly influences the design of the systems it creates. This principle has profound implications for software architecture and team organization. By aligning team structures with desired system architectures, organizations can leverage Conway's law to their advantage.

Reverse Conway maneuver. Instead of letting team structures dictate system design, organizations can intentionally shape their teams to produce the desired architecture. This approach, known as the "reverse Conway maneuver," involves:

  • Identifying the target system architecture
  • Designing team structures that mirror this architecture
  • Allowing the natural forces of Conway's law to guide development

Strategic team design. By consciously designing team structures, organizations can:

  • Encourage modular, loosely-coupled systems
  • Promote clear interfaces between components
  • Enhance system maintainability and scalability

2. Team-first approach optimizes for cognitive load and flow

Reducing cognitive load for teams and facilitating team interactions helps to optimize flow.

Cognitive load matters. The team-first approach recognizes that there's a limit to the complexity a team can effectively manage. By prioritizing team cognitive capacity, organizations can:

  • Enhance productivity and innovation
  • Reduce stress and burnout
  • Improve code quality and system reliability

Strategies for managing cognitive load:

  • Limit team responsibilities to match their cognitive capacity
  • Break down large systems into team-sized components
  • Provide clear, well-defined interfaces between teams
  • Invest in tools and platforms that simplify complex tasks

Optimizing for flow. By reducing unnecessary cognitive burdens, teams can achieve a state of flow, characterized by:

  • High productivity and creativity
  • Increased job satisfaction
  • Faster problem-solving and innovation

3. Four fundamental team topologies drive effective software delivery

The four fundamental Team Topologies are: stream-aligned, enabling, complicated subsystem, and platform.

Stream-aligned teams form the backbone of the organization, delivering value directly to users or customers. They are:

  • Cross-functional
  • Aligned to a specific product, service, or user journey
  • Empowered to deliver end-to-end value

Enabling teams support and accelerate stream-aligned teams by:

  • Providing specialized expertise
  • Conducting research and prototyping
  • Facilitating knowledge transfer

Complicated-subsystem teams manage complex components that require deep expertise, allowing stream-aligned teams to focus on delivering value.

Platform teams provide internal services and tools that empower stream-aligned teams to work more efficiently and autonomously.

By adopting these four team types, organizations can:

  • Clarify team responsibilities and interactions
  • Reduce dependencies and bottlenecks
  • Enhance overall delivery speed and quality

4. Well-defined team interaction modes enhance collaboration and productivity

Limiting team interaction to three modes—collaboration, X-as-a-Service, and facilitating—simplifies and clarifies essential interactions between teams building software systems.

Collaboration mode involves close teamwork for discovery and innovation. It's best used:

  • During early phases of new system development
  • For solving complex, cross-cutting problems
  • When rapid learning and adaptation are crucial

X-as-a-Service mode establishes clear provider-consumer relationships between teams. It's ideal for:

  • Stable, well-defined services or components
  • Maximizing team autonomy
  • Enabling predictable, scalable interactions

Facilitating mode involves one team helping another to develop new capabilities. It's useful for:

  • Knowledge transfer and skill development
  • Temporary support during transitions
  • Addressing cross-team challenges

By explicitly defining these interaction modes, organizations can:

  • Reduce ambiguity in team relationships
  • Enhance focus and productivity
  • Facilitate smoother cross-team collaborations

5. Align software boundaries with team cognitive capacities

Choose software boundaries to match team cognitive load.

Team-sized architecture. Aligning software boundaries with team cognitive capacities ensures that teams can effectively own and evolve their parts of the system. This approach leads to:

  • Increased ownership and accountability
  • Faster development and problem-solving
  • Improved system maintainability

Strategies for defining boundaries:

  • Use domain-driven design to identify natural system boundaries
  • Consider team size and expertise when defining component scope
  • Leverage microservices architecture to create manageable, team-sized services

Benefits of proper boundary alignment:

  • Reduced cognitive overload for teams
  • Clearer responsibilities and interfaces between teams
  • Enhanced ability to evolve and scale the system over time

6. Platforms should be "just big enough" to support stream-aligned teams

A good platform provides standards, templates, APIs, and well-proven best practices for Dev teams to use to innovate rapidly and effectively.

Thinnest viable platform (TVP). The ideal platform provides just enough support to accelerate stream-aligned teams without becoming overly complex or restrictive. Characteristics of a good TVP include:

  • Clear, well-documented APIs
  • Self-service capabilities
  • Abstraction of common, complex tasks

Platform evolution. As the organization grows and technologies change, the platform should evolve to:

  • Address emerging needs of stream-aligned teams
  • Incorporate new technologies and best practices
  • Simplify or remove underutilized features

Benefits of a well-designed platform:

  • Reduced cognitive load for stream-aligned teams
  • Faster time-to-market for new features and products
  • Improved consistency and reliability across systems

7. Evolve team structures continually to adapt to changing needs

Different topologies and different team interactions for different parts of an organization need to evolve at different times based on what they are doing and what they are trying to achieve.

Organizational sensing. Continuously monitor and assess team effectiveness and interactions to identify opportunities for improvement. Key indicators include:

  • Delivery speed and quality
  • Team satisfaction and engagement
  • Cross-team collaboration effectiveness

Adaptive team structures. Be prepared to adjust team topologies and interaction modes as needs change. This might involve:

  • Splitting or merging teams
  • Shifting between collaboration and X-as-a-Service modes
  • Creating or disbanding enabling teams

Benefits of continuous evolution:

  • Improved responsiveness to market and technology changes
  • Enhanced team effectiveness and satisfaction
  • Optimized organizational structure for current goals and challenges

8. Treat operations as high-fidelity sensory input for development

Treating Ops as an input to Dev requires a radical rethinking of the roles of these often-separate groups.

DevOps integration. Blurring the lines between development and operations creates a feedback loop that enhances overall system quality and reliability. This approach involves:

  • Shared responsibility for system performance
  • Continuous feedback from production to development
  • Collaborative problem-solving across traditional boundaries

Benefits of ops-as-input:

  • Faster identification and resolution of issues
  • Improved system reliability and performance
  • Enhanced empathy between development and operations teams

Strategies for implementation:

  • Implement robust monitoring and alerting systems
  • Establish cross-functional teams with both dev and ops expertise
  • Create processes for rapid feedback and iteration based on operational insights

9. Design for team-sized software architecture to enhance ownership

A team working with software systems that require too high of a cognitive load cannot effectively own or safely evolve the software.

Team-sized components. Break down large systems into manageable, team-sized components that align with team cognitive capacities. This approach:

  • Enhances team ownership and accountability
  • Facilitates faster development and problem-solving
  • Improves overall system maintainability

Strategies for implementation:

  • Use domain-driven design to identify natural system boundaries
  • Leverage microservices architecture to create manageable services
  • Align team responsibilities with well-defined system components

Benefits of team-sized architecture:

  • Reduced cognitive overload for teams
  • Clearer responsibilities and interfaces between teams
  • Enhanced ability to evolve and scale the system over time
  • Improved team satisfaction and engagement

Last updated:

Report Issue