Software Design Fundamentals

The timeless design disciplines — deep modules, conceptual integrity, shared vocabulary, simplicity — that matter more, not less, when AI amplifies the cost of bad structure.

Also known as: deep module vs. shallow module (Ousterhout), deep module (Ousterhout), deep modules, conceptual integrity, ubiquitous language (DDD), ubiquitous language, design concept (Brooks), design concept, shared design concept (before you code), complexity (Ousterhout), software entropy, obvious, ikke clever, obvious not clever, tilført vs. essensiell kompleksitet, essential complexity, accidental complexity, information architecture (in the AI context), information architecture, Best Simple System for Now (BSSN), BSSN, gold-plating, goldplating, First Sight, straightforwardness

Right-Sizing Boundaries & Primitives

How authors use it

Oldest first (extraction date when no publication date is known).

AuthorTheir termTheir meaning
Bliki: Mythical Man Month
Martin Fowler · 2026-01-01
conceptual integrityA system reflects one coherent set of design ideas rather than many independent, uncoordinated ones; achieved through both simplicity and straightforwardness (the ease of composing elements).
Bliki: Mythical Man Month
Martin Fowler · 2026-01-01
straightforwardnessHow easily the elements of a system can be composed — a companion property to simplicity in achieving conceptual integrity.
11) AI-spesial med Vilde Opsal og Anders Sveen
Truls Jørgensen og Audun Fauchald Strand — Heis Podcast · 2026-02-16
information architecture (in the AI context)Vilde: clear definitions, naming, structure, and consistent patterns — the thing that *still* matters most when LLMs do a lot of generation, because it determines whether the model can navigate the system
13) Tobias K. Torrissen om kodekvalitet, konferanser og AI
Truls Jørgensen og Audun Fauchald Strand — Heis Podcast · 2026-03-16
obvious, ikke cleverA design heuristic: prefer code that is immediately understandable to a new reader over code that is compact, elegant, or sophisticated. Few abstractions, explicit over implicit.
13) Tobias K. Torrissen om kodekvalitet, konferanser og AI
Truls Jørgensen og Audun Fauchald Strand — Heis Podcast · 2026-03-16
tilført vs. essensiell kompleksitetBorrowed Brooks/Moseley-Marks framing: essential complexity is inherent to the domain (you can move it but not destroy it); accidental/added complexity is what design discipline can remove. The job is minimising added complexity so only essential remains.
13) Tobias K. Torrissen om kodekvalitet, konferanser og AI
Truls Jørgensen og Audun Fauchald Strand — Heis Podcast · 2026-03-16
goldplatingThe product-development failure mode where teams over-invest in first-iteration polish because tight user feedback creates over-identification with the user's wants. He has a høne to plukke with product-utviklingsmiljø about this.
It Ain't Broke: Why Software Fundamentals Matter More Than Ever
Matt Pocock (AI Hero conference talk, AI Engineer) · 2026-04-23
software entropyThe tendency of a codebase to degrade with each change when the developer (or AI) focuses only on the immediate change without considering whole-system design; from The Pragmatic Programmer
It Ain't Broke: Why Software Fundamentals Matter More Than Ever
Matt Pocock (AI Hero conference talk, AI Engineer) · 2026-04-23
complexity (Ousterhout)Anything related to the structure of a software system that makes it hard to understand and modify; a bad codebase is one that is hard to change
It Ain't Broke: Why Software Fundamentals Matter More Than Ever
Matt Pocock (AI Hero conference talk, AI Engineer) · 2026-04-23
design concept (Brooks)The invisible, ephemeral shared theory of what is being built that exists between collaborators; not an asset or document but a mutual understanding
It Ain't Broke: Why Software Fundamentals Matter More Than Ever
Matt Pocock (AI Hero conference talk, AI Engineer) · 2026-04-23
ubiquitous language (DDD)A shared vocabulary derived from the domain model, used consistently in code, conversations with domain experts, and conversations with AI; from domain-driven design
It Ain't Broke: Why Software Fundamentals Matter More Than Ever
Matt Pocock (AI Hero conference talk, AI Engineer) · 2026-04-23
deep module (Ousterhout)A module with lots of functionality hidden behind a simple interface, as opposed to shallow modules with complex interfaces and little functionality
[FULL WORKSHOP] AI Coding For Real Engineers - Matt Pocock, AI Hero
AI Engineer (channel); speaker: Matt Pocock (AI Hero) · 2026-04-24
design concept (Brooks)Borrowed from Frederick P. Brooks's The Design of Design: the shared idea among all participants in a design effort. Pocock's reinterpretation: what the developer needs to reach with the agent before any plan or code.
[FULL WORKSHOP] AI Coding For Real Engineers - Matt Pocock, AI Hero
AI Engineer (channel); speaker: Matt Pocock (AI Hero) · 2026-04-24
deep module vs. shallow module (Ousterhout)From John Ousterhout's A Philosophy of Software Design: a deep module exposes a small interface to a lot of functionality; a shallow module is a small file exporting a small surface. Pocock argues unaided AI produces shallow-module codebases, which fragment test boundaries and degrade agent performance.
Applying Best Simple System for Now for Software Design
Ben Linders · 2026-05-09
Best Simple System for Now (BSSN)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
Applying Best Simple System for Now for Software Design
Ben Linders · 2026-05-09
First SightThe 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)
Applying Best Simple System for Now for Software Design
Ben Linders · 2026-05-09
gold-platingAdding unnecessary polish, generalization, or speculative features beyond what current requirements demand
SWLW #701: Gazing at the misty AI Frontier, From Vibe Coding to Agentic Engineering, and more.
Oren Ellenbogen · 2026-05-18
Shared design concept (before you code)Matt Pocock's principle the curator endorses: agreement on the design / mental model must precede coding (and prompting), because agents amplify whatever direction you give them
Software Design in the Agentic Age: Place Your Bets
Mathias Verraes · 2026-07-07
Ubiquitous LanguageAn unambiguous, agreed-upon language inspired by the domain that captures all concepts, jargon, and metaphors, and is shared across code, tests, docs, UIs, APIs, and stakeholder conversations
11 Tips For AI Coding With Ralph Wiggum
Matt Pocock · 2026-07-11
software entropyThe tendency of a codebase to deteriorate over time; the article's claim is that an autonomous loop accelerates it, piling dozens of low-quality commits per hour where a human commits once or twice a day.

Documents (43)

Propositions touching this concept (23)

By publication month, oldest first (extraction month when no publication date is known).

2025-11

2026-01

2026-02

2026-04

2026-05

2026-07

2026-08

2026-09

Tensions

Is code a durable artifact humans must keep reading, or an ephemeral byproduct regenerated from a spec?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: The retreat's own 'largest divide' (Ördög). It is unresolved inside the room and inside the individual essays: Herlein concedes the deterministic 'code is the better spec' counter is 'hard to wave off', and Ördög reports being ironically pulled toward the dark-factory camp by her own good-code practices. The crux is whether a fuzzy prose spec can ever be the durable source of truth when the stated quality bar is verifiability — a tension none of them resolves.
How much of the build pipeline should run with no human reading the code (the 'dark factory')?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: Not simple optimism vs pessimism but a disagreement about preconditions and hidden costs. Ocytko's is a projection of where tooling is heading; Bangser and Verraes both supply reasons the projection is unsafe by default — learning-loss and missing prerequisites. Bangser has the stronger argument that the loss is structural (you cannot buy back organisational learning), which even an improving platform does not address.
How far can day-2 operations be handed to self-healing / autonomous remediation?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: Ruby's report is descriptive (where practice actually stands) and Ocytko's is aspirational (where platforms could go); the gap between 'remediation is withheld' and 'failure modes disappear' is precisely the distance the optimists are projecting across. Bangser supplies the reason the gap may not close on efficiency grounds alone — the withheld human step is also the learning step.
Should the harness/platform-building function be centralised, or emerge per-team?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: A precise split about the organisational form of the scaffolding, not its existence: both want shared architecture guidance, but Edwards-Alexander wants the building capability distributed (friction as feature) while Ocytko wants it concentrated in a platform (constraint as feature). Each concedes the other's pole — Edwards-Alexander keeps a central harness; Ocytko warns against over-constraining — which is why this is a live, unresolved tension rather than a clean contradiction.
Reversibility as a hedge vs a one-way commitment to deeper autonomy.
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: Incompatible risk models. Verraes treats deep AI-dependence as the danger to insure against; Herlein treats not-committing as the existential danger. They cannot both be the rational strategy: reversibility trades some upside for exit options, while flywheel-commitment trades exit options for compounding lead. The tie-breaker is empirical (will access/economics deteriorate?) and neither has evidence — Fowler's 'tokenpocalypse' data leans slightly toward Verraes.
Is the value question genuinely settled by evidence, or does uncertainty and sampling bias still dominate?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: The single sharpest divergence, and it sits directly under the headline whether-to-how convergence: they narrate the same shift but disagree on what it establishes. Edwards-Alexander and Herlein read the room's confidence as evidence; Vella and Ruby read the same room as a self-selected in-group. Ruby has the better of it methodologically — he is the only one to interrogate the sample and to notice the evidence is asymmetric (upside anecdotal, downside studied), which is uncomfortable precisely because the cohort's confidence is built on the weaker side.
If code is no longer the bottleneck, what is the new binding constraint?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: They agree code/delivery has ceased to be the constraint but name three different successors, with different investment implications — expand decision-making capacity (Vella), optimise for learning (Edwards-Alexander), or capture tacit knowledge (Herlein). These are complementary in principle but rivalrous for attention and budget; the disagreement matters because each implies a different 'first thing to fix.'
Where is the locus of safety for non-engineers / citizen developers building software?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: Four different answers to the same governance question: the platform (Ocytko), the director's discipline (Ruby), the tooling interface (Bangser), or nobody-knows-yet (Ördög). Ruby and Ocytko are the true opposites — Ruby puts the burden on a human management skill, Ocytko designs the human out by making failure modes disappear in the platform. That both are held by attendees of one retreat is a measure of how unsettled the citizen-developer problem is.
Does low-level code quality matter intrinsically, or only instrumentally (via token economics)?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: The disagreement is about the grounds of the fundamentals-revival, not just its truth. If quality matters only via token cost (Verraes, and Fowler's proxy), the case for it is contingent on token economics and evaporates if tokens get cheap; if it is intrinsic (Ördög), it survives cheaper tokens. This makes the popular slogan 'quality still matters' quietly unstable — the same conclusion rests on incompatible foundations.
Will the classic fundamentals (especially DDD / domain modelling) actually deliver this time — is the revival evidenced or merely asserted?
from: What did the participants of the Thoughtworks 'Future of Software Engineering' Europe retreat (mid-2026) conclude about how agentic AI is reshaping software engineering?
Assessment: The single slogan 'fundamentals matter more' spans concrete evidence (Verraes), unargued assertion with admitted bias (Nilsson), and active skepticism (Edwards-Alexander) — from attendees of one retreat. This directly exposes the 'the fundamentals are agreed' assumption below: the cohort's flagship convergence is doing a lot of work with very uneven support underneath it.
Context size: should you shrink the problem to fit a small usable window (decompose / reset), or grow and trust a large window?
from: When working with AI coding agents, how should you select the model, its reasoning/effort level, and its context size for a given task?
Assessment: The apparent 'grow / trust the big window' position for CODING largely dissolves once retrieval is separated from coding — which is exactly Pocock's move ('good for retrieval, less good for coding') and musistudio's (longContext is a routed escalation, not the coding default). No text argues you should code inside a full 1M window. The only genuine pressure toward trusting a bigger window is the vendor-forward Fable 5 / Opus 4.6 claim that coherence loss is being engineered away — but that is a moving target (convergence 5), not a stable dial, and even the harness paper only relaxed context resets AFTER measuring that the new model no longer needed them. A secondary, live sub-dispute survives: reset vs compact. Pocock, the harness paper and best-practices favor clearing/resetting to a fresh agent; Hills and Osmani lean on compaction. The reset camp has the better argument on today's models — compaction preserves the same anxious agent — but the disagreement is real and unresolved. Verdict: shrink-and-decompose is the default for coding; grow only as an explicit retrieval escalation; prefer reset over compact unless the model version has demonstrably killed context anxiety.
Is code a durable artifact to be maintained, or an ephemeral byproduct regenerated from a more durable source (spec/objective)?
from: What is the future of software development in the agentic/AI age?
Assessment: The most-cited open question of the corpus, and genuinely unresolved (Herlein: 'no consensus here. None.'). The 'code is the better spec' counter is strong — code is unambiguous, executable, deterministic, whereas a prose spec is reinterpreted each run, which sits in tension with verifiability being the quality bar. Ruby's move is the most defensible: it dissolves the code-vs-spec fight by locating durability in the evaluation rather than any representation. Verraes and Ördög expose the load-bearing empirical unknown — nobody has data on regenerate-vs-patch cost or on long-term evolvability of agent-maintained code.
Where does the non-delegable human asset now live — the harness/platform, the oracle, the fundamentals, or the developer's understanding?
from: What is the future of software development in the agentic/AI age?
Assessment: This is the deepest structural disagreement — every author agrees a human residue remains but nominates a different residue, and the choice determines what to invest in and what to teach. The harness-centric (Edwards-Alexander), oracle-centric (Ruby), fundamentals-centric (Nilsson/Bangser), and understanding-centric (Fowler) camps are not merely emphases: they imply different career ladders, different hiring, and different failure modes. Ruby's oracle and Bangser's operational-learning are the most operationally concrete; Nilsson's is the least argued. The absence in the corpus of anyone who holds 'nothing is non-delegable' is itself telling (see unexamined assumptions).
Should the harness/platform and its safety be centralized or left distributed across teams?
from: What is the future of software development in the agentic/AI age?
Assessment: A real operating-model split. Edwards-Alexander's distributed stance rests almost entirely on the DevOps-team analogy (his own extraction flags it as asserted-on-intuition, not argued), whereas the platform camp has the stronger concrete case for the citizen-developer safety problem — you cannot distribute production-data guardrails to non-engineers. The tension is partly reconcilable: Ocytko himself concedes a platform tight enough for non-engineers may be too constraining for expert engineers' identity and innovation, which is exactly the freedom Edwards-Alexander is protecting. The unresolved question is whether one platform can be both.
How far should software be automated — toward the fully-autonomous dark/software factory, or held back to bounded autonomy with humans in the loop?
from: What is the future of software development in the agentic/AI age?
Assessment: The spectrum runs from Ördög/Ocytko (full automation is arriving and desirable) to Bangser/Ruby/Verraes (deliberately withhold the last step). The decelerationists have the better of the safety argument today — Ruby's 'nobody will cede the blast radius' and Bangser's 'removing humans removes learning' identify concrete, unmet prerequisites — but Ördög's context-dependence (backends, COBOL) shows the boundary is domain-specific, not absolute. The real disagreement is less about capability than about who absorbs the blast radius when an autonomous fix goes wrong.
Does the current evidence favor optimism or doubt about agentic engineering's payoff?
from: What is the future of software development in the agentic/AI age?
Assessment: The sharpest divergence in the corpus, because it is about the epistemic ground of every other claim. Nilsson's optimism is explicitly consensus-of-the-in-group and self-flagged as biased; Ruby and the Thoughtworks report both bring the only genuinely external evidence (DORA reversal, HBR intensification, outside surveys) — and it points the other way. On the current record, the skeptics have the stronger footing precisely because the optimistic case is methodologically weakest (a 'sample of one,' as Ruby says of his own best data). The whole cohort's cautious optimism may be an artifact of who was in the room.
Strategically, is the right move to accelerate adoption to build a permanent lead, or to decelerate and hedge against AI's risks?
from: What is the future of software development in the agentic/AI age?
Assessment: Nearly opposite bets: Herlein optimizes for a world where AI keeps getting cheaper and better and first-movers win permanently; Verraes and Fowler optimize for a world where AI gets costlier, curtailed, or unreliable. Herlein's 'permanent moat' rests on flywheel logic plus a single secondhand anecdote and ignores technology-diffusion catch-up dynamics; Verraes and Fowler's hedge is cheap insurance but under-examines whether reversion is actually achievable once specs, agents, and toolchains are deeply embedded and human familiarity has eroded. The disagreement is ultimately a bet on the trajectory of token economics, which nobody in the corpus can price.
Does AI adoption improve output and developer experience together, or do they decouple — with more output bought at the cost of the developers?
from: What is the future of software development in the agentic/AI age?
Assessment: This is the specific, evidence-bearing form of the optimism/pessimism split, and it cuts directly against any simple reading of 'DevEx = AgentEx' as good news. The harmony camp (Nilsson, Ördög) speaks from felt experience and in-group mood; the decoupling camp (Thoughtworks, Vella) and Fowler's own cited HBR study bring the harder data, and it shows output and wellbeing pulling apart. Notably Fowler holds both 'same-size teams do much more' and the burnout finding without resolving them — the single clearest internal contradiction in the corpus, and a sign the harmony framing is doing more reassuring than the evidence supports.
Is preserving human understanding of the system a first-order value, or is comprehension safely offloadable so long as output is verifiable?
from: What is the future of software development in the agentic/AI age?
Assessment: The optimist-practitioner vs. skeptic-humanist axis. Fowler and Nilsson treat comprehension and craft as intrinsic goods whose loss is a harm even when output is fine; Herlein and Ocytko treat comprehension as instrumental — replaceable by verification and platform guardrails. The humanist camp has the stronger long-run argument (Fowler's cognitive-debt case and Ocytko's own 'who-guards-the-guards' problem both show verification and guardrails are themselves fallible artifacts that someone must understand), but the offloadable camp is describing what is actually happening at scale. The crux is whether verifiability can ever be robust enough to make understanding optional — which Ruby's own Goodhart gap (a passable oracle diverging from true intent) suggests it cannot fully be.
If code was never the bottleneck, what is the binding constraint now?
from: What is the future of software development in the agentic/AI age?
Assessment: A productive three-way split downstream of the shared 'code was never the bottleneck' finding. They are not incompatible so much as differently located — decision capacity (Vella) is organisational, learning (Edwards-Alexander) is about the team's rate of understanding the problem, and knowledge (Herlein) is about capturing rationale. But they imply different investments: expand downstream absorption, restructure around learning, or build knowledge-capture pipelines. The corpus has not reconciled which is the true binding constraint, and each author generalizes from a different vantage (a retreat-floor convergence, an org-design frame, a knowledge-engineering frame).
How should newly-empowered citizen developers be made safe — constrained platform, human stewardship, or supported API-first tooling?
from: What is the future of software development in the agentic/AI age?
Assessment: All three agree citizen developers are inevitable and must not be blocked, but the safety mechanism differs — encode it in a constraining platform (Ocytko), transfer it through human relationships (Laycock), or expose it as consumable interfaces (Bangser). Ocytko's platform-first case is strongest on the specific failure mode both he and Ördög name (non-engineers leaking or bypassing production-data access), which stewardship alone cannot prevent at scale. Laycock's stewardship answers a different problem — sustaining the junior-to-senior pipeline — that a platform does not. The positions are complementary in principle but compete for the same finite investment, and none supplies a concrete governance model for vibe-coded shadow IT.

Open gaps (86)