cd ../writing ←

note · 2026-07-27 · 3 min · #research · #ai · #software-factories · #engineering · #judgment · #system-design · #simplicity

Simple Systems Still Win: AI Capability Is Not a Mandate for Complexity

AI coding agents can stand up an elaborate architecture almost as cheaply as a simple one. That does not make elaborate the right choice. Complex systems create complex problems, and the best systems are still simple.

Simple Systems Still Win: AI Capability Is Not a Mandate for Complexity

AI coding agents can now stand up an elaborate architecture almost as cheaply as a simple one. That collapse in build cost is real, and it is a trap. Being able to build something complex is not a reason to. Complex systems create complex problems, and the best systems are simple. That rule is older than automation and it survives automation intact. The danger is letting the promise of AI cloud the judgment that used to keep designs lean.

AI lowers the cost of building complexity, not of living with it

The cost of a system was never mostly the typing. It is operation, debugging, on-call, onboarding, change, and the cognitive load of holding the thing in your head. AI compresses the build. It does not compress any of the rest, and by making more surface area cheap to generate, it can quietly inflate them. A complex system an agent wrote in an afternoon still has to be understood, secured, evolved, and recovered when it breaks, by humans, for years.

Simplicity was always the discipline

Brooks separated essential complexity, inherent to the problem, from accidental complexity, which we impose on ourselves. Good engineering spends the essential and refuses the accidental. Nothing about pattern machines changes that split. It just makes the accidental cheaper to manufacture, and therefore more tempting. The old heuristics still hold: the simplest design that meets the need, the fewest moving parts, boundaries you can reason about, the boring solution over the clever one.

Capability is not a mandate

"The agent can build it" answers a question nobody should be asking. The real question is whether the problem needs it. Reserve complexity for essential complexity: reach for the elaborate design only when the problem is genuinely that shape, and let the tooling make the simple system faster to build rather than the complex one easier to justify.

Don't let the promise cloud the judgment

The most valuable thing you can do with cheap complexity is decline it. When building anything is easy, taste and restraint become the scarce inputs, and judgment is exactly the part AI does not supply. Simple still wins. Let AI make simple systems cheaper to build, not complex ones easier to reach for.

Related: History of Software-Industrialization Waves (Brooks, "No Silver Bullet") and The Software Factory Hollows the Middle.

# subscribe

Occasional writing on systems & craft — no spam.

Keyboard bindings

Default NORMAL mode, from a hardware keyboard:

h j k l
Scroll left / down / up / right
g g
Scroll to top
G
Scroll to bottom
g + h/w/p/l
Jump to home / writing / projects / lab (lab has no page yet)
t
Cycle theme
f
Hint-jump -- label every on-screen link; type its label to open it
:
Enter COMMAND mode
/
Enter SEARCH mode -- n/N steps through results, Enter opens the highlighted one
?
Toggle this guide
Esc
Return to NORMAL from any mode, or close this guide

COMMAND mode (:) -- v1 commands. The registry is extensible: future commands (e.g. metrics queries) appear below automatically once registered, no template change required.