PLAYBOOKOPS AUDIOListen to this articleDownload audio

Vibe Code or Not to Vibe Code

There is a dangerous moment in almost every vibe-coded project, and surprisingly, it isn't when the code doesn't work.

It's when it does.

You open ChatGPT, Claude, Replit, Cursor, Lovable, Bolt, or whatever your AI development tool of choice happens to be. You describe what you want: Build me a dashboard with authentication, customer accounts, billing, analytics, and a clean user interface.

A few minutes later, something appears on the screen.

It works.

So you add another feature. Then another. You connect a database. You add authentication. You build an admin panel. Before long, you are looking at something that feels remarkably close to real software.

For entrepreneurs, that moment is incredibly empowering. An idea that might have required a developer, a specification document, several meetings, and thousands of dollars a few years ago can now become a working prototype in an afternoon.

I think that's extraordinary.

But then something breaks.

You ask the AI to fix it. It does, but another feature stops working. You describe that problem, the AI rewrites another section, and now the database behaves strangely. You paste the new error into the chat. Another fix arrives. Another issue appears.

Three hours later, you've written hundreds or thousands of lines of code without actually writing much of it yourself.

At that point, you're no longer building software.

You're negotiating with software.

And that distinction matters.

What Exactly Is Vibe Coding?

The term vibe coding was popularized by Andrej Karpathy in early 2025. His description was intentionally extreme: instead of carefully understanding every line of code, you tell an AI what you want, accept its output, give it errors when something breaks, and continue prompting until the application does what you intended.

In Karpathy's description, you can eventually "forget that the code even exists."

That's fundamentally different from simply using AI as a development assistant.

Professional developers have been using AI tools aggressively for several years now. They use AI to generate boilerplate, write tests, debug code, explore libraries, refactor functions, document APIs, and accelerate dozens of other development tasks.

That is AI-assisted engineering.

Vibe coding is different because the emphasis moves away from understanding the underlying system and toward getting the desired outcome as quickly as possible.

And here's an important detail that sometimes gets left out of the conversation: Karpathy originally framed vibe coding around relatively low-risk projects—things you might experiment with or build over a weekend.

That qualifier matters.

Because I am actually a huge fan of vibe coding.

I just don't think everything should be vibe coded.

Vibe Coding May Be One of the Greatest Tools Entrepreneurs Have Ever Been Given

For founders and entrepreneurs, AI coding has dramatically collapsed the distance between an idea and something tangible.

Before these tools existed, a nontechnical founder with a software idea often had three options: learn how to code, find a technical co-founder, or pay someone to build it.

All three required significant time, money, or relationships.

Today, a founder can test the idea directly.

Want to prototype a customer portal? Build it.

Want to create an internal dashboard? Build it.

Want to see whether an automation would actually improve your workflow? Build it.

Want to mock up an application well enough that your developer can understand what you're describing? Build it.

This is where vibe coding shines.

The goal of a prototype isn't perfect architecture. The goal is learning.

Does the idea make sense? Will users understand the workflow? Is the interface useful? Would customers pay for this? Is this even worth developing?

If vibe coding allows you to answer those questions in two days instead of two months, that is an enormous advantage.

The problem begins when the prototype quietly becomes the product.

The Most Important Distinction: Prototype vs. Product

This is where I think founders need to become much more disciplined.

A prototype is trying to answer a question.

A product is making a promise.

Once customers begin depending on your software, the standard changes.

Now you're responsible for authentication. Security. Permissions. Backups. Database integrity. Error handling. Scalability. API dependencies. Monitoring. Version control. Deployment. Testing. Performance. Recovery when something fails.

None of those things are particularly exciting compared with watching an AI generate a new feature in thirty seconds.

But they are what make software trustworthy.

This is why the debate should not be framed as:

AI vs. developers.

That debate is already becoming obsolete. Developers themselves are among the largest users of AI development tools.

The better distinction is:

AI-assisted engineering vs. AI-directed improvisation.

In both cases, AI may generate huge amounts of code.

The difference is whether somebody understands and owns the system underneath it.

The "Almost Right" Problem

One of the biggest hidden costs of AI-generated software is that AI is exceptionally good at producing something that looks correct.

That is different from producing something that is actually correct.

Stack Overflow's 2025 developer research surfaced an interesting frustration: developers frequently report receiving AI-generated solutions that are almost right.

Anyone who has spent time vibe coding knows exactly what that feels like.

The interface loads correctly, except for one component.

The database query works, except under one condition.

Authentication works, except when users reset their password.

The payment integration works in testing, but not in production.

The AI gets you 90% of the way there remarkably quickly. But that remaining 10% can sometimes consume more time than the first 90%.

That creates a strange productivity illusion.

You see enormous amounts of code being generated, so you feel like you're moving incredibly fast.

But code generation is not the same thing as product completion.

Software development also includes understanding, debugging, testing, securing, deploying, maintaining, and eventually changing that code.

And if you don't understand the architecture underneath the application, every future change becomes another negotiation with the AI.

False Velocity

I think one of the best phrases for this phenomenon is false velocity.

You are producing things quickly, so it feels like you are progressing quickly.

But those aren't always the same thing.

