The term “vibe coding” has been around for only a week or so, but it already has a Wikipedia page. Credit for its coinage is assigned there to one of OpenAI’s co-founders, Andrej Karpathy, who defined it in an X post:
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 because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like "decrease the padding on the sidebar by half" because I'm too lazy to find it. I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I'd have to really read through it for a while. Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. 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.
This seems like a routine piece of hype for the capabilities of LLMs, with the usual overtones of proud and eager submissiveness, boasting about being “too lazy” as though it were the best luxury imaginable. I am so excited to evacuate myself from the work I do! So amusing! I can’t wait to repudiate self-consciousness next! Just see stuff say stuff whatever I don’t know why!
But the term appears to have quickly caught on, perhaps because of some coordinated inauthentic behavior on the part of journalists like Kevin Roose, who enthuses about the idea in this New York Times piece. “You don’t have to know how to code to vibecode,” he writes. “Just having an idea, and a little patience, is usually enough.”
Such claims for “vibe coding” seem to place it in the tradition of hyping “AI” by dismissing craft, as though the process of working in a particular medium and struggling against one’s limitations within in were irrelevant to the end product. Instead, finished work can supposedly be unfolded by rote from whatever lightning-bolt idea has struck someone. This all-theory, no-practice attitude posits a sort of rain-dance approach to creation in which one tries different “random changes” without worrying about “comprehension.”
Perhaps one could make the case that the prompting becomes the medium in the sort of process Karpathy describes, and that the series of iterations turn the natural language of the prompts into a refined set of tools to be handled with artistry. But the whole tenor of Karpathy’s post seems to work against that idea, encouraging us to understanding prompting as the “dumbest thing,” as a way to forget that the underlying medium even exists. It points to a fantasy of creation without a medium — content without the hassle of form.
In this 404Media article about a vibe-coded game, Emanuel Maiberg defines vibe coding as “being less methodical and detail oriented, telling the AI tool what you want, and getting it to work without worrying about the code base being messy.” We are supposed to be excited that AI will liberate the world from the tyranny of expertise, and we can all be equal in our ignorance. But why is “vibe” part of this term? What does Karpathy mean when he says “give in to the vibes”? Is it just because that word still retains a residue of virality? What is the point of describing deskilled work as a “vibe”?
When I first saw “vibe coding,” I assumed it was pejorative, meant to mark it off from “real coding,” where the coder understands how the code is put together. I was thinking of how vibe was being used back when it was described certain TikToks, as evoking a feeling that can’t be pinned down in words, or a claim that couldn’t be substantiated with data. Then it was a general word for a mood or a feeling; it seemed to mean the opposite of “having an idea,” insofar as having ideas also means being able to slot them into causal relationships. Vibe indicated an inability to analyze a certain situation that is accepted instead as a gestalt, a mystic whole.
“Vibe coding” retains the implication that you can’t explain or even understand how something works. But under the pressure of AI hype and its championing of incomprehension, there seems to be not a “vibe shift” but a “vibe” shift occurring, as the term drifts toward a different connotation. Where vibe once conveyed something that can’t be analyzed, now it conveys a purposeful indifference to analysis or explanation, as well as to the components that make up something. It is as though the preponderance of vibe talk made explanations irrelevant in all cases, and now we speak of vibes to forbid comprehension, which would be unfun.
“Giving in to the vibe,” then, means deliberately refusing to understand, as though that would be to defy AI’s supremacy. One should let AI handle the data and the details so that you can just have gratified impulses, which are ultimately just a matter of data being manipulated to your liking — prompting, waiting, tweaking, and trying again until you are satisfied or bored with what you’re doing. Being involved with the thinking process, the details, would be to go against the vibe. It’s a superfluous burden that sets you against the spirit of the times.
“Vibe” in this usage tries to lend exuberance and cachet to what amounts to being passive and negligent. It borrows from the earlier connotations of relaxing into conditions and not disrupting them by trying to pick them apart, but now applies it to the alienation that “AI” must produce if it is going to be profitable for its makers. “Vibe” evokes the the dream of a life that contains no processes, no skills, no research, no effort — just feelings that machines interpret and turn into substance. If “vibe” once could refer to a range of nameless feelings, now it refers to thoughtlessness, in every sense of the word.
Excellent- a really thoughtful piece that tears through the nonsense. Thank you for writing it.
Thank you Rob. The mistake made by those who relegate coding (and design) to grubby detail is failing to recognise that the ideas behind the design of software are more fundamental than its features. The features of software are a snapshot of the capabilities of a robust design, and in the case of a good design can change with little effort. Coding directly to features may appear to cost less in the short term but will cost more in many ways in the long term.