Two publishers and three authors fail to understand what "vibe coding" means

2025-05-0114:3680107simonwillison.net

Vibe coding does not mean “using AI tools to help write code”. It means “generating code with AI without caring about the code that is produced”. See Not all AI-assisted …

1st May 2025

Vibe coding does not mean “using AI tools to help write code”. It means “generating code with AI without caring about the code that is produced”. See Not all AI-assisted programming is vibe coding for my previous writing on this subject. This is a hill I am willing to die on. I fear it will be the death of me.

I just learned about not one but two forthcoming books that use vibe coding in the title and abuse that very clear definition!

Vibe Coding by Gene Kim and Steve Yegge (published by IT Revolution) carries the subtitle “Building Production-Grade Software With GenAI, Chat, Agents, and Beyond”—exactly what vibe coding is not.

Vibe Coding: The Future of Programming by Addie Osmani (published by O’Reilly Media) likewise talks about how professional engineers can integrate AI-assisted coding tools into their workflow.

I fear it may be too late for these authors and publishers to fix their embarrassing mistakes: they’ve already designed the cover art!

Side-by-side comparison of two programming books: Left - "VIBE CODING: BUILDING PRODUCTION-GRADE SOFTWARE WITH GENAI, CHAT, AGENTS, AND BEYOND" by GENE KIM & STEVE YEGGE with a rainbow digital background; Right - O'REILLY "Vibe Coding: The Future of Programming - Leverage Your Experience in the Age of AI" by Addy Osmani with "Early Release RAW & UNEDITED" badge and bird illustrations.

I wonder if this a new record for the time from a term being coined to the first published books that use that term entirely incorrectly.

Vibe coding was only coined by Andrej Karpathy on February 6th, 84 days ago. I will once again quote Andrej’s tweet, with my own highlights for emphasis:

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.

Andrej could not have stated this more clearly: vibe coding is when you forget that the code even exists, as a fun way to build throwaway projects. It’s not the same thing as using LLM tools as part of your process for responsibly building production code.

I know it’s harder now that tweets are longer than 480 characters, but it’s vitally important you read to the end of the tweet before publishing a book about something!

Now what do we call books on about real vibe coding?

This is the aspect of this whole thing that most disappoints me.

I think there is a real need for a book on actual vibe coding: helping people who are not software developers—and who don’t want to become developers—learn how to use vibe coding techniques safely, effectively and responsibly to solve their problems.

This is a rich, deep topic! Most of the population of the world are never going to learn to code, but thanks to vibe coding tools those people now have a path to building custom software.

Everyone deserves the right to automate tedious things in their lives with a computer. They shouldn’t have to learn programming in order to do that. That is who vibe coding is for. It’s not for people who are software engineers already!

There are so many questions to be answered here. What kind of projects can be built in this way? How can you avoid the traps around security, privacy, reliability and a risk of over-spending? How can you navigate the jagged frontier of things that can be achieved in this way versus things that are completely impossible?

A book for people like that could be a genuine bestseller! But because three authors and the staff of two publishers didn’t read to the end of the tweet we now need to find a new buzzy term for that, despite having the perfect term for it already.

I’m fully aware that I’ve lost at this point—Semantic Diffusion is an unstoppable force. What next? A book about prompt injection that’s actually about jailbreaking?

I’d like the publishers and authors responsible to at least understand how much potential value—in terms of both helping out more people and making more money—they have left on the table because they didn’t read all the way to the end of the tweet.


Read the original article

Comments

  • By billy99k 2025-05-0114:548 reply

    I hate to break it to you, but the definition has already changed. It now means to build software exclusively using AI/LLM.

    It's similar to the whole hacker/cracker debate. Words become defined by the one that has the most influence over the community and sometimes evolve on their own through places like social media.

    • By simonw 2025-05-0115:422 reply

      Given that this conversation is happening on the website called "Hacker News" I was hoping somebody would bring up the hacker/cracker thing!

      • By tptacek 2025-05-021:24

        I give myself credit for ending this argument, here and everywhere else, for all time, for us and our children and our children's children.

        https://news.ycombinator.com/item?id=1865063

      • By dang 2025-05-0119:28

        It used to be a painfully repetitive flamewar topic but now it feels quaint

    • By polotics 2025-05-0119:27

      Alright so now I'm good, I will just refer to some of the code I've seen recently as having been produced with "Slopcoding". Totally works kthxbye

    • By jimbokun 2025-05-0121:04

      > I hate to break it to you, but the definition has already changed.

      The article acknowledges this.

    • By smokel 2025-05-0115:024 reply

      Indeed, this is not how language evolves. You can't dictate the meaning of words.

      Another unfortunate example is the increasingly negative connotation assigned to the word "algorithm".

      • By dylan604 2025-05-0115:18

        at this point, those that use algorithm deserve the negative connotation. just like those that use synergy deserved to be mocked. when words are used just for the sake of using the word in word salad text, they quickly lose meaningful intent as the listeners hear them as shibboleths that the speaker is talking out of their arse.

        bet

      • By drfuchs 2025-05-0115:381 reply

        Similarly, “hacker” used to be positive, until the public at large got ahold of it.

        • By cruffle_duffle 2025-05-0116:16

          They did. But that was back in the 2000s, when nobody really understood the nuance. Today, calling someone a “hacker” to mean “computer criminal” almost feels like a boomer move. We’ve got way better language now: white hat, black hat, script kiddie, scammer (and all its lovely subgenres—pig butchering, refund scammers), phisher, etc. Not to mention whatever we’re calling the folks running dark net markets these days.

          And while the general public might not know the fine distinctions between these, I think society does get that there’s a whole spectrum of actors now. That wasn’t true in 2000—the landscape of online crime (and white hat work) hadn’t evolved yet.

          Honestly, I’m just glad the debate’s over. “Cracker” always sounded goofy, and RMS pushing it felt like peak pedantry… par for course.

          That said, this whole “vibe coding” thing feels like we’re at the beginning of a similar arc. It’s a broad, fuzzy label right now, and the LLM landscape hasn’t had time to split and specialize yet. Eventually I predict we’ll get more precise terms for all the ways people build software with LLM’s. Not just describing the process but the people behind the scenes too.

          I mean, perhaps the term “script kiddie” will get a second life?

    • By nathan_douglas 2025-05-0115:041 reply

      Isn't that what it originally meant?

      • By Timber-6539 2025-05-0115:55

        No. Just read the original tweet from Karpathy.

    • By alganet 2025-05-025:31

      Self-defacing hack-o-tron is self aware!

      Ideas, ideas are much sturdier.

      If you change the meaning of something too radically, it has a tendency to snap back.

    • By 9rx 2025-05-0115:025 reply

      Words mean whatever the speaker (or author, in this case) defines them as.

      • By gensym 2025-05-0115:282 reply

        Quiddity lamp verdant, sempiternal. Dog pulchritudinous chair velleity? Mountain? Scrimshanker butter, petrichor.

      • By esperent 2025-05-0115:141 reply

        Words are defined by consensus of the community using them. That's the primary source of semantic meaning.

        Next one down is dictionary definition (or claim to authority, for example a tweet where the term was first used). But community meaning takes precedence.

        Authors are free to use a nonstandard meaning but should provide readers with their definition if they want to be understood.

        • By 9rx 2025-05-0115:591 reply

          > Words are defined by consensus of the community using them.

          No. That would make it impossible for someone new to a community to communicate with a community, all while at the same time a community isn't going to accept someone new who isn't communicating. Yet clearly people do join communities.

          What happens in reality is that everyone accepts that the speaker's definition reigns supreme, and if there is suspicion – absent of a definition – that there is a discrepancy between the speaker's definition and own's own definition, the speaker will be asked to clarify.

          A speaker may eventually adopt a community's definition, but that doesn't always happen either. Look at the Rust users here. They hang desperately onto words like enum that do not match the community definition. But it doesn't really matter, does it? We remember that when they say enums they really mean sum types and move on with life.

          • By esperent 2025-05-020:06

            > Yet clearly people do join communities.

            "Communities" here also have a hierarchy:

            1. All speakers of a language 2. Speakers in a region (dialect) 3. Subgroups like teenagers, engineers, gamers, redditors 4. Sub-sub groups like teenagers from a specific school, engineers of a specific discipline, gamers of a certain game

            x. Personal dialect (idiolect), which is a sub group that exists separately to all of these and is most closely related to family and the friend group you had as a child and teenager.

            We are all members of many different groups which intermesh, and we seemlessly switch meaning and pronunciation as we do that (code switching).

            When joining a community, people start at the top (learn French) then move through subgroups. Dictionaries and textbooks are designed to match as closely as possible to the top level community's consensus of word meaning, which, being large, is also the most static. But any language learner will know that textbooks can only get you so far in learning how language is actually spoken day to day. You have to join the community to learn that.

            The same applies as you go down to dialects and other sub groups. You can learn a bit before you join, but becoming a part of the community, linguistically, can only happen after joining.

      • By afiori 2025-05-020:411 reply

        This is the same as saying that words have no meaning! Under this mental framework why would it be wrong to say that every living human can speak fluent french?

        How would you even know which language anyone is speaking?

        Counterproposal: words are a tool for communication and meaning is something we gather from the communication. In this words are no different than hand gestures, facial expressions, and body language.

        The parties to a communication can only communicate effectively if they agree enough on the meaning of words/gestures/expressions/actions (which is why we cannot speak a language we do not know)

        • By 9rx 2025-05-022:101 reply

          > which is why we cannot speak a language we do not know

          You can, however, speak a language you do know even when the listener doesn't know said language. Thus proving that the words spoken are defined by the speaker. It must be that way, fundamentally – as you suggest, you can only speak the language you know. If that tells that words have no meaning, sure. That assertion means nothing anyway.

          • By afiori 2025-05-027:471 reply

            My main issue with either "the speaker defines the meaning of words" and "the listener defines the meaning of words" is the resulting definition is useless for all practical and theoretical concerns. It is a meaningless meaning of the word meaning.

            What they are trying to say is

            "the speaker defines the meaning of words" -> everybody understand things differently and there is no external absolute authority of meaning

            and

            "the listener defines the meaning of words" -> people are going to understand their interpretation of what you say, not what you mean

            Both are useful and important statement people can learn from while "X defines the meaning of words" is meaningless.

            • By 9rx 2025-05-0211:39

              The listener is only a consumer. It cannot define the words. It is not responsible for their use. It interprets, and to be sure misinterprets, the words, but that, while similar, is subtly different.

              Of course, at this point we're ultimately getting stuck in that nerd thing I spoke of in another comment: "I know the tech crowd in particular loves to make up their own pet definitions for words and then double down on refusing to acknowledge that any other definition is possible, thereby continually talking past each other because there is no shared lexicon to hilarious effect, but that's not the norm, thankfully."

              So, while hilarious, I will break the cycle and ask you to clarify what you mean by "define" so that I can shift to using your definition. I'd have used it from the start but I haven't quite figured out how to read your mind yet, so I as the speaker, unfortunately, was beholden to defining it as I understand it.

      • By xnx 2025-05-0115:202 reply

        Isn't it the converse(?)? Words mean whatever the audience understands them as.

        • By 9rx 2025-05-0115:242 reply

          No. A speaker can only speak with words as he understands them. It is impossible to know what other people are thinking.

          A good speaker will define the words as he speaks (still relying on some baseline shared understanding of the most common words, of course; there is only so much time in the day...) so there is no room for confusion, but in absence of that it is expected that the listener will question any words that show an apparent disconnect in meaning, allowing the speaker to clear up what was meant, to ensure both parties can land on the same page.

          • By sampullman 2025-05-0115:331 reply

            In theory, but in practice the audience understanding is important, and communication doesn't always end up with both sides on the same page.

            Even more so when it's an author/reader relationship. The reader is free to interpret the book/article/etc. how they want, and if enough agree, it becomes the consensus.

            • By 9rx 2025-05-0115:351 reply

              > but in practice the audience understanding is important

              Where audience understanding is important than you will definitely go out of your way to ensure that definitions are made abundantly clear and that the audience agrees that they understand.

              But, in actual practice, most of the time the audience understanding really doesn't matter. Most people speak for the sake of themselves and themselves alone. If the audience doesn't get it, that's their problem. Like here, it means nothing to me if you can't understand what I'm writing.

              • By afiori 2025-05-020:461 reply

                In that case the author is their own audience

                • By 9rx 2025-05-023:07

                  That is always the case. It may turn out that others opt to also become the audience after something is written, but that can only be determined in hindsight. Even when someone says "Oh yeah, I'll totally read what you have to write if you write it for me. Promise!", there is no guarantee they will actually follow through. More often than not they don't.

                  While the work is being written, the author is the only known audience. In practice, if an author cannot find enough motivation to write something for himself, it simply won't get written. Anyone else who happens to become the audience is gravy, but the work cannot be written for them as they only become known as an audience later.

          • By conorjh 2025-05-0115:361 reply

            how did the speaker understand the words if he couldnt guess what the other person was thinking or feeling?

            • By 9rx 2025-05-0115:42

              Probably from listening to another speaker who defined it, adopting their definition. Possibly from making it up on the spot. After all, someone has to create the first definition! Words weren't handed down to us by some magical deity.

              But that doesn't mean the audience came from the same place. It is very possible, and often happens, that they heard/created an entirely different definition for the same word. The speaker cannot possibly use their definition before even knowing of it.

        • By afiori 2025-05-020:451 reply

          This is a PR truism not a philosophical/linguistic one.

          If you are trying to tell something to someone you should say it so that they someone understand what you want them to understand.

          It does not mean that the audience can on the fly redefine your words, it just means than you cannot expect them to magically read your mind

      • By polotics 2025-05-0119:282 reply

        I live by this rule: The meaning of a message is what has been understood. To each their own, right?

        • By 9rx 2025-05-0122:281 reply

          I live by the rule: If something seems a little off, question the speaker about what they mean. It is likely they are using a different definition than you are familiar with. Accept what they tell you. Their definition is what matters.

          I know the tech crowd in particular loves to make up their own pet definitions for words and then double down on refusing to acknowledge that any other definition is possible, thereby continually talking past each other because there is no shared lexicon to hilarious effect, but that's not the norm, thankfully.

          To each their own. However, we're all in this together.

          • By simonw 2025-05-0123:10

            Absolutely agree with you on this. I've lost count of the number of times a conversation has been put back on track by realizing that the participants hate working from subtly (or wildly) different definitions of some key term without realizing it.

        • By afiori 2025-05-020:30

          The parent said that words mean what the speaker wants them to mean, you are saying that words mean what the listener understand them to mean.

    • By aaron695 2025-05-0212:53

      [dead]

  • By bitbasher 2025-05-0115:062 reply

    I can’t imagine tweeting something random at 4am and the next month a whole industry was formed around my tweet’s choice of words.

    • By yoyohello13 2025-05-0115:392 reply

      It's kind of been a rude awaking realizing that so many "founders" just choose their business direction based on the latest blog post they read.

        • By bitbasher 2025-05-0122:161 reply

          In my first engineering job, we had one lead that always seemed to repeat things the engineers said. As a team, we started to make up some words and use them only when he was around just to see if he'd start using them. We succeeded.

      • By flappyeagle 2025-05-0116:021 reply

        Why is this bad? Is the idea bad?

        • By sli 2025-05-0120:251 reply

          Do you enjoy working for a manager whose opinions change every time they read something? Do they sound like an effective manager? Have you ever had a boss that needed to think the ideas were theirs before they'd sign off, even normal, everyday process stuff? It heavily implies they don't know anything at all about what they're doing or talking about.

          • By bitpush 2025-05-020:49

            No, but there's also something about being stubborn

            Ask Nokia, BlackBerry and Kodak.

    • By barbazoo 2025-05-0115:21

      Can’t wait for the obligatory hn post about the documentary twitter thread on how their tweet blew up /s

  • By alabastervlog 2025-05-0115:115 reply

    Can anyone recommend a video that's a good representation of "vibe coding"? I'd like to get a better sense of what the actual moment-to-moment of it looks like.

    LLMs have been so spectacularly useless the couple of times that I've tried to use them for programming, that I can't really wrap my head around what this must be.

    • By simonw 2025-05-0115:431 reply

      Which version of vibe coding do you mean? Using AI to help you write code or using LLMs to build apps without caring about the code at all?

    • By pchristensen 2025-05-0115:21

      This video from Gene Kim and Steve Yegge, authors of one of the books in the original post, and the description of what’s happening in it, is a good presentation: https://www.linkedin.com/pulse/lessons-learned-during-my-two...

    • By jofer 2025-05-0116:45

      I'm really struggling to understand it as well. I mean, sure if what you're doing is a website, then maybe you can get something that functions out of an LLM. I don't really do web development, so maybe they're better for that specific niche.

      However, for most cases I've tried, I get wildly incorrect and completely non-functional results. When they do "function", the code uses dangerously incorrect techniques and gives the wrong answer in ways you wouldn't notice unless you were familiar with the problem.

      Maybe it's because I work in scientific computing, and there just aren't as many examples of our typical day to day problems out there, but I'm struggling to see how this is possible today...

    • By indigodaddy 2025-05-0119:282 reply

      This actually shows a lot of good stuff: https://youtu.be/opB25teOxYQ

      • By jimbokun 2025-05-0121:462 reply

        This is absolutely FASCINATING to me. This man is learning so much about "coding" implicitly without learning any Python syntax. How to iterate in smaller steps when a big step fails. What's an API? How to massage data from one source into a format usable by the next stage in the pipeline. Adding things you forgot on the first iteration. How to use the command line (type "python3" instead of python, using the up arrow to run the same thing over again).

        My favorite comment so far (I haven't gotten to the end) paraphrased:

        "I don't know what Swagger is, but let's just paste it in here."

        Somehow he figured out that Swagger docs tell Cursor enough to figure out how to talk to this API. Which is exactly what Swagger is for!

        Seems like the odd, formal syntax of programming languages is the major block for many people from doing software development. Because he is doing every other step a professional developer does when building an application.

        • By verzali 2025-05-0211:47

          As a non-programmer the syntax is one obstacle to getting more familiar with the software tools. But so is the number of tools they use with names that don't even hint at what they do.

          Just from what you wrote, I don't know cursor, but sounds like something to do with word processing so maybe it helps write docs. Then swagger that sounds like maybe it goes around grabbing free stuff? Maybe its a dependency manager?

        • By indigodaddy 2025-05-023:32

          Yep, I enjoyed all the aspects you mentioned from the video as well. It was quite satisfying and fun to watch. And he's also obviously a very smart and competent guy who seems to know how to just pick things up quickly and "figure stuff out," and those qualities definitely don't hurt in a vibe coding scenario.

    • By seyebermancer 2025-05-023:54

      “I'm trying to free your mind, Neo. But I can only show you the door. You're the one that has to walk through it. You have to let it all go.“

      Not a dev but been “vibe coding” since chatgpt came out. The llms can write a book… if you try to accomplish it with a single prompt it’s trash. If you construct the book chapter by chapter it’s a lot better and more cohesive.

      You don’t build the app with a single prompt - you build a function or file at a time in a modular, expandable format.

      Hackers are comfortable working in the dark— navigate with a flashlight (some background knowledge, understanding on syntax, data structures, secure coding practices etc) and you can get where your going a lot quicker and can try out a lot of different routes you may not have seen or had an opportunity to explore otherwise- maybe stumble upon an Easter egg along the way.

      You don’t necessarily need to spend hours reading the documentation on an unfamiliar library if you know how to get the AI to understand it, reinforce it with some examples and and use it- maybe in that process it expands your perspective or gives you an idea to incorporate into your production grade environment.

      With how quickly things advance- it seems rapid prototyping would allow you to qualify what’s worth investing time in vs what’s not.

      If you know about DAST, SAST and containers you can probably create a non total trash workflow for prototype qualifications and then pass to a more technically savvy specialized team member if warranted?

      Exploratory data analysis doesn’t seem wholly dissimilar in value- never know when you’ll stumble across a good nugget to feature engineer if you aren’t actively mining and exploring.

      “Vibe coding”==you’re getting the model to do what YOU want. Craft some nefarious things to understand how to hold the reins on the beast and that’s a decent starting point.

      If the LLM is useless- learn up on NLP, word embeddings and BERT and fine tune one to your specific use case. Don’t use the same chat session to make every file- manage the memory and tokens strategically and use few-multi shot reinforcement learning to specialize the sessions knowledge.

      Maybe things become a lot more bespoke and require less dependencies- less susceptible to supply chain attack. More variety could make your system less susceptible to automated attacks and make the pyramid of pain stronger.

      If everyone reverse engineers the dependencies and builds most things in house with their own twist, maybe that enables more flexibility with custom encoding and makes it less intuitive for an attacker to analyze your tech stack and infer how it operates.

      —surely over simplifying a few things and missing out on some production grade concepts but just grasping that the same thing that’s viewed as creating security gaps could also be used as a mechanism to close some if used efficiently and strategically. -— it’s not competition to a dev, use it so you can learn more and do better

HackerNews