The problem in context
Every engineering org I have worked with has the same artifact: a wiki page that opens with something like 'Three-tier architecture: presentation, business logic, data access.' It is accurate. It is correct. And it is completely inert. New hires read it, nod, and then spend their first month asking questions the page technically already answered.
The instinct is to blame the writer or the tooling — not enough diagrams, wrong wiki, stale content. That instinct is wrong. The information was fine. What failed was the form. We had hidden the meaning behind jargon and boxes-and-arrows and stripped out the one thing human cognition is actually built to retain: a throughline. A component inventory is a list of nouns. A system is a sequence of things happening to actors over time — and our brains file the second away far more reliably than the first.
That gap between what we produce (inventories) and what people retain (narratives) is the whole problem. It shows up as slow onboarding, as design reviews that miss the point, and as decisions that evaporate the moment the person who made them leaves.
The principle
The principle here is that story is a design technique, not decoration. A narrative — actors, an event, a resolution — is a way of structuring concepts so that intent is visible, and intent is the part that has to survive new people and the passage of time.
Here is the same system, documented two ways:
Inventory form: 'Three-tier architecture: presentation, business logic, data access.'
Narrative form: 'Clients (presentation) consult experts (domain) who consult the archive (data) and return a decision. Each request is a plotline that crosses actors and comes back with a resolution.'
The narrative version is not fluffier — it is more precise, because it exposes intent rather than just structure. A reader who absorbs the second version can reason about where a new feature belongs. A reader who memorizes the first can only recite it. That is the entire thesis in miniature: narrative scales because intent scales, and implementation details do not.
The leverage point is that you do not need a new methodology to apply this. The mature design practices are already narrative — most teams just run them mechanically and miss it. There is a detailed treatment of this reframing in a longer essay on software design as storytelling if you want the full argument; the short version is that five techniques you likely already own are stories wearing engineering clothes.
- Domain-Driven Design (DDD). Bounded contexts are chapters; the ubiquitous language is the cast's shared dialogue. Ask 'who are the characters here and what words do they use?' and boundaries that looked arbitrary suddenly have reasons.
- Behavior-Driven Development (BDD). Given / When / Then, the grammar Dan North coined for BDD, is a plot: a setup, an event, a resolution — readable by every stakeholder and executable as a spec.
- Event Storming. Alberto Brandolini's workshop format models events, commands, and policies on a wall until the arc of the system emerges in sticky notes. You watch the plot appear.
- Domain Storytelling. The most literal technique, documented by Stefan Hofer and Henning Schwentner and featured on the Thoughtworks Technology Radar: domain experts draw their workflow as numbered steps — actors, work objects, activities, in order. 'The dispatcher assigns the order to a driver' hands you the language and the boundaries for free.
- Architecture Decision Records (ADRs). Michael Nygard's format is the memoir: context, decision, consequences — the why, preserved for whoever inherits it. Pair it with Simon Brown's C4 model for the map, but keep the rule that every diagram earns a sentence of narrative or it is just decoration.
Trade-offs
Narrative design is not free, and treating it as an unqualified good is how it degrades into whimsy. The honest comparison:
| Dimension | Inventory docs | Narrative design |
|---|---|---|
| Onboarding retention | Read once, forgotten | Retained and reasoned about |
| Authoring cost | Low up front | Higher up front, lower over time |
| Precision | Exact but intent-free | Exact and intent-bearing when done well |
| Failure mode | Inert, ignored | Vague metaphor if intent is hidden |
| Cross-team alignment | Repeated meetings | Shared story spine |
| Decision durability | Lost when people leave | Preserved in ADRs |
| Business 'why' | In one senior head | Embedded in the artifact |
The two costs that matter: narrative takes more effort to write well, and it fails badly when done poorly. A story that hides detail instead of exposing intent is worse than a dry doc — you have added metaphor without adding clarity. So the discipline is that narrative must be more precise, never less. If your reframing makes the system harder to reason about, revert it.
How to adopt
The adoption failure I see most often is boiling the ocean — a team decides to rewrite every document as a story and stalls under the weight. Stage it instead.
- Start with the single most-ignored document, usually the onboarding page, and rewrite it as a story with actors, a journey, and a resolution. Prove the principle on the artifact that hurts most before you touch anything else.
- Write your next architecture decision as an ADR the day you make it. An ADR written at decision time preserves intent; one reconstructed six months later preserves a guess. This is the highest-leverage habit on the list.
- Run one flow through Event Storming as a group. Put a single user-facing flow on a wall — events, commands, actors — and narrate it end to end out loud: 'the customer does this, which triggers that, which billing decides on, and the resolution is this.' Within an hour the arc emerges, and so do the boundary disagreements the team has been silently carrying. Saying the story together is what makes the ubiquitous language stick — it arrives by conversation, not decree.
- Enforce the vocabulary. If the story's words and the code's names drift apart, the throughline is gone. Keep them in sync or the whole effort decays.
Notice what this is not: no new framework, no tool purchase, no reorg. You are changing the form of what you already produce so the meaning survives contact with new people and with time.
Where this goes next
The direction of travel is that narrative stops being how you document a system and becomes how you design it. Once a team pitches features as plotlines — 'here is the actor, here is what changes, here is the resolution' — reviews sharpen automatically, because a reviewer can ask 'whose story is this and where does it resolve?' and expose a design gap no checklist would catch.
There is a second horizon worth watching: as more of the design surface gets handed to AI assistants, intent-bearing artifacts become the differentiator. A model can generate a component inventory trivially; what it cannot invent is why your bounded contexts sit where they do. Teams that have captured that why as narrative and ADRs will hand their tools far better context than teams sitting on boxes-and-arrows. The organizations that treat storytelling software design as a first-class engineering practice — rather than a nicety for the onboarding wiki — are the ones whose intent will outlast both their people and their tooling.
Sources & further reading
- Stefan Hofer & Henning Schwentner — Domain Storytelling, and its Thoughtworks Technology Radar entry
- Alberto Brandolini — EventStorming
- Martin Fowler — Bounded Context (Domain-Driven Design)
- Dan North — Introducing BDD (the origin of Given/When/Then)
- Michael Nygard — Documenting Architecture Decisions (the original ADR format)
- Simon Brown — The C4 model for visualising software architecture
- A longer reference treatment of reframing software design as storytelling
Top comments (0)