Applying Best Simple System for Now for Software Design
Ben Linders ยท article ยท 2026-05-09 source โ Reader ๐ฅ๏ธ
The trade-off between technical debt and missed deadlines is a false dichotomy; by building the simplest system that meets only current requirements to a high standard (Best Simple System for Now), teams can ship continuously while keeping future change cheap โ because simplicity, not speculative flexibility, is the real source of adaptability.
practical ยท interview-article โ An InfoQ article reporting on Daniel Terhorst-North's GOTO Copenhagen talk, supplemented with a follow-up interview. Primarily practical โ prescribes a design discipline (BSSN) and offers concrete heuristics for adoption.
Structure
| Part | Role |
|---|---|
| Opening frame: the false dichotomy | Establishes that the perceived trade-off between quality and delivery speed is wrong |
| The three characteristics of BSSN | Defines the acronym: Simple (no speculative code), for Now (current requirements only), Best (high standard for what exists) |
| First Sight and Second Thoughts (Pratchett metaphor) | Introduces a diagnostic metaphor โ see what is really there, then watch your own thinking |
| The generalization trap | Diagnoses why systems become complex โ programmers love to generalize and predict future directions |
| Practice and pairing as remedies | Prescribes habit-building through repetition and pairing to counteract over-engineering instincts |
| Interview: dimensions of change | Provides concrete examples of how speculative design fails when the actual change dimension differs from the predicted one |
| Interview: act your way to new thinking | Argues that belief in BSSN follows practice, not the other way around โ especially for experienced engineers |
Key terms
- Best Simple System for Now (BSSN) Software Design Fundamentals
A design approach where code meets all current requirements to a high standard, contains no speculative or extraneous code, and is future-proof through simplicity rather than extension points - dimensions of change Changeability & Optionality
The multiple, unpredictable directions in which a product could evolve at any time; anticipating one dimension introduces speculative complexity that trades off against all the others - First Sight Software Design Fundamentals
The ability to see what is actually there โ the real requirements and real system โ rather than what you expect or wish to see (borrowed from Terry Pratchett) - gold-plating Software Design Fundamentals
Adding unnecessary polish, generalization, or speculative features beyond what current requirements demand - sketches Malleable Software
Exploratory code written to test ideas, held to a lower standard than production code but still requiring good naming and simplicity
Propositions
- explicitThe trade-off between technical debt and missing deadlines is a false dichotomy.
- explicitWith the right design decisions, you can have a shippable product all the time while keeping quality high.
- explicitcontestedSpeculative code and extension points make future changes harder, not easier, because the actual direction of change is unpredictable.contradicts โWorse is better: C# versus F# ยท p19 โ Seemann treats F#'s larger, admittedly unmeasured feature superset as a mark of superiority; BSSN holds that speculative extension points and unused capability make future change harder, not easier โ the same tension the previous 'worse is better' article exhibited with XML's richer standards ecosystem, and left unaddressed here too.contradicts โWorse is better: JSON versus XML ยท p9 โ Seemann treats XML's latent, ready-to-use standards (schema/versioning/XQuery/SAX) as a positive reason to prefer the richer format; BSSN holds that speculative extension points and unused capacity make future change harder, not easier โ an unaddressed worldview tension, not a rebuttal Seemann makes.
- explicitestablishedTrue future-proofing comes from simplicity โ a simple system is easy to change in any direction, not just the direction you predicted.supports โPresentation: The Future of Engineering: Mindsets That Matter When Code Isn't Enough ยท p2 โ Gall's Law and the 'Best Simple System for Now' future-proofing argument converge from different traditions on the same claim: a simple working system is what preserves the ability to change direction later.supports โWorse is better: JSON versus XML ยท p5 โ XML's gradual enhancement โ start with plain nesting, add a schema only when a real need appears โ is BSSN applied to data-format design: defer formalization and let simplicity carry adaptability. On this proposition Seemann is Beck-aligned, even as p9 pulls the other way.
- explicitProgrammers' love of generalization is the primary cause of unnecessary system complexity.
- implicitdevelopedExperience makes engineers worse at simplicity, not better, because they become more confident in their ability to predict the future.extends โPresentation: The Future of Engineering: Mindsets That Matter When Code Isn't Enough ยท p6 โ Names the specific psychological mechanism (Einstellung effect) behind the same phenomenon the other document observes โ that experience/expertise makes engineers worse at seeing simpler or better solutions, not better.
- explicitBSSN is a practice discipline that must be learned through repeated experience, not through intellectual persuasion.
- explicitPair programming is an effective guard against over-engineering because a partner challenges speculative assumptions.
Arguments
Speculative design is counterproductive strength: high
BSSN resolves the debt-vs-deadline false dichotomy strength: medium
Simplicity must be practiced, not just understood strength: medium
Narratives
โ Illustrates P3 (speculative design fails) and the 'dimensions of change' concept โ four real scenarios where a reporting system changed in ways that conflicted with whatever speculative design choices could have been made
โ Literary metaphor that reframes the design problem as a perceptual one โ programmers need to see what is actually there (First Sight) and monitor their own thinking for speculation (Second Thoughts)
โ Personal testimony that even the method's advocate struggles with it, lending credibility to P7 (it requires practice) and P6 (experience doesn't help automatically)
โ Vivid rhetorical example of First Sight โ challenges readers to question whether their architectural choices match the actual scale of the problem
Questions addressed
- โญ Is the trade-off between quality and speed real or false?
- โญ What does a well-designed simple system look like?
- โญ Why does speculative design fail?
- โญ How can engineers learn to resist over-engineering?
- โญ Why is simplicity harder for experienced engineers?
Gaps
- incompleteNo discussion of how BSSN handles genuinely uncertain or conflicting current requirements. The framework assumes 'current requirements' are knowable and stable, but in many contexts they are ambiguous or in flux.
- incompleteNo treatment of team or organizational dynamics. BSSN is presented as an individual design discipline. How does it interact with architectural governance, platform teams, or mandated standards that may require speculative infrastructure?
- uninformedNo engagement with the large body of work on evolutionary architecture (Ford/Parsons) or fitness functions, which addresses the same problem space โ keeping systems adaptable โ with complementary but different mechanisms.closed byComprehension at AI Speed: Building a Context Store for Evolutionary Architecture โ Provides substantive engagement with evolutionary architecture and fitness functions (Ford/Parsons/Kua/Sadalage) as a complementary mechanism for keeping systems adaptable, applied specifically to the AI-comprehension problem that the other document left unaddressed.
- illogicalMinor tension: the 'Best' characteristic requires telemetry, automated tests, API docs, and automated deployment paths. These are themselves forward-looking investments that go beyond 'current requirements'. The boundary between 'necessary quality infrastructure' and 'speculative code' is not clearly drawn.
Related documents
- Code maintainability plummets in the AI coding era
- We Studied 150 Developers Using AI (Here's What's Actually Changed...)
- Software Design in the Agentic Age: Place Your Bets
- 11 Tips For AI Coding With Ralph Wiggum
- [FULL WORKSHOP] AI Coding For Real Engineers - Matt Pocock, AI Hero
- The "funhouse mirror": How AI reflects the hidden truths of your software pipeline
- All models, no matter how smart, will eventually build systems...
- CannotMeasureProductivity
- Fragments: July 6
- Genie Tarpit