You’ve probably noticed something strange. Every time you open your code editor, the AI agent is already there — churning out boilerplate, suggesting the next function, finishing your loops before you’ve even finished your coffee. Feels like a superpower, right?
But here’s the uncomfortable truth that nobody in the tech bubble wants to say out loud: AI coding agents are optimizing for the wrong thing. And in doing so, they’re actively killing the very foundations that made modern software possible.
I sat down with a team last week that had just shipped a full product in three days. They were beaming. “AI wrote 80% of the code,” they said. I asked them one question: “What framework did you build on?” Silence. “Uh, we just used whatever the agent suggested.”
That’s the problem. We’re trading long-term architecture for short-term hustle. And the next Rails — that elegant, painful-born abstraction that changed an entire generation of developers — will never be born in this world.
The Pain That Built Rails
Let me take you back to 2004. David Heinemeier Hansson was pulling his hair out building Basecamp in PHP. The code was a mess. Every page required hand-crafted SQL, repetitive templates, and endless configuration. The pain was unbearable. So he created Rails — a framework that distilled that pain into a set of conventions that made everyone else’s life easier.
Rails wasn’t born from brilliance. It was born from frustration. From the sheer agony of writing the same damn thing over and over.
Now imagine DHH in 2026, sitting down with Claude Code to build the same product. He types “build a project management app” and the AI spits out 10,000 lines of code. It works. It ships. But it’s a sprawling mess of duplicated logic, inconsistent patterns, and zero abstraction. The pain is gone. So why would he ever stop to build a framework?
AI doesn’t just fail to invent the next Rails. It actively disincentivizes the human desire to do so.
Efficiency vs. Elegance
This is the devil’s trade. AI makes you fast at the micro level — writing that one function, that one route, that one component. But it blinds you to the macro mess. Every line of code the AI generates is a tiny debt. And debt compounds.
I’ve seen codebases that were built entirely by AI agents. They look like a teenager’s bedroom — every surface covered, nothing organized, but hey, you can find the remote if you dig long enough. Except the remote is the login system, and the digging takes three hours.
The irony is beautiful: AI was supposed to free us from boilerplate. Instead, it’s become the most efficient boilerplate generator ever invented. The easier it is to write code, the harder it is to write good code.
The Frameworks of Tomorrow
We need the next Rails. We need the next React, the next Django, the next Laravel. But those frameworks come from humans who are angry enough at the status quo to build something better. If AI anesthetizes that anger, we’ll be stuck with a generation of developers who are fast at generating code but slow at recognizing when the code itself is wrong.
This isn’t a Luddite rant. I use AI every day. But I use it as a tool, not a crutch. The moment you let AI write your architecture, you’ve given up the one thing that makes you a software engineer: the ability to see the shape of the system.
The best code is code that doesn’t need to be written. AI will never tell you that.
So here’s my challenge to you: next time you open your AI assistant, don’t ask it to write the code. Ask it to explain why the code you’re about to write is a bad idea. Ask it to show you the pattern that makes this problem disappear. Don’t let AI steal your pain — because that pain is the only thing that will ever create the next Rails.
FAQ
Q: But isn't AI making developers more productive? How can that be bad?
A: Productivity on a micro level — writing individual functions faster — is real. But it's a local maximum. The global cost is that developers stop thinking about architecture, abstraction, and reusability. The next great framework will never be built because no one will feel the pain of writing the same boilerplate a thousand times.
Q: What should I do as a developer using AI tools?
A: Use AI to generate code, but never let it design your system. Always ask: 'Why is this pattern being repeated?' That's your cue to abstract. And never let the AI replace your own frustration — that frustration is the raw material for innovation.
Q: Isn't this just a fear of change? New tools always create new problems.
A: Change is fine. But this isn't a new tool — it's a new incentive structure. AI makes it cheap to be sloppy. The danger is that we lose the discipline of building well. Frameworks like Rails were born from constraint. AI removes constraint, and with it, the engine of invention.