Skip to main content

What Vibe Coding Still Can't Do (An Honest Look)

Vibe coding is genuinely fast at getting you a working first version. It's genuinely weak at complex requirements, real performance, debugging its own code, and above all, security. An honest look at both sides.

Insights
8m read
#VibeCoding#AI#Security#SoftwareEngineering
What Vibe Coding Still Can't Do (An Honest Look) - Featured blog post image
Mahmoud Zalt

1:1 Mentor

Are you a software engineer moving into AI?

Let's have a call. I'll help you modernize your skills and learn the tools, systems, and architecture behind reliable AI products. One session or ongoing.

The Vibecoder's Handbook, from idea to production

4.8

Everything you need to know about shipping software with AI, from the App idea to production.

What it covers

  • 0IntroductionWhat this book is & how to read it
  • 1Set UpGet your tools and a running app ready
  • 2PlanStructure your idea into a clear specification
  • 3ArchitectLay out a modular codebase for your AI
Start Reading Free

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 strongWhere it genuinely falls short
Fast first versions of common app patternsNovel or highly technical requirements
Rapid prototyping and idea validationGuaranteed production-grade performance
Lowering the barrier to building something at allDebugging its own dynamically generated logic
Iterating quickly based on feedbackStaying coherent as the codebase grows without deliberate structure
Explaining what it built, in plain languageCatching 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.

Read the free handbook ->

Thanks for reading! I hope this was useful. If you have questions or thoughts, feel free to reach out.

Content Creation Process: This article was generated via a semi-automated workflow using AI tools. I prepared the strategic framework, including specific prompts and data sources. From there, the automation system conducted the research, analysis, and writing. The content passed through automated verification steps before being finalized and published without manual intervention.

Mahmoud Zalt

About the Author

I’m Zalt, a technologist with 16+ years of experience, passionate about designing and building AI systems that move us closer to a world where machines handle everything and humans reclaim wonder.

Let's connect if you're working on interesting AI projects, looking for technical advice or want to discuss anything.

Support this content

Share this article

Stay in touch

An occasional note when I build or write something new. Leave anytime.

Hire AI Employees

Hire AI Employees that work 24/7. No code.