The Constraint Problem

Everyone’s celebrating that AI can write code. And it can. Low-level code generation is, for most practical purposes, solved.

But that’s the easy part.

What’s not solved

Production-grade systems thinking is not solved. DevOps is not solved. Getting AI to not ignore critical directives is still a daily struggle for anyone shipping real software with these tools.

Here’s what I mean:

Architectural constraints. Your system has invariants. Database schemas that must not break backward compatibility. API contracts that other teams depend on. Security boundaries that must never be crossed. AI will cheerfully violate all of these if you don’t encode them explicitly, and sometimes even when you do.

Product constraints. The product has expectations. Users expect the checkout flow to work the same way it did yesterday. They expect their data to be where they left it. They expect the app to not regress. AI doesn’t inherently understand “don’t break what already works.”

Durability over time. A one-shot prototype is easy. A system that maintains its quality across hundreds of iterations, with multiple contributors, over months and years? That requires discipline that current AI systems don’t have on their own. Each change needs to respect the accumulated decisions that came before it.

User experience and interface. Defining what the product should feel like, how users should navigate it, what the interaction model is — this is still deeply human work. AI can implement a design, but it can’t decide what the right design is.

The real bottleneck

So when I say “code is being solved, product is not,” I’m not just talking about writing better specs. I’m talking about the full stack of constraints that make software actually work in production:

  • Product definition and intent
  • Architectural and operational constraints
  • System coherence over duration
  • Meeting user expectations consistently, not one-shot after one-shot

Getting autonomous AI to diligently abide by all of these, without human control, review, or oversight at every step, is the real unsolved challenge.

Why this matters

If you solve this, you unlock something genuinely new: software that gets better autonomously, not just software that gets written faster. The difference between those two outcomes is the difference between a tool and a system.

That’s what I’m working on.