Challenges
Five exercises, in order of effort. Four of them need nothing but a document and a real system you already know.
- Pick the next unfinished one. Each produces something you keep: a diagram, a clause, a matrix, or a one-pager.
- Progress saves in this browser only. Nothing is uploaded.
01Teardown a system you use
Time: 30 minutes · Needs: paper · You produce: a one-page system definition
Choose something familiar — a bike-share scheme, your company's onboarding, a checkout flow, a home heating system. Write:
- Purpose in one testable sentence (with a number or an observable outcome).
- Boundary: what's inside, what you design against.
- Five to seven elements, including at least one human and one procedure.
- Every interface you can find between them — including the informal ones.
- One emergent failure: a bad behavior that no single element is responsible for.
02Rewrite five requirements
Time: 30 minutes · Needs: a real spec, ticket or README · You produce: five testable statements
Take five requirements, stories or "must-haves" from work. For each: mark the disease (vague, compound, solution-in-requirement, unverifiable, unnecessary), then rewrite it with a number, a condition and an acceptance method.
| Original | Disease | Rewrite (shall…) | Method |
|---|---|---|---|
| … | … | … | test / analysis / demo / inspection |
| … |
03Audit the interfaces
Time: 45 minutes · Needs: a whiteboard or spreadsheet · You produce: an N² matrix plus one written contract
List the five or six major parts of a system you work on. Build the matrix: rows send to columns. Mark each cell sync, async, or blank. Then find:
- The coupling with no clear owner.
- The one where a change would require coordinated releases.
- The shared database or shared file everyone pretends isn't an interface.
Write the contract for the worst one: content, timing, failure behavior, owner, versioning rule.
04Run a trade study
Time: 45 minutes · Needs: a spreadsheet · You produce: a decision you can defend
Pick a decision you're actually facing with 2–4 real alternatives — a vendor, a queue, a hosting choice, a build-vs-buy. Define criteria, agree weights before scoring, score relative to a baseline, and compute the totals.
Then do the two things people skip: sensitivity (change one weight by ±2; does the winner change?) and disqualifiers (is any criterion actually pass/fail rather than a tradeoff?).
05Capstone: one page, one vertical slice
Time: one weekend · Needs: a real system · You produce: the one-pager plus proof of one requirement
Fill the one-page definition from module 10 for something you are actually responsible for. Then build one requirement end to end — including how it is verified — so the page has evidence behind at least one line.
- Eight headings complete: purpose, boundary, elements, interfaces, requirements, risks, V&V, lifecycle.
- Every requirement has an acceptance method.
- Top five risks have an owner and a mitigation.
- One requirement demonstrated or tested, with the result recorded.
- One sentence about retirement: how data leaves and what switches off.
How to judge your own work
No certificate — the test is whether someone else could act on what you produced.
| Signal | Beginner | Solid | Ready to run a program |
|---|---|---|---|
| Purpose | A goal in prose | One testable sentence | Testable purpose plus measurable objectives and constraints |
| Boundary | Everything feels in scope | Explicit in/out list | Boundary tied to ownership and interfaces |
| Requirements | A wish list | Testable statements with methods | Traceable set with baselines and change control |
| Interfaces | Discovered during integration | Listed with owners | Contracted, versioned, tested |
| Decisions | Made in chat | Written with alternatives | ADRs with revisit conditions and sensitivity checks |
| Risk | A vague worry | Register with owners | FMEA + failure injection + tracked mitigations |
| V&V | Testing at the end | Per-requirement methods | Traceability matrix with independent verification |
Shrink the system. Almost every stuck analysis is a boundary that is too large or a purpose that is too vague. Cut the system in half, write the purpose as a number, and the rest usually becomes obvious.