After spending a few weeks mostly winging it and coding what would’ve previously taken me a few months of focused work, I thought I’d write about AI coding.
Where AI coding still falls short
AI is an umbrella term that can include potential, unpredictable breakthroughs. Since nobody knows if, when, or how those will happen, let’s focus on agentic LLM systems to keep things relatively grounded.
I went from being dismissive of them - unable to leave Claude alone unsupervised - to trusting it with more and more code.
The biggest jump came from feedback loops: inspect screenshots, run tests, see what broke, fix it, repeat.
The problem is that AI can produce something that works perfectly well while still being much less maintainable or scalable than it could’ve been.
It’s like a coding interview where there are 20 ways to solve the same problem. The naive solution might work for the immediate use case, but depending on seniority, that’s not enough. It might fall apart under scale, perform badly, duplicate existing abstractions, or just leave behind a system that’s unnecessarily hard to change.
I think the next big jump could be better feedback loops for code quality, not just correctness. Some of that already exists through linters, architectural rules, review agents and evals. But judging whether an abstraction is right for the system is much less deterministic.
I still don’t know if AI could entirely replace developers. My gut right now says no. At least not under the current paradigm.
It’s basically like harnessing a fleet of productive juniors with uneven judgment. Sometimes it’ll recreate hundreds or thousands of lines of plumbing instead of using a higher-level abstraction that gets the same thing done in 2-3 lines.
Those mistakes compound fast. Without someone who understands the broader system and roadmap guiding it, the code can become a shitshow pretty quickly, with the AI chasing its own tail fixing one bug after another in what turns into a never-ending game of whack-a-mole.
The tradeoff
AI coding presents a tradeoff between development speed and code quality.
For quick prototyping and pre-PMF iteration, I think that tradeoff is amazing. Moving fast matters more, and some technical debt is a rational price to pay.
Having bad code post-PMF seems like the right problem to have, to the dismay of us developers who reluctantly have to clean up the mess once the most chaotic part of iterating on the product is over.
But no-coders building scalable, maintainable, polished products entirely with AI still seems like a myth to me.
For critical parts of mature or enterprise systems, I’m much less convinced. I’d still let AI write straightforward UI and CRUD after the system is designed, but I’d give it much less freedom over architecture.
What if the AI bubble pops?
I also worried this whole thing might disappear when the AI bubble pops. There’s enormous capital going into frontier AI, and labs are spending huge amounts on training and infrastructure.
But inference itself can still have healthy unit economics once the model exists. So even if the current frontier-model race turns out to be a bubble, that doesn’t mean LLM inference disappears with it.
So I don’t think LLMs are going away.
What if AI actually replaces developers?
Let’s assume, though, that AI eventually entirely replaces software developers. What then?
Let’s put aside the utopian dream of everyone having abundant resources without needing to work. Even if that eventually happens, I doubt it’ll happen anytime soon.
Assuming people still have to work, I think the most sensible response is to recursively find areas AI still can’t do well and learn how to do them well.
That could mean going deeper into tech - systems thinking, distributed systems, deep domain knowledge, and solving hard or novel problems where there isn’t an obvious existing pattern to follow.
It could mean getting better at management, leadership and recruitment - while we still need humans to guide AI.
Or it could mean moving laterally into areas that depend much more heavily on humans dealing with other humans - like product and sales.
The boundary will keep moving. So should we.
