# Team Topologies — Exercises

## Exercise 1: Map Your Organization

**Task:** Create a diagram of your engineering organization (or a representative slice). Label each team by type: stream-aligned, platform, enabling, complicated-subsystem. Draw arrows for key interactions and label the mode (collaboration, X-as-a-Service, facilitating).

**Validation:**
- [ ] All teams classified
- [ ] Key interactions shown with mode labels
- [ ] At least one mismatch or improvement opportunity noted

**Hints:**
1. Stream-aligned = owns a full value stream (e.g., "checkout," "search")
2. Platform = provides services/tooling for other teams
3. Enabling = temporary; helps teams learn then steps back
4. Complicated-subsystem = highly specialized domain

---

## Exercise 2: Design a Platform Team API

**Task:** You're creating a platform team that will provide: CI/CD pipelines, observability (metrics, logs, traces), and a shared auth library. Write a one-page "team API" document: what each offering is, how to consume it, SLA (e.g., 99.9% uptime), and support path.

**Validation:**
- [ ] Each capability is defined
- [ ] Consumption path is clear (docs, examples, onboarding)
- [ ] SLA and support model specified
- [ ] A stream-aligned team could self-serve from this doc

**Hints:**
1. SLA: What does "platform down" mean? Response time for support?
2. Versioning: How do we evolve without breaking consumers?
3. Onboarding: Link to runbooks, slack channel, office hours

---

## Exercise 3: Cognitive Load Assessment

**Task:** Pick a team (real or hypothetical). List 5 sources of cognitive load. Classify each as intrinsic, extraneous, or germane. For each extraneous source, propose one change to reduce it.

**Validation:**
- [ ] 5 sources identified
- [ ] Each classified correctly
- [ ] At least 2 extraneous sources with proposed fixes
- [ ] Fixes are concrete and actionable

**Hints:**
1. Intrinsic: domain complexity (payments, ML, crypto)
2. Extraneous: unclear ownership, brittle tooling, excessive context-switching
3. Germane: learning a new system, deliberate practice
4. Fixes: simplify ownership, add platform, reduce meetings

---

## Exercise 4: When to Add a Platform Team

**Task:** You have 3 stream-aligned teams. Each has built its own deploy pipeline, logging, and error tracking—slightly different in each case. Write a short proposal: when and why to add a platform team. Include: trigger (what signals "now"?), scope (what does platform own?), and transition plan (how do stream-aligned teams migrate?).

**Validation:**
- [ ] Clear trigger for adding platform
- [ ] Scope is defined (what platform owns vs. streams)
- [ ] Transition plan addresses "how do we get there"
- [ ] Proposal is 1 page or less

**Hints:**
1. Trigger: duplication, inconsistency, long onboarding for new teams
2. Scope: start with highest-leverage (deploy? observability?)
3. Transition: platform builds v1; streams migrate over 2–3 months; deprecate old

---

## Exercise 5: Interaction Mode Mismatch

**Task:** Describe a scenario where two teams use the *wrong* interaction mode. Example: platform and stream-aligned in constant collaboration when X-as-a-Service would work. What are the symptoms? What would need to change to fix it?

**Validation:**
- [ ] Scenario is concrete (teams, domain, current mode)
- [ ] Wrong mode is justified (why is it a problem?)
- [ ] Correct mode identified
- [ ] Change plan includes: new API, SLA, communication pattern

**Hints:**
1. Collaboration when X-as-a-Service would work: everyone in every meeting, no clear API
2. Symptoms: platform is bottleneck, stream-aligned teams wait
3. Fix: define team API, document, establish SLA, reduce ad-hoc communication
