Feel The Vibe: Why AI-Dependent Coding Isn’t The Enemy (or is it?)



Image by Author (that’s not supposed to be me) | ChatGPT

 

Introduction

 
You’ve heard of it; it’s all the rage. It’s vibe coding!

Simply prompt a language model, get high-quality, working, professional-grade code in return. We’re at another crossroads, folks, and are experiencing yet another game-changer. This time that game-changer is vibe coding.

But mild sarcasm aside, is vibe coding all it’s cracked up to be? I would hope that, generally, the serious programmer, data scientist, AI engineer, or other related professional has learned to be very suspicious of these grandiose AI claims, and that they would be just as suspicious in this case. Is vibe coding another stop on the expressway to the end of programmers and traditional programming? Is it a tool to be used by anyone to create high quality software for all occasions? Or is it something else entirely?

In the interest of finding answers, let’s take a look at vibe coding — what it is, how it relates to other AI-assisted coding methods, and how likely it is that anyone can cobble together a prompt and get an app in return.

 

Defining Vibe Coding

 
Generally speaking, vibe coding is an AI-dependent programming technique in which a user prompts a large language model (LLM) fine-tuned for writing code, using a simple and brief description of the task the resulting code is meant to solve, after which the LLM generates the software. The term was coined by Andrej Karpathy in early 2025 and already taken on a life of its own since so recently entering the zeitgeist.

I’m going to take some liberties and work toward my own definition of vibe coding. Far be it from me to try and perfect Karpathy’s definition or bend it to my will, but I think there is some benefit to what I’m going to do, especially when trying to suss out if all AI-driven coding exercises are the same. So let’s look through a few other definitions as I refine mine along the way.

Here is Andrej Karpathy’s initial explanation of vibe coding as shared in an X post on February 2, 2025.

 

Andrej Karpathy's initial explanation of vibe coding
Andrej Karpathy’s initial explanation of vibe coding in an X post

 

This is the part the really stands out to me:

 

“I’m building a project or webapp, but it’s not really coding — I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.”
—Andrej Karpathy

 

There doesn’t seem to be any claim by Karpathy that he believes that vibe coding is actual coding (“it’s not really coding“), which I think is crucial to the definition. So let’s keep that point as we move forward.

Merriam-Webster is (already) defining vibe coding as follows:

 

Merriam-Webster's entry for vibe coding
Merriam-Webster’s entry for vibe coding

 

I like this:

 

[…] by just telling an AI program what you want, and letting it create the product for you […] often will have to accept that a certain number of bugs and glitches will be present.

 

It seems there is agreement between the above points and “letting it create it for you,” as well as the mention of having to accept bugs… which isn’t great.

OK. Now it’s time to consult the ultimate infallible authority on everything: Wikipedia. This is from the Wikipedia entry for vibe coding:

 

Wikipedia entry for vibe coding
From the Wikipedia entry for vibe coding

 

Importantly — or so it is claimed — vibe coding allows non-programmers and even non-technical folks to take a crack at solving their problems programmatically and “engineer” their own software.

Finally, let’s have a look at something that Simon Willison said in an interview he gave for an Ars Technica article on vibe coding:

 

“If an LLM wrote every line of your code, but you’ve reviewed, tested, and understood it all, that’s not vibe coding in my book — that’s using an LLM as a typing assistant.”
—Simon Willison

 

The article goes on to say that “Vibe coding, by contrast, involves accepting code without fully understanding how it works.”

I like that.

We seem to be getting somewhere:

  • not really coding
  • opens programming up to non-programmers
  • bugs and errors and such
  • no concrete understanding of how generated code works

Alright, I think I’m ready to form my own definition:

 

“Vibe coding involves a user prompting a language model to generate code without the user requiring a firm understanding of either programming or the resulting code that the language model generates. This allows for the practice of coding to be opened up to non-programmers, though vibe coding isn’t really coding at all; it is, instead, a rough approximation.”
—Me

 

What About AI-Assisted Development (Beyond Vibe Coding)?

 
I there are 2 important aspects of any AI-assisted coding exercise that must be considered.

The first aspect is: what is the workflow into which this prompt-driven coding exercise fits? Is the LLM’s code output rigorously inspected, tested, edited, updated, and/or refactored prior to being considered “complete?” Or is any functioning code at all taken as gospel and integrated into the codebase if it appears to work on first run through (vibe testing, perhaps)?

The second aspect is: What does the prompt or series of prompts look like during this AI-assisted coding exercise? There is a fairly obvious difference between:

“Write a program that does X”

and

“Write a program that:
– does this
– that
– and the other

Ensure the following:
– thing 1
– second thing
– thing, the third

Consider:
– consideration 1
– consideration 2
– consideration 3″

Of course, there are other ways of leveraging language models for coding.

 

The relationship between AI-assisted development and vibe coding
The relationship between AI-assisted development and vibe coding

 

AI-assisted development, in a more general sense, would be any coding exercise that uses an AI tool in any way. This would encompass vibe coding, certainly, but also any programming task that leans on a language model in a far less reliant manner.

Related to this point is the idea of what aspect(s) and how much of the development process is handled by a single LLM interaction, as well as the overall approach to the exercise. Experienced developers who are embracing AI-assisted coding are not — I repeat NOT — developing code by the following:

 

Write a Python program that blah blah blah…

 

An example of a much more involved development process, one which includes meaningful interactions with an AI coding assistant, might be:

  1. First, manually create detailed specs for your project
  2. Next, either create project documentation manually or use a language model to help develop this documentation from your project specs
  3. Once complete, prompt a language model to generate a scaffolding framework for your project, by providing it with the documentation
  4. A reasonable next step would be to build upon the framework to by having the LLM produce boilerplate code
  5. Now might be a good time to have the language model generate tests
  6. Perhaps some diagrams of the system (Mermaid, etc.) could be generated by the language model, based on its growing understanding of the project
  7. Time to have the model generate some pseudocode?
  8. Using all of the artifacts created thus far, direct the language model to generate individual blocks of code or functions

An approach like this allows the (human) programmer — who has a far better idea of the overall product they are trying to create — to focus on the systems design, the testing, etc., and the iterative nature of the interactions with the language model allows for a project to grow much more organically, as a partnership between the human and LLM, which will almost certainly ensure better results. Also introducing or modifying “features” as opposed to “systems” per prompt means that emergent errors can be spotted (and rectified) as they arise.

In my experience, generally speaking, coding with the help of an LLM — regardless of the amount of help — works best for generating code for narrow, well-defined functionality chunks of code, with an incremental and iterative approach.

 

Additional Insights

 
So, this is my view of vibe coding vs. AI-assistant development. No conclusions yet, just some insights gleaned by also taking into account the insights of others.

But what do others think of vibe coding? Practitioners. People in the field. The learned men and women of our AI and data science world. I’ve asked a few people I know to contribute their thoughts to get a better picture.

Lavanya Gupta is a Sr. Applied AI/ML Scientist at JP Morgan Chase and an MS recipient from Carnegie Mellon’s Language Technologies Institute. This is what Lavanya had to say when prompted for her thoughts on vibe coding (pun fully intended):

 

Vibe coding is essentially a more trendy and colloquial term for “AI-assisted coding” which has in fact been in existence since the popular days of Github Copilot, a more elusive and technical tool. Admittedly, vibe coding has made software development accessible to the masses by enabling conversion of any creative idea into an app or website in a few minutes; however, its utility for generating real-world business impact remains under question due to its limitation in generating reliable, robust and secure softwares.

Sophisticated software development processes require more than just code generation — implementing security protocols, object-oriented principles, database management, caching, deployment pipelines, scalability, latency-throughput tradeoff etc.

Hence, most people will likely benefit from vibe coding as it serves as a great head start for prototyping, but the other bolder claims as a replacement for software developers seem too good to be true in the current state of AI.

 

Next let’s check in with Ritesh Modi for his insights. Ritesh is a Principal AI Engineer at Microsoft and the author of 10 best-selling technology books. Ritesh says:

 

I think vibe-coding has its place, but we need to be careful with it. It’s helpful when you know exactly what you want and can guide the process step by step. But let’s be real — it often generates unfamiliar code that developers haven’t seen before, which can be a maintenance nightmare if pushed straight to production. The technical debt is basically impossible to measure upfront. Testing becomes absolutely critical because you need to verify every bit of that generated code works as intended before deployment.

It works best as a tool or helper within the engineering process rather than something to blindly deploy with high confidence. It’s like having an eager junior developer who writes code really fast but doesn’t understand your codebase’s history or architecture. Evaluating the code generated is still a challenge today.

 

Finally, Karun Thankachan has also shared his insights. Karun is a Sr. Data Scientist at Walmart, and an Amazon and CMU alumn. He has this to say about vibe coding:

 

