# Team Topologies — Quick Reference

## Conway's Law

**Organizations design systems that mirror their communication structure.** Change structure to change architecture.

## Four Team Types

| Type | Purpose |
|------|---------|
| **Stream-aligned** | Own full value stream; build, run, evolve. Default. |
| **Platform** | Provide internal services, APIs, tooling for stream-aligned teams |
| **Enabling** | Help teams learn; temporary; step back when done |
| **Complicated-subsystem** | Own specialized domain (ML, crypto, compliance) |

## Three Interaction Modes

| Mode | When | What |
|------|------|------|
| **Collaboration** | Discovery, high ambiguity | Side-by-side; shared goals |
| **X-as-a-Service** | Stable interface (default) | Clear API, SLA; low touch |
| **Facilitating** | Learning, adoption | Teach; stream-aligned learns; step back |

## Cognitive Load

- **Intrinsic** — domain complexity (unavoidable)
- **Extraneous** — tooling, process, ambiguity (minimize)
- **Germane** — productive learning (maximize)

**Design to reduce extraneous load.** Split teams or add platform when load is too high.

## Team Size

- **Two-pizza rule** — 5–9 people
- **Dunbar** — effective working teams ~7±2
- **Split when** — cognitive load too high, decision wait times grow, natural sub-domains emerge

## Team API

Platform teams need clear contracts:
- Documentation (what we offer, how to use)
- SLA (uptime, latency, support)
- Versioning (how we evolve)
- Support path (who to ask, how to escalate)

## Pitfalls

| Avoid | Do Instead |
|-------|------------|
| Too much collaboration | Default to X-as-a-Service |
| Platform does project work | Platform provides capabilities; streams build features |
| Enabling never steps back | Exit criteria; handoff; step back |
| Ignoring cognitive load | Split or add platform; simplify |
| Reorg without behavior change | Change incentives, APIs, communication |

## Evolution

- **Early** — Few streams; maybe one platform person
- **Growth** — Add platform when streams duplicate work
- **Scale** — Enabling teams for big transitions
- **Mature** — Complicated-subsystem when domain needs dedicated expertise
