Show, Don't Tell — Using Examples with Coding Agents
Exercise repository for the learning hour "Show, Don't Tell — Using Examples with Coding Agents". The same two exercises ship in three language tracks: participants refactor multi-assert tests by showing their coding agent one refactored example instead of describing the change in words.
Choose your track
All three tracks contain the identical exercises — same domain behaviour, same test scenarios, same numbers. Pick the track that matches your participants' stack:
| Track | Directory | Toolchain | Run the tests |
|---|---|---|---|
| C# | csharp/ |
.NET 10, NUnit | dotnet test |
| Java | java/ |
Java 21 (Temurin), Maven, JUnit 5, AssertJ | mvn test |
| Python | python/ |
Python 3.13, uv, pytest | uv sync && uv run pytest |
Toolchain versions are pinned per track in that directory's mise.toml. If you use mise, run mise install inside the track directory you choose; otherwise install the toolchain yourself. Each track has its own README.md with details.
How the exercise works
Every track starts in the same START state: all tests are green, and the refactoring the participants should do has NOT been applied.
- Round 1 — OrderDomain: six tests assert order totals and line values with scattered, duplicated assertions. The first test has already been refactored as the example, using a custom matcher (
OrderStateConstraintin C#,OrderStateAssertionin Java,order_state.pyin Python). Participants show that example to their agent and let it refactor the remaining five. - Round 2 — OrderBookDomain: seven multi-step given/when/then tests that each walk an order through several lifecycle states. Participants use the same show-an-example approach to split them into focused tests.
The point of the learning hour: LLMs are pattern matchers — a concrete example communicates the intended refactor faster and more reliably than a verbal description.