DEV Community

Itay Maman
Itay Maman

Posted on

The Elephant in the Room: Systems Thinking Meets Coding Agents

I just read Paul Homer's latest post, Systems Thinking, on The Programmer's Paradox. It's a well written, thought-provoking piece about the two schools of thought in building complex software: laying out a full specification that accounts for all the dependencies upfront, or evolving the system incrementally over time. Evolution versus Engineering, as he puts it.

I found myself nodding along, especially at his observation about the company with 3000+ active systems that had evolved over fifty years into a shaky house of cards. But as I kept reading, it hit me that this framework extends naturally into something the post got me thinking about: this is exactly the tension we're navigating right now with coding agents.

The two approaches the post describes map almost perfectly onto the two modes of working with AI coding tools. You can write a comprehensive spec and hand it to the agent all at once, or you can work in small, focused chunks.

The irony is that the comprehensive-spec approach is hard for exactly the same reasons the post lays out: real systems have deep, tangled dependencies, and no one — no matter how experienced — can fully work through all of them in advance. If we were good at writing complete specs, we wouldn't have 3000 systems in the first place.

But the incremental approach has its own failure mode with agents. Each chunk gets better individual focus, and you can course-correct as you go — but the agent loses the holistic view. You end up with exactly the kind of inconsistency described in evolved systems, just at a faster pace — and this happens whether you're working in one long session or starting fresh each time.

The "balanced path in the middle" Homer says he hasn't found in decades of practice might actually be the key challenge in AI-assisted development right now: how do you give an agent enough context about the whole to keep each small step coherent, without needing to solve the impossible problem of specifying everything in advance?

Top comments (0)