Pieter Levels’ Flight Simulator, Kevin Roose’s Lunchbox Buddy, and Jacob Anderson’s Content Genie — what do they have in common? They’re all successful apps built by non-programmers using a new approach known as “vibe coding.” It’s clear that vibe coding can handle a growing subset of programming tasks. As AI agents improve in interpreting legacy code, integrating with existing systems, and debugging complex architectures, the man-hours needed to develop production-ready solutions will decrease. As such, I believe programming teams will become smaller in the future.

However, will it eliminate all programming roles? In my opinion — no. A seasoned developer will still be needed to supervise solutions developed using AI, optimize them as needed, and debug when required. In addition, there will always be a vital role for those with deep expertise in data structures, algorithms, and system architecture. These individuals will be essential in shaping the next era of software development.

 

So there you now have it: some definitions of vibe coding from some trustworthy sources such as the man who coined the term, the Merriam-Webster dictionary, and the ever-knowledgable Wikipedia; you have a cobbled together encompassing definition from me; you have my insights into the relationship between vibe coding and more generally AI-assisted development; and you have additional insights from practitioners in the field.

What more could you want? Perhaps some predictions?

 

Vibe Coding Opportunities (or What Happens When It All Falls Apart)

 
I think a lot of people who are complaining of “anyone” being able to create code now are looking at the situation in the wrong way. Sure, anyone can code. AI can write my code. Why hire developers when I can prompt an LLM? The truth, though, is that vibe coding is an ally of the true programmer.

Here’s more truth: non-programmer vibe coders are not programmers. It’s not judgment, it just is.

 

Celebrating the successes of vibe coding via Andriy Burkov's LinkedIn post
Celebrating the successes of vibe coding via Andriy Burkov’s LinkedIn post

 

I would go so far as to say that the vast majority of non-programmer vibe coders will never be successful at writing code almost exclusively with AI, without much understanding of what is being produced. If, however, vibe coding is a gateway for more people to understand programming because they became interested via vibe coding, great. And there may very well be certain instances where non-programmer vibe coders are able to produce some useful code that can complete narrow tasks in limited scenarios. And that’s also great. I think removing the both the gates and gatekeepers for everything is fantastic.

But create a new, novel complex system via prompt — without the need for any code finessing or refactoring after-the-fact — the type of system you go to a professional for? Nah, not gonna happen. That’s why we still need programmers.

While I don’t believe that anyone who knows better and is saying that 90% of all code will be written by AI actually means this — at least not for anytime in the near future — given that so many have personal stake in others buying in to that idea, just imagine the disaster that will need to be undone by companies that DO buy into this idea and scrap entire teams of devs to instead allow AI to write their code and be overseen by a single individual or a small group. Imagine a genuine, localized Y2K unfolding each and every day, with system implosions happening regularly and noticeably. Think of the opportunity that creates for programmers, including programmers who are able to responsibly and appropriately leverage AI to help fix the assorted messes.

 

How to be a vibe coder | Image by Author... with *ahem* a little help from AI (ChatGPT specifically)
How to be a vibe coder | Image by Author… with *ahem* a little help from ChatGPT

 

Wrapping Up

 
I think it’s important to point out that some of this article has been at least partially in jest… I don’t have any argument with vibe coding at all. Remember: f*ck gatekeeping. However, this then means that stakeholders and those with skin in the game, and those who genuinely have expertise in an area, must then work extra hard to discriminate between quality and… not quality.

AI-assisted programming will only become more of a central part of writing code. Just like AI-assisted everything will. As a subset, vibe coding has its place, but won’t be the catalyst for all the programmers getting pink slips. Remember when all of the radiologists were supposed to be out of work?

 

Image credit: the memes belong to all of us
Image credit: the memes belong to all of us

 

Security is an especially important concern when rolling out a vibe-coded app when you have no idea what the code is doing. We have already seen the examples of these messes spreading on social media. These continued security issues surrounding vibe coding alone will keep programmers in business for years to come. And there’s just no getting around that.

Hang on… what if somebody just vibe codes a framework for identifying and fixing a vibe coded app’s security flaws? 😳
 
 

Matthew Mayo (@mattmayo13) holds a master’s degree in computer science and a graduate diploma in data mining. As managing editor of KDnuggets & Statology, and contributing editor at Machine Learning Mastery, Matthew aims to make complex data science concepts accessible. His professional interests include natural language processing, language models, machine learning algorithms, and exploring emerging AI. He is driven by a mission to democratize knowledge in the data science community. Matthew has been coding since he was 6 years old.



Recent Articles

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here