Module Exercises
Four lanes aligned to the module's clusters. Unlike earlier semesters, every exercise here produces an artifact that becomes part of your capstone. Nothing here is a throwaway drill.
How to Use This Page
- Finish the relevant cluster's concept pages and practice page first.
- Then work this lane until the deliverable exists in your capstone repo.
- If the deliverable already exists from the practice page, treat the lane as a review and extension pass -- deepen what is there, do not rewrite.
- Maintain a mistake log tagged by lane (
wrong-sized problem,missing non-goal,silent characteristic,ADR without consequences,drift in glossary, etc.).
Lane 1: Scoping Artifacts (aligned with Cluster 1)
Use this lane when your scope, risk, or MVP is still fuzzy on day 2 or day 3 of capstone week 1.
Exercises:
- Rewrite your problem statement three times, each time with a more specific user. Keep the clearest.
- Find someone outside your degree program. Explain your capstone in 30 seconds. Write down every confused face or counter-question. Those are holes in your framing.
- Extend your risk register to 5 rows even if you can only think of 3. Brainstorming rows 4 and 5 usually reveals the real #1.
- Take your MVP and cut one step. Argue with yourself: can the system still be evaluated without it? If yes, the step was non-MVP -- remove it. If no, the step is critical -- confirm it.
- Write down three real non-goals (features you want but will not build). If they do not exist, invent them now.
Deliverables that become part of the capstone:
- Final problem statement paragraph in
library/raw/problem.md. - 5-row risk register in
library/raw/risks.mdwith top 3 marked architecturally significant. - MVP definition in
library/raw/mvp.mdwith ≥5 explicit non-goals.
Lane 2: Domain Artifacts (aligned with Cluster 2)
Use this lane when your capstone's domain is unclear even to you.
Exercises:
- Run a second EventStorming pass a day after the first. Compare. Events you forgot to add the first time are the ones you understand least.
- Take each EventStorming cluster and write the bounded-context invariant in one sentence: "inside this context, X is always true." If you cannot, the boundary is wrong.
- List every noun in your code so far. Compare to your glossary. Synonyms in the code but not the glossary are drift; synonyms in the glossary but not the code are aspirational.
- For each subdomain you marked generic, do the build-vs-buy decision in writing. "Buy" with no managed service named is not a decision.
- For your core subdomain, write one invariant you want the core's tests to enforce. This becomes a unit test in Module 2.
Deliverables:
-
library/raw/domain/eventstorm.mdwith ≥20 events and hot-spot markers. -
library/raw/domain/subdomains.mdwith core / supporting / generic classification and build-vs-buy per row. -
library/raw/glossary.mdwith ≥10 entries, each with "forbidden synonyms."
Lane 3: Architectural Decision Artifacts (aligned with Cluster 3)
Use this lane when your design doc still says "TODO" under Architecture on day 4 of week 1.
Exercises:
- Pick a random Neal Ford Architectural Kata. Apply the top-3 characteristics exercise to it. Time-box 5 minutes. Do this 3 times across 3 different katas.
- Write your three-alternatives passage. Then swap two of the pros and cons. Does the decision flip? If yes, your justification was fragile -- rewrite the decision anchored on something more stable.
- Implement your second fitness function, not just the first. The second is the one that proves fitness functions are your default, not a one-off.
- Find one characteristic in your list you are not confident about and ask: "what would change if I demoted it from driver to supported?" If the answer is "nothing in my design," it was never a driver.
- Read one pattern from Patterns of Distributed Systems. Then close the page and ask: does my capstone need this? The answer is almost always no, and the exercise sharpens "no."
Deliverables:
-
library/raw/architecture/characteristics.mdwith Drivers / Supported / Non-goals split. -
library/raw/architecture/style.mdthree-alternatives passage (or in the design doc). - At least 2 fitness functions committed under
tests/arch/or equivalent.
Lane 4: Communication & Planning Artifacts (aligned with Clusters 4 and 5)
Use this lane when the design doc exists but cannot be read cold by a stranger, or when the schedule is implicit.
Exercises:
- Cold-read your own design doc 48 hours after writing it. Mark every sentence you wrote that you no longer understand. Rewrite those sentences.
- Hand your design doc to someone who is not in your degree program. Ask them to explain your capstone back to you. Every gap in their explanation is a gap in the doc.
- Redraw your C4 Level 2 and 3 diagrams on paper, from memory, without opening the repo. Diffs reveal gaps in your mental model.
- Do the 5-minute defense cold, today, into a voice recorder. Listen back once. Fix the one worst sentence.
- Answer 3 random anticipated questions from
library/raw/defense.mdcold. If you fumble on any, go sharpen the underlying artifact today, not next week. - Write your scope-cut rules list. Include at least 5 specific cuts and a "never cut" row. Each cut has a specific condition.
- Every Friday: do the 20-minute Friday review. Compare planned to actual. Write one journal entry.
Deliverables:
-
library/raw/design-doc.mdwith all 12 sections non-empty. -
library/raw/adr/with ADR-001, 002, 003 written in Nygard form. - Three Mermaid C4 diagrams in the design doc (Context, Container, Component).
-
library/raw/defense.mdwith 10 anticipated questions and answers. -
library/raw/scope-cuts.md(or equivalent section) with 5+ cut rows. - First Friday-review journal entry.
Completion Checklist
- All four lanes' deliverables exist in the capstone repo by end of week 1.
- Mistake log has at least 6 tagged entries across the lanes.
- You have given the 5-minute defense out loud, cold, at least twice.
- You have answered ≥8 of 10 anticipated questions from memory.
- You have invoked one scope cut or deliberately rehearsed invoking one (to verify the rule is real).