agile / agile-topologies · v1.0

Team Topologies

Stream-aligned, platform, enabling, and complicated-subsystem team types — the four fundamental patterns for organising software delivery at scale.

4
Team types
3
Interaction modes
1
Primary team type
Conway's Law impact

Why Team Topology Matters

Team Topologies (the book by Matthew Skelton and Manuel Pais) provides a model for designing organisations around fast flow of software delivery. The core insight: how you structure teams determines what software architecture you can build — and how fast you can change it.

Most organisational problems — slow delivery, endless coordination overhead, blocked teams — are actually topology problems. The wrong team structure generates the wrong communication patterns, which generates the wrong software.

Team Topologies is not an org chart framework. It is a model for thinking about team interactions and cognitive load — used dynamically, not drawn once and frozen.

Conway's Law

"Any organisation that designs a system will produce a design
whose structure is a copy of the organisation's communication structure."
— Melvin Conway, 1967

In practice:
→ Teams with high coordination overhead → tightly coupled software
→ Siloed teams → siloed architecture with integration problems
→ One team owns payments → payments service has one interface

Inverse Conway Manoeuvre:
→ Design the team structure you want FIRST
→ The architecture will follow
→ Want microservices? → create teams with bounded domains first
→ Want a platform? → create a dedicated platform team first

Cognitive Load

Every team has a finite capacity to understand and manage the systems they own. Cognitive load is the total mental effort required to maintain, build, and operate those systems. Teams that exceed their cognitive load slow down, make mistakes, and burn out.

Three types of cognitive load:
Intrinsic   → Fundamental complexity of the domain (unavoidable)
Extraneous  → Process and coordination overhead (eliminate this)
Germane     → Learning and skill-building (invest in this)

Team Topologies goal:
→ Minimise extraneous cognitive load through good topology
→ Cap team scope so intrinsic load stays manageable
→ Use enabling teams to build germane load (capability)

Signals that a team is overloaded:
→ Onboarding new members takes months
→ Fear of touching certain parts of the codebase
→ No time for anything except firefighting
→ "We can't do that — it touches too many systems"

The Four Team Types

Stream-Aligned
Primary delivery team type

Aligned to a single flow of work — a product, service, customer journey, or user persona. The most important team type: the goal of the entire topology is to support and unblock stream-aligned teams.

Characteristics:
→ Long-lived, stable team (not project-based)
→ End-to-end ownership from idea to production
→ Full stack capability (design, dev, test, ops)
→ Empowered to make technology decisions
→ Minimal external dependencies to ship

Examples:
→ "Checkout team" (owns the checkout flow end-to-end)
→ "Mobile team" (owns the iOS and Android apps)
→ "Growth team" (owns acquisition and activation)

What they need from other teams:
→ Platform team to provide internal services as self-service
→ Enabling team to upskill on new capabilities
→ Complicated-subsystem team for specialist components
Platform
Reduces cognitive load for stream-aligned teams

Provides a curated, self-service internal platform that stream-aligned teams use to build and ship faster. The platform team's product is its internal customers — stream-aligned teams.

Characteristics:
→ Treats internal teams as customers
→ Self-service API/tooling (not ticket-based)
→ Provides "golden paths" — opinionated, well-lit routes
→ Absorbs complexity so stream teams don't have to

Examples:
→ Developer platform team (CI/CD, environments, observability)
→ Data platform team (pipelines, warehouse, BI infrastructure)
→ Security platform team (auth, secrets, compliance tooling)

Success metric:
"Stream-aligned teams can ship features independently
 using the platform, without raising a ticket to our team."
Enabling
Grows capability in stream-aligned teams

A temporary team of specialists that helps stream-aligned teams acquire capabilities they currently lack — then steps back. Enabling teams are coaches, not permanent service providers.

Characteristics:
→ Temporary engagement (weeks to months, not forever)
→ Teach and leave; do not create permanent dependency
→ Focus: upskill the stream team, not do the work for them
→ Proactively identify emerging capability gaps

Examples:
→ DevOps enabling team (embeds to roll out CI/CD practices)
→ Accessibility team (teaches accessibility; team then owns it)
→ Security champions team (trains and certifies team members)

Anti-pattern: enabling team that never leaves
→ If an enabling team is permanent, it has become a service team
   or a bottleneck — both are wrong
Complicated-Subsystem
Isolates specialist complexity

Owns a specific component requiring deep specialist knowledge that would overwhelm a stream-aligned team. The component is exposed as a service or library — not as a bottleneck.

Characteristics:
→ Deep specialist expertise (maths, physics, signal processing, ML)
→ Exposes well-defined interfaces; not a coordination point
→ Stream teams consume output — do not need to understand internals
→ Used sparingly — most teams should not be this type

Examples:
→ Video encoding team (FFmpeg specialists; exposes encoding API)
→ Fraud detection ML team (statistical models; exposes a scoring API)
→ Search relevance team (Elasticsearch tuning; exposes search API)

When to use:
Only when the cognitive load of the subsystem is genuinely too high
for a stream-aligned team to own AND use simultaneously.

3 Interaction Modes

How teams interact is as important as how they are structured. Team Topologies defines three explicit interaction modes. Each is appropriate in certain contexts and should evolve over time.

🤝
Collaboration
Two teams work closely together on a shared problem for a defined period. High bandwidth, high cost. Use for discovering new things — not for steady-state.
🛒
X-as-a-Service
One team consumes another's API/service with minimal interaction. Low bandwidth, scalable. The goal state for platform → stream-aligned interactions.
📚
Facilitating
One team helps another grow capability. Enabling team → stream-aligned team. Temporary by design; ends when capability is transferred.
Interaction mode evolution:
New capability discovery → Collaboration (2–3 teams work closely)
Capability stabilises    → X-as-a-Service (platform exposes API)
Upskilling needed        → Facilitating (enabling team coaches)

Healthy flow:
Stream team ←X-as-a-Service← Platform team
Stream team ←Facilitating← Enabling team
Stream team ↔ Collaboration ↔ Stream team (temporarily)

Anti-Patterns

Anti-PatternProblemFix
Component teams everywhereEvery feature requires 3+ teams; coordination is the workReorganise into stream-aligned feature teams with end-to-end ownership
Platform team as ticket systemStream teams raise tickets; platform team is a bottleneckPlatform must be self-service; X-as-a-Service interaction mode
Enabling team never leavesPermanent dependency; stream team never owns the capabilityDefine exit criteria upfront; enabling team withdraws on schedule
Too many team typesEvery team is a complicated-subsystem team; no stream teams existStream-aligned teams are the primary type; everything else supports them
Ignoring cognitive loadStream team owns 8 services; nothing ships; morale crashesMeasure cognitive load; cap scope per team; split or offload
Topology drawn once, never updatedOrg structure freezes as software evolvesTopology should evolve as software architecture and team capabilities evolve

Team Topologies Cheat Sheet

4 Team Types
Stream-Aligned      → primary type; owns flow end-to-end
Platform            → reduces cognitive load via self-service
Enabling            → grows stream team capability; temporary
Complicated-Subsystem → isolates specialist complexity as a service

3 Interaction Modes
Collaboration  → close work on discovery; high cost; time-limited
X-as-a-Service → consume API/service; low overhead; steady-state goal
Facilitating   → enabling team teaches; ends when capability transferred

Key principles
→ Conway's Law: team structure → software structure
→ Inverse Conway: design the team structure you want first
→ Cognitive load: cap team scope; eliminate extraneous complexity
→ Stream teams are the goal; all other types exist to support them

Signals you need a topology change
→ Teams blocked waiting on other teams every sprint
→ "Simple" features require 4+ teams to coordinate
→ Platform team drowning in tickets from stream teams
→ Onboarding takes months; fear of touching systems