Coding Agents Are the Cure against Accidental Complexity


Modern web dev is full of accidental complexity

I started building software as an iOS developer. Say all you want about Apple’s closed/restricted ecosystem—but as a developer, it was a blessing to work in an environment of well-designed frameworks, consistent UX patterns, and coding practices.

When I transitioned into web development, I was shocked. To this day, I get confused (and frustrated) about build tools, bundling systems, and the sheer overwhelm of options to “do things” in the JS ecosystem.

In his 1986 paper, No Silver Bullet—Essence and Accident in Software Engineering, F. Brooks coined the term accidental complexity—a term that perfectly captures the state of modern web development to me.

Accidental complexity refers to things that aren’t inherent to the problem you’re solving but arise from the tools and representations you’re forced to use:

  • we used to manually manage memory addresses until we got higher-level languages
  • we used to worry about the object structures passed around in our JavaScript apps until we got TypeScript
  • we used to deal with callback hell until we got async / await

Memory addresses, structures of JS objects and callback hell have one thing in common: they’re irrelevant to the application we want to build. They’re just there because they solved some previous problem (for which they may have been a valid solution).

Accidental complexity is fundamentally uninteresting

This is what we understand as accidental complexity—things you have to deal with regardless of what you’re building. Accidental complexity is fundamentally uninteresting. It’s the kind of thing you don’t want to think about, automate away or use a tool to hide from you.

There also is essential complexity. This is the interesting part, the part you want to spend your cognitive energy on! Essential complexity is inherently required by the problem you’re trying to solve. It’s irreducible. It lives in the specification, the design, the conceptual structure of what you’re building. If your domain requires modeling 30 interacting concepts, no tool can make that 15.

When I transitioned into from iOS into web development, I always felt like it was impossible for me to become proficient because of all the accidental complexity that had been accumulated over time in the JS ecosystem.

Sure, React, TypeScript, Tailwind, Vite are all gigantic leaps that make it possible even for someone without 15 years of JS history like me to build something. But the time I would have needed to invest to build something great would have been enormous.

That has changed with AI coding agents!

AI coding agents absorb accidental complexity

When I built Spherica, I didn’t care about accidental complexity.

I have a good enough understanding of web development to explain what I want (what stack to use, how I like my code structured, what kind of tests I need,…).

What I don’t have is the patience, time, and frustration tolerance to spend hours fixing hydration mismatches in SSR, dealing with bundler issues or debugging CSS specificity conflicts.

When I first purchased the Claude Code max plan, I was amazed. I didn’t need to think about all the accidental complexity. I could spend my energy into the things that actually mattered to me. Defining requirements, modeling my domain, thinking about the architecture and UX of my app.

The accidental complexity was still there. But it was absorbed, hidden, handled.

I’ve never felt more empowered to build

For the first time in my career as a web developer, I feel like I’m spending most of my time on essential complexity—the problems that are genuinely interesting, the ones that require my creativity, judgment, taste. The accidental stuff hasn’t disappeared. But it’s no longer my problem.

Brooks said there’s no silver bullet. And he’s right. AI agents won’t make your domain simpler or your architecture decisions easier. But if the silver bullet is supposed to kill accidental complexity? Coding agents are the closest thing we’ve had to one since high-level languages replaced assembly


If you’re using Coding Agents (or not), please take my State of Agentic Coders (Q1 2026) survey, and share it with your developer friends!