What Vibe Coding Still Can't Do
Vibe coding is genuinely good at getting you from an idea to a working first version fast. It's genuinely bad at a specific, predictable set of things: technical complexity beyond common patterns, guaranteeing production-grade performance without real optimization, debugging its own dynamically generated logic, staying coherent as a codebase grows without structure, and catching its own security mistakes. None of these are reasons to avoid vibe coding. They're reasons to know exactly where your own judgment, or someone else's, needs to take over.
I'm Mahmoud Zalt, an independent AI systems architect with 16 years building production software. I like vibe coding as a tool and I want to be straight with you about where it runs out of road, because the hype around it rarely mentions this part.
It struggles with novel technical complexity
Vibe coding handles common, well-established patterns well, a to-do list, a booking flow, a standard dashboard. It gets noticeably shakier the moment your requirements are genuinely novel or need sophisticated architecture: distributed systems, unusual performance constraints, or logic nobody has written a thousand times before. The AI is drawing on patterns it has seen; the less common your problem, the less reliable its first answer.
Code quality and performance need real optimization, not just generation
Vibe coding is excellent for testing an idea and building a prototype. It is not, by itself, a guarantee of production-grade performance. Generated code frequently works correctly but inefficiently, and getting it to actually perform well under real load usually takes deliberate optimization work that the AI won't do unprompted, because it isn't measuring against your real-world performance bar, it's answering the request you gave it.
Debugging AI-generated code is genuinely harder
Code you wrote yourself carries a mental model in your head: why this function exists, what this variable is for. Code the AI generated doesn't come with that model built in, and its structure can shift between requests in ways that make it harder to trace a bug back to its source. This is one of the more underrated limitations: the same feature that took ten minutes to generate can take much longer to properly debug when something in it misbehaves.
Maintenance gets harder as the codebase grows
A small app the AI generated is easy enough to regenerate or patch. A larger one, built up over many prompts, accumulates structure that wasn't planned, just accreted. Keeping it updated and coherent over time gets progressively harder if that structure isn't managed deliberately, and "just ask the AI to fix it" gets less reliable the bigger and older the codebase gets.
Security debt is the sharpest edge
This is the limitation with the highest real cost. AI-generated code is often produced and shipped without the code review and security checks that catch real vulnerabilities, hardcoded keys, weak input handling, overly broad permissions, unauthenticated endpoints. Every one of these can sit invisibly in a working app until someone finds it, and "it works" and "it's secure" are not the same claim. The more AI-generated code ships without review, the more this kind of security debt accumulates industry-wide, not just in any one project.
The stakes rise sharply the moment a vibe-coded prototype turns into something handling real customer data, payments, or business-critical process, without ever going through the security review a production system actually needs. The question stops being "can we build this" and becomes "can we trust this," and vibe coding alone doesn't answer that second question.
The honest summary
| Where vibe coding is genuinely strong | Where it genuinely falls short |
|---|---|
| Fast first versions of common app patterns | Novel or highly technical requirements |
| Rapid prototyping and idea validation | Guaranteed production-grade performance |
| Lowering the barrier to building something at all | Debugging its own dynamically generated logic |
| Iterating quickly based on feedback | Staying coherent as the codebase grows without deliberate structure |
| Explaining what it built, in plain language | Catching its own security mistakes |
Frequently Asked Questions
Does this mean vibe coding isn't worth using?
No. It means treating it as what it actually is, a fast way to a first working version, not a replacement for review, testing, and judgment once something matters. Used that way, it's a genuine advantage. Used as a full substitute for engineering discipline on anything real, it accumulates risk you don't see until it's expensive.
What's the single biggest risk people underestimate?
Security debt. A vibe-coded prototype that quietly turns into a real product, without ever going through a security review, because it "already worked," is the most common and most costly version of this limitation.
Can these limitations be fixed with a better AI model?
Better models narrow some of these gaps over time, but the core issue isn't model quality, it's process. Even a very capable model won't catch what nobody asked it to check for. Review, testing, and security assessment are a separate step, not a byproduct of a better generation.
How do I know when I've hit one of these limits?
Common signals: the AI keeps producing similar but slightly wrong fixes to the same bug, the app is handling real user data or money for the first time, or you genuinely can't tell if a piece of generated code is safe. Any of those is a good moment to bring in a review, not push forward on vibes alone.
Know the edges, use it anyway
Vibe coding earns its reputation for the first part of the journey, idea to working prototype, genuinely fast. The honest limitations show up after that: complex requirements, real performance, real debugging, and above all, real security. None of that is a reason to avoid it. It's a reason to know exactly when to bring in a review before something you built on vibes meets real users or real money.
The Vibecoder's Handbook is built around exactly this honesty, covering the parts that get you building fast and the parts that make what you build actually trustworthy, free through the early chapters. For a project that's crossed into real-stakes territory, that's what AI consulting is for.