There was an interesting study from METR involving experienced open-source developers working inside codebases they already understood. The developers expected AI tools to make them faster and, after using them, still felt that AI had improved their speed.

But when researchers measured actual completion time in that particular study, the developers took longer.

That doesn't mean AI development tools universally slow developers down. Plenty of other research and real-world experience suggests they can create tremendous productivity gains.

The interesting point is the perception gap.

AI feels fast.

Every prompt produces something.

Every generation creates visible movement.

Every solved error creates another little hit of progress.

That's exactly how a founder can spend six hours inside an AI coding loop and still feel like they're "almost there."

Sometimes they are.

Sometimes they're six hours deeper into an architectural problem they don't yet realize they have.

A good engineer might look at that same problem and say, "We're fixing the wrong thing. The architecture underneath this is the problem."

That's the expertise vibe coding cannot automatically replace.

"It Works" Is Not the Same as "It's Secure"

Security is probably where the prototype/product distinction becomes most important.

AI-generated code has become extremely good at producing syntactically valid software. The code compiles. The application runs. The interface works.

But working code isn't necessarily secure code.

Security research from Veracode has found significant vulnerabilities in AI-generated code samples. That shouldn't necessarily surprise anyone. AI models optimize heavily around producing the requested outcome. Unless security constraints, architecture standards, testing, and review are deliberately incorporated into the development process, the fact that an application works tells you very little about whether it is safe.

Again, for a weekend prototype, that risk may be acceptable.

For a system containing customer data, passwords, financial information, payment processing, healthcare data, employee information, proprietary company data, or private API credentials, it is a very different conversation.

At some point, "It seems to work" can no longer be your definition of done.

AI Amplifies the Engineering System Around It

One of the ideas I find most useful comes from Google's DORA research into software delivery.

The simplest way to think about their conclusion is this:

AI is an amplifier.

Put AI inside a disciplined engineering environment—clear architecture, version control, automated testing, code review, observability, deployment controls, and experienced developers—and you can accelerate an already strong system.

Put AI inside an environment with weak architecture, no tests, unclear requirements, and nobody really understanding what is happening underneath the surface, and you may simply produce technical debt faster.

That's a principle I've started thinking about far beyond software development.

AI doesn't magically create a good system.

It accelerates the system surrounding it.

Which means the question founders should be asking is not:

"Should I vibe code?"

The better question is:

"What am I building, and what is the cost if this goes wrong?"

Where I Think Vibe Coding Makes Tremendous Sense

My rule would be pretty straightforward:

Vibe code when the cost of being wrong is low and the value of learning quickly is high.

Use it to build prototypes.

Use it to test product concepts.

Use it for internal tools.

Use it to visualize workflows.

Use it to experiment with user interfaces.

Use it to validate something before giving it to your development team.

Use it to build a proof of concept that helps customers, investors, or developers understand what you're describing.

Move ridiculously fast.

That's the advantage.

But watch carefully for the moment the experiment starts becoming infrastructure.

When the application begins handling sensitive information, customer accounts, payments, complex integrations, multiple user roles, critical company workflows, or anything your business will depend on every day, the rules need to change.

You don't necessarily stop using AI.

You start adding engineering discipline.

Architecture.

Automated testing.

Security review.

Version control.

Code review.

Monitoring.

Backups.

Deployment controls.

Documentation.

The AI can continue writing enormous amounts of code.

But somebody needs to understand the system.

The Friday Night Test

Here's one question I think every founder vibe coding an application should eventually ask.

Imagine it's 11:00 PM on a Friday.

The application goes down.

Customers are using it.

Money is moving through it.

Your team depends on it.

Something is broken.

Now ask yourself:

Do I understand this system well enough to know where to start looking?

If your answer is:

"I'll paste the error into Claude and see what happens..."

you may have crossed the line.

That's not necessarily a failure.

In fact, it may mean the exact opposite.

Your prototype succeeded.

You discovered something valuable enough that people are actually depending on it.

Now it's time to engineer it.

So...To Vibe Code or Not to Vibe Code?

My answer is absolutely yes.

Vibe code.

Experiment.

Build things.

Test ideas.

Create prototypes that would have been financially impossible five years ago.

I think AI coding represents one of the greatest expansions of entrepreneurial capability we've seen in decades.

But understand what the tool is good at.

Vibe coding is exceptional at collapsing the distance between idea and prototype.

Engineering is what closes the distance between prototype and dependable product.

Those are different jobs.

The future of software development almost certainly isn't humans manually writing every line of code. AI will continue generating more of the software we use.

But I also don't believe the future is humans blindly prompting machines until something appears to work.

The winning model sits somewhere between those extremes.

Let AI generate at machine speed.

Keep humans responsible for architecture, judgment, security, and outcomes.

Or perhaps the entire argument can be summarized in one sentence:

Vibe code the prototype. Engineer the product.

Knowing when you've crossed that line may become one of the most important technical skills a founder can develop in the AI era.

Research referenced: Andrej Karpathy 's original February 2025 description of vibe coding; Stack Overflow 2025 Developer Survey; Google DORA State of AI-Assisted Software Development 2025; METR's 2025 randomized study of experienced open-source developers; Veracode GenAI Code Security research, 2025–2026.

Turn what you know into how your business runs.

Stop explaining the same process twice.

Build Your First Playbook →