aqmhub

AI & Software Consulting by Mike

Book a free call

May 16, 2026

Vibe Coding Explained: What It Is, Why Developers Are Divided, and What It Actually Means

Vibe coding means building software by describing what you want in natural language and letting AI write the code. Is it real engineering? A working developer's honest take.

Andrej Karpathy coined the term "vibe coding" in February 2025, and it immediately fractured the software development community into two camps: people who found it liberating and people who found it alarming.

The term has since accumulated 500,000 monthly searches — more than most mainstream programming languages. It has also accumulated more hot takes than any concept deserves. Here's an honest assessment.

What vibe coding actually means

Karpathy's original description: "There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible to build software without really seeing or reading the code at all."

The practical version: you sit down with an AI coding tool — Cursor, Claude Code, v0, Bolt, Lovable — describe what you want to build in natural language, and let the AI write the code. When something doesn't work, you describe the problem in natural language. You iterate through prompts rather than through code.

The "vibes" part is the posture toward the code itself: you're not reading it carefully, you're not deeply understanding every line, you're trusting the AI's output and evaluating the result rather than the implementation.

This is a real and significant shift from how software has been built for the past 70 years.

Why it actually works (in certain contexts)

Vibe coding works because modern language models are genuinely good at generating correct code for well-defined problems in common technology stacks. For a large category of software — CRUD applications, internal tools, dashboards, landing pages, API integrations, automation scripts — the code is mostly boilerplate with a thin layer of custom logic. AI models have seen millions of examples of this code in their training data and can generate it reliably.

The practical result: someone who could previously spend three days building a functional prototype can now spend three hours. Someone who had a clear idea but couldn't code at all can build a working version of their concept.

This is not nothing. The democratization of software creation is a genuinely significant development. A clinic manager who understands their workflow better than any developer can build the internal tool that fits their actual needs. A small business owner can automate their invoicing without hiring a contractor. A product manager can build and test a working prototype before a single engineering resource is committed.

These are real and valuable outcomes that vibe coding makes possible.

Why experienced developers are divided

The skepticism from engineers is not technophobia. It comes from specific, legitimate concerns about what happens when vibe-coded software grows beyond a certain size and complexity.

The comprehension problem. If you don't understand the code the AI wrote, you don't understand your system. When something breaks in production — and something always eventually breaks in production — debugging requires understanding what the code is actually doing. "The AI wrote it and I don't really know how it works" is an extremely expensive position to be in at 2am when your service is down.

The security problem. AI-generated code makes security mistakes. Not constantly, and not catastrophically — but with a frequency that matters for anything exposed to the internet. SQL injection vulnerabilities, improper input validation, insecure credential handling, missing authentication checks. A developer who understands the code catches these in review. A vibe coder who accepted the AI's output without reading it does not.

The accumulating technical debt problem. AI models optimize for "works on the described test case" rather than "is well-architected for the long term." Vibe-coded projects tend to accumulate inconsistencies, redundant code paths, and architectural choices that seemed locally reasonable but create compounding problems at scale. A codebase you understand can be refactored. A codebase you don't understand is a house of cards.

The "it works on my machine" problem. Vibe coding is great for demos and prototypes. It's much harder to maintain for production systems with real users, real data, evolving requirements, and the need for coordinated changes over time. The gap between "this works" and "this is maintainable and reliable" is enormous — and vibe coding doesn't help you cross it.

The honest middle ground

The developers who've integrated AI most effectively into their work are not vibe coding in Karpathy's full sense — they're not "forgetting that the code exists." They're using AI to accelerate their work while maintaining comprehension of what's being built.

The difference in practice:

Full vibe coding: Describe feature → accept AI output → check if it works → move on

AI-augmented engineering: Describe feature → review AI output, understand what it does and why → test edge cases → refactor where needed → move on

The second approach takes longer than the first. It also produces software that can be maintained, debugged, and extended — which is the entire point of software that's used by real people over time.

The tools themselves push toward full vibe coding because the feedback loop (describe → test → works → done) is fast and satisfying. Resisting that pull — choosing to understand the output even when the output "works" — is the discipline that separates AI-accelerated engineering from AI-generated technical debt.

Where vibe coding is actually the right approach

There's a meaningful category of software where full vibe coding makes complete sense:

Throwaway prototypes. If you're building something to test a hypothesis — to show a stakeholder, to validate user interest, to demonstrate feasibility — code quality is irrelevant. You'll throw it away or rebuild it properly if it works. Vibe code it aggressively.

Personal tools you'll only ever use yourself. A script that automates something repetitive in your own workflow. A personal dashboard that pulls together data you want to see. Stakes are low; you're the only user; a bit of fragility is fine.

Non-production internal tools with a single user or small team. A small business's internal inventory tracker, a team's private dashboard, a solo consultant's client notes system. Not customer-facing, low stakes, low complexity.

MVPs for validation, not deployment. Building the bare minimum to test market interest before investing in real engineering. The vibe-coded MVP is a market research tool, not a product.

The common thread: these are contexts where the software's longevity doesn't matter, the user base is tiny or zero, and the cost of failure is low. In these contexts, the speed advantages of vibe coding are real and the downsides are irrelevant.

What it means for software engineering as a profession

Karpathy's framing implies that software engineering, as traditionally understood, is being automated away. This is partly true and partly not.

The parts being automated: boilerplate code generation, simple bug fixes, routine refactoring, documentation, test scaffolding, glue code between systems. These tasks have always been the lowest-value parts of software engineering work, and they're being automated significantly.

The parts not being automated: system architecture decisions, understanding and managing the interactions between complex components, identifying non-obvious failure modes, security judgment, making trade-offs between competing constraints, translating genuinely ambiguous requirements into something buildable. These tasks require engineering expertise, and they become more important as the amount of AI-generated code in the world grows.

The engineer who can prompt an AI to generate code is not rare or valuable. The engineer who can evaluate AI-generated code critically, understand its implications, catch its mistakes, and maintain a system built substantially with AI assistance — that person is increasingly in demand.

The skill set is shifting, not disappearing.

A practical framework for using AI coding tools well

If you're building with AI coding tools today, here's the posture that produces the best outcomes:

For throwaway and personal projects: vibe freely. Use whatever tools generate working output fastest and don't overthink the code.

For production software:

  • Read and understand the significant changes before accepting them, even if the output "works"
  • Test edge cases, not just the happy path
  • Ask the AI to explain any section you don't understand before moving on
  • Do periodic "comprehension audits" — can you explain what each major component does and why it's structured the way it is?
  • Apply the same security review you'd apply to code from any source you don't fully trust

For prototypes heading toward production: plan for a rebuild. The vibe-coded version validated the idea. The production version gets built properly — using AI tools, but with engineering discipline applied.

The bottom line

Vibe coding is a real and valuable development in software creation. It has genuinely lowered the barrier to building, meaningfully accelerated experienced developers, and created software that wouldn't otherwise exist.

It is not a replacement for software engineering. It's a new set of tools with a specific set of tradeoffs — powerful for the right contexts, dangerous for the wrong ones. The developers who understand those tradeoffs will use AI to produce far more and better software than they could before. The developers who mistake "it works on my laptop" for "this is production-ready software" will create expensive problems for themselves and their users.

Karpathy was right that there's something new here. The skeptics are right that comprehension still matters. Both are correct, and neither camp acknowledges the other's point enough.


At AQM Hub, we use AI coding tools heavily in client work — but we read the code. If you've got a vibe-coded prototype you want to turn into something production-ready, let's talk.

Need help implementing this?

If this is a problem you're dealing with, I'm happy to talk through it. Book a free 30-minute call and we can figure out if I can help.