Skip to main content

Book Exercise Lanes

This module's exercise system is book-driven. Use these local chunks for targeted volume after you have already learned the concept from the guide and worked the practice pages. Each lane has a focused question and a short set of chunks -- pick the lane that matches the weakness you want to reduce.

How To Use This Page

  1. Finish the relevant concept page first.
  2. Design one strategic or tactical artifact of your own from memory.
  3. Only then open the matching exercise lane.
  4. Keep a mistake log with tags such as one-service-per-noun, shared-DB-across-contexts, aggregate-too-big, domain-event-published-raw, ACL-doing-business-logic, conformist-where-ACL-was-needed, event-sourcing-forced, subdomain-misclassified.

Lane 1: Strategic Design -- Subdomains and Classification

Use this lane when the issue is "I cannot pick core / supporting / generic, or I cannot distinguish domain from subdomain from bounded context."

Target outcomes:

  • 3 complete subdomain inventories for unfamiliar businesses (e.g., telemedicine, grocery delivery, B2B SaaS procurement)
  • 6 correct classifications with heuristic citations
  • 2 "wrong classification fixed" case studies against existing services
  • 1 written disambiguation of domain vs subdomain vs context you can hand a new engineer

Lane 2: Ubiquitous Language and Context Boundaries

Use this lane when the issue is "I cannot articulate why these two contexts are different, or I keep writing one model for everyone."

Target outcomes:

  • 4 glossary entries for the same term (e.g., customer) in 4 different contexts
  • 3 context boundary decisions with explicit language-heuristic arguments
  • 2 "merged by mistake" audits of real systems where one model spans contexts

Lane 3: Context Mapping -- Relationship Patterns and Translation

Use this lane when the issue is "I cannot name the relationship on an edge, or I confuse ACL with OHS."

Target outcomes:

  • 2 full context maps with every edge labeled by pattern
  • 3 decisions to upgrade conformist -> ACL with reasoning
  • 2 published-language designs (schema + vocabulary + reserved fields)
  • 1 "distributed-monolith rescue" plan

Lane 4: EventStorming -- Workshop Discipline

Use this lane when the issue is "my EventStorming sessions produce pretty boards but no insights."

Target outcomes:

  • 3 full process-level EventStorming outputs for three different business flows
  • 1 design-level EventStorming producing 2-3 aggregates
  • 1 written session retrospective identifying what went wrong and how to fix next time
  • 5 red hot-spots captured as open questions (and resolved or scheduled)

Lane 5: Tactical -- Aggregates, Entities, Value Objects

Use this lane when the issue is "my aggregates are too big, invariants leak, or my VOs are just DTOs."

Target outcomes:

  • 4 aggregates implemented in code with numbered invariants and tests
  • 6 value objects with constructor-enforced invariants
  • 2 "aggregate was too big, split it" before-and-after refactors
  • 2 domain services extracted from over-stuffed handlers

Lane 6: Domain Events, Outbox, Coordination

Use this lane when the issue is "events, outbox, saga coordination feel vague."

Target outcomes:

  • 4 domain events with internal + integration schemas and explicit field drops/renames
  • 2 outbox implementations (SQL or your preferred store) with idempotent consumers
  • 1 saga / process manager for a multi-aggregate flow (e.g., book + inventory + payment)
  • 2 "raw domain event leaked" bugs written up as anti-patterns

Lane 7: CQRS and Event Sourcing

Use this lane when the issue is "I can't decide if CQRS or ES is justified, or I've been asked to adopt them without a reason."

Target outcomes:

  • 3 CQRS decisions for different contexts, two "yes" and one "no" with defense
  • 2 event-sourced aggregate sketches (fold, snapshot strategy, event-versioning plan)
  • 1 decision memo: "we chose ES for this context because…" or "we rejected ES here because…"
  • 1 schema-evolution scenario (add a field, rename a field) handled via upcasters

Lane 8: Alignment and Evolution

Use this lane when the issue is "we have services but not contexts, or contexts but not teams."

Target outcomes:

  • 2 alignment tables (context -> team -> service -> DB) with explicit rationales
  • 1 extraction plan (strangler-fig style) for a super-context, with ADR sketch
  • 1 "merge" decision for two contexts that stepped on each other
  • 1 context-map diff (year N vs year N+2) with the list of changes and why

Mistake Log Template

Keep a small log like this as you work the lanes:

date | lane | mistake tag                | what I wrote              | what I should have written
-----+------+----------------------------+---------------------------+---------------------------------
04-05| 3 | ACL-doing-business-logic | rule logic inside ACL | rule logic in domain service
04-07| 5 | aggregate-too-big | Customer + Orders + ... | Customer, Order separate by ID
04-09| 1 | core-vs-supporting | check-in labeled core | supporting until market proves otherwise

After 4 weeks, your log tells you which concepts deserve re-reading in depth.