Skip to content
DevMeme
6046 of 7435
The anti-'vibe coding' manifesto for developers
CodeQuality Post #6621, on Apr 3, 2025 in TG

The anti-'vibe coding' manifesto for developers

Why is this CodeQuality meme funny?

Level 1: Cooking without a Recipe

Imagine you want to bake a cake, but instead of following a recipe, you just start mixing ingredients that feel right. You throw in a bit of this and a bit of that, without measuring, because you “have a good feeling” about it. You don’t write down what you did either. Maybe the cake turns out okay one time – let’s say, by luck, it tastes good on Tuesday. But when you try again later in the week, using your memory and guesswork, the cake tastes terrible and you have no idea why. In fact, it only ever seems to come out right on Tuesdays, and you’re stumped because you never kept track of your steps! To make things messier, imagine you used a fancy new kitchen machine (like a cooking robot) to help mix the batter. That machine was supposed to make cooking easier, but you let it run on its own and it randomly removed almost all the ingredients and added a couple strange ones. Now your cake recipe (if we can call it that) is missing a ton of stuff, and the result looks nothing like what you started with. You even accidentally left a jar labeled “Secret Sauce – Do Not Share” open on the counter (that’s like exposing your passwords in code), and now everyone can see it. In the end, the kitchen is a disaster. The cake only succeeded that one Tuesday by pure chance, and every other attempt is a flop. You’re scratching your head because you never wrote a recipe to learn from, and the robot mixer just did something crazy you don’t understand. Finally, you call in an experienced chef to fix everything. That chef is shocked you ever tried to cook this way! They have to clean up the mess, figure out a proper recipe from scratch, and lock away that secret sauce you left out. The whole situation is funny in a facepalm kind of way: it shows why cooking (or coding) by “vibe” – just doing what feels okay without a plan – can lead to chaotic results. It’s a reminder that following a recipe (or writing instructions and documentation) and using tools carefully is important. Otherwise, you end up with a cake that only turns out right under weird conditions (like only on Tuesdays!) and a kitchen nightmare that someone else has to sort out. The humor comes from how silly it is to do something so complicated based on feelings alone – we can laugh because it’s obvious you need a real recipe, whether you’re baking a cake or building an app.

Level 2: Feelings-Driven Dev

This meme is a cautionary tale for newer developers about mixing gut feeling with coding practice. Let’s break down the terms and scenarios so they make sense if you haven’t lived through them:

  • "Vibe coding" (Feelings-driven development): This is a tongue-in-cheek way to describe coding by intuition – essentially writing code based on what feels like it might work, rather than what you can logically explain or verify. The meme literally says “PROGRAMMING WAS NOT MEANT TO BE BASED ON FEELINGS” to drive home that point. Computers are strict and literal; they follow exact instructions. So if you code by vibe (guessing and hoping), you often end up with unpredictable results. The meme gives an outrageous example: a bug that “ONLY WORKS ON TUESDAYS.” That implies sometime in the past a developer wrote some code or configuration so haphazardly that it behaves correctly only one day a week! While it’s unlikely to be exactly day-specific in real life, it symbolizes any weird bug that seems to have no rational pattern – a nightmare to troubleshoot. Perhaps the code uses the date or relies on a weekly reset, and only on Tuesday is everything aligned for it to not crash. The phrase “YEARS OF DEBUGGING yet NO ONE KNOWS WHY” tells us the team spent a very long time trying different fixes or investigations and still couldn’t find the root cause. This often happens in projects where there’s no documentation or clear design – people end up poking at the code, applying fixes that seem to help (again by feel), but never truly understand the underlying problem. It’s a cycle of Debugging_Troubleshooting with no closure. For a junior dev, the lesson is: if you only go by “I have a hunch this might fix it” and never document or analyze why something works, you might end up with a mystery like the Tuesday bug.

  • Documentation (or the lack thereof): Documentation is basically any written explanation of what the code does, how it works, or why it was written a certain way. It can be comments in the code, a README file, design docs, etc. The meme jokes, “Wanted to KNOW WHAT YOUR CODE DOES? We had a tool for that: It was called ‘DOCUMENTATION’.” This is poking fun at modern developers who skip writing things down. In some teams, people assume “the code is self-explanatory” or “we’ll remember what we did,” which often isn’t true. When those developers leave or time passes, DocumentationGap becomes a real problem – new people have no map to understand the system. The meme suggests that instead of writing docs, these vibe coders possibly rely on asking questions in chat or even using tools (there are AI tools that try to explain code). In fact, in the image we see someone ask in a chat channel: “I just started using cursor – what does the white dot mean?” This likely refers to a newcomer using an editor named Cursor (which integrates AI coding features). The “white dot” might be an indicator in the editor (for example, many editors use a dot to show unsaved changes in a file). The fact they have to ask this in a chat hints they didn’t read any introduction or documentation for the tool – a bit ironic, given the complaint about lacking code documentation. It highlights a pattern: not reading the manual or docs, then having basic questions that slow down the work. For juniors, this emphasizes why documentation (and reading it!) is important: it answers these “what does X mean?” questions so you’re not stuck or bothering someone for trivial issues. Essentially, the meme is saying we already invented documentation for understanding code – use it! Don’t rely on guesswork or after-the-fact detective work with AI to know what your code is doing.

  • Fear of code reviews: A code review is when other developers on your team examine your code changes before they are merged (added) to the main codebase. It’s a quality control practice in software development. Some developers, especially less experienced ones, feel anxious about code reviews because it can be like having your homework critiqued in front of the class. The meme calls out “developers who fear code reviews” as the ones saying “YES this feels right so it must work.” This means: instead of confidently explaining and defending their solution, they kind of just cross their fingers that nobody looks too closely. If someone is afraid of reviews, they might avoid asking for help, skip writing tests, or bundle a lot of changes together hoping the reviewer won’t notice issues – all bad habits. The Slack screenshot with a diff +93 −38,918 is an extreme scenario: this shows a Pull Request (PR) where 93 lines of code were added and a whopping 38,918 lines were removed. A PR is how you submit code for review on platforms like GitHub. A change that large is very hard to review properly; it’s overwhelming. Usually, you’d break something that big into smaller pieces, unless it was auto-generated or a wholesale deletion of something. In the chat excerpt next to it, someone asks “why what’s up with your PR” and the author responds “I was just vibe coding.” This implies the person made a ton of changes on a whim, without careful planning – likely using some automation or find-replace or an AI suggestion – and now the PR is huge. For a reviewer, this is a nightmare (CodeReviewPainPoints indeed). They have to somehow trust that these 38k deletions and 93 additions are correct. The “fear of code reviews” in this context could mean the developer didn’t break it into smaller, reviewable chunks because they either didn’t know how, or hoped no one would deep-dive into the details if it was one big blob. It’s a tongue-in-cheek way of saying this person did everything not by the book: they just followed a feeling and dumped it on the team. The lesson for a junior dev: code reviews are there to help maintain CodeQuality and catch mistakes. If you ever find yourself thinking “I’ll just commit this huge change and maybe no one will notice the problems,” take a step back – that’s the vibe coding trap the meme warns about.

  • Security mishaps (e.g., passwords.csv): One image clearly shows a file named passwords.csv with columns of username,password and values like david13,op2eddf1, etc. This is highlighting a critical no-no: committing actual passwords (especially in plaintext) in your code repository. It’s both a security risk and a sign of carelessness. In professional settings, secret credentials are kept out of code – using environment variables, encrypted storage, or secret management systems – precisely because if they’re in code, anyone with access to the repo (or any copy of it) can see them. Also, version control will keep those secrets in history even after removal. The meme is using this to show how sloppy a vibe coder can be: they either didn’t know or didn’t care that pushing passwords.csv to a repo is like leaving the keys under the doormat. It’s an example of a CodeQuality issue that also creates immediate TechnicalDebt (because now someone has to purge those secrets and change them). For a junior, it’s a reminder: never hard-code or openly commit sensitive information. It might feel convenient (“I’ll just quickly save these here”), but it’s a serious mistake.

  • AI-assisted overkill: The meme also references modern AI coding tools and the hype around them. There’s a banner saying “You’ve hit the Free plan limit for GPT-4.0” which shows the person was using a GPT-4 powered assistant heavily (enough to exceed the free quota). That suggests they were leaning on AI for generating code or solutions rather than writing code themselves or researching documentation. Tools like ChatGPT or GitHub Copilot can assist with coding (give suggestions, write boilerplate, explain errors), but they’re not perfect. If overused, a developer might accept code that they don’t fully understand, just because it was suggested by AI and felt right. This ties into the AI_assistants and AI_ML theme: the hype is that AI can write code quickly. The reality (the meme’s point) is that blindly accepting AI-generated code can introduce weird bugs or massive changes that you can’t justify. The LinkedIn post shown drives this home humorously: It lists predictions where by 2025 or 2026 nearly all code could be written by AI. Then it shows a counterpoint that by 2027, senior engineers will be paid 10x more to fix all that AI-written code. This echoes a sentiment in the dev community: AI can make a lot of code fast, but it can also make a lot of mistakes or mess just as fast. If no one’s carefully reviewing or testing that AI output (perhaps because they “fear code reviews” or don’t have documentation to compare against), you accumulate a ton of TechnicalDebt. That debt eventually has to be paid by somebody – usually more experienced devs who come in and spend time refactoring, debugging, and securing the code. The phrase “They have played us for absolute fools” is a dramatic way of saying “we fell for the hype or the easy shortcut, and now we feel tricked.” It could refer to management believing AI would solve everything, or to developers believing they could just vibe their way through coding without consequences.

In simpler terms: the meme is using exaggeration and humor to teach a lesson. CodeQuality comes from discipline: understanding what you write, documenting it, testing it, and having peers review it. If you skip those and just code on impulse (or let an AI do it for you without scrutiny), you might end up with bizarre situations (like a Tuesday-only bug or huge unmanageable code changes) and a pile of issues to clean up later. It resonates with developers because many have seen smaller-scale versions of these issues. For someone newer to coding, the takeaway is to be cautious of any approach that sidesteps good practices – no matter how tempting “just quickly coding what feels right” is, it often leads to more work down the line. In other words: trust logic and process over vibes.

Level 3: Diff of Doom

This meme perfectly captures a senior engineer’s nightmare: a codebase ravaged by vibe coding and AI-fueled quick fixes. It’s dripping with the cynicism that comes from years of DebuggingFrustration. Let’s unpack the chaos:

  • Intuition Over Logic: “Stop doing vibe coding” is a rallying cry against feelings_driven_development. Seasoned devs know that “it compiles, ship it” based on a gut feeling is how you spawn unexplainable bugs. The meme explicitly shouts “PROGRAMMING WAS NOT MEANT TO BE BASED ON FEELINGS” because code operates on logic and strict rules – your emotional state or hunches won’t make that NullPointerException go away. A cynical veteran reading that is nodding because they’ve seen juniors write convoluted code that somehow works on one machine or one day, and then completely fails in production. The Tuesday-only bug here is a hilarious exaggeration of those weird, intermittent issues: “YEARS OF DEBUGGING yet NO ONE KNOWS WHY IT ONLY WORKS ON TUESDAYS.” Imagine an app that crashes every day except maybe Tuesday, and despite combing through commits and logs (perhaps every Wednesday morning post-mortem), nobody can figure out the pattern. This sounds absurd, but similar things happen with poorly understood systems – maybe a cron job resets something Monday night, so Tuesday morning it’s fresh and working, but by the rest of the week it degrades. It’s an extreme case of Debugging_Troubleshooting hell, where lack of insight (no docs, no comments, spaghetti logic) means you’re chasing phantoms. A senior dev has likely encountered a Heisenbug or a “works on my machine” scenario that stretched over weeks – this meme cranks it up to works on my calendar. It’s funny because it’s almost true: when no one knows how the system truly works, any fix can feel like pure luck.

  • Documentation? What Documentation? The next bullet hits a classic DocumentationGap: “Wanted to KNOW WHAT YOUR CODE DOES? We had a tool for that: It was called DOCUMENTATION.” That’s pure sarcastic gold. Every veteran has at some point uttered, “if only they had written it down…”. In real teams, failing to write design docs or even basic README means years later people are spelunking through code or (ironically) asking an AI “explain this function”. Here it’s pointed out as if documentation is some ancient, forgotten magic. The all-caps and quotes around "DOCUMENTATION" underline how foreign the concept seems in a shop that does vibe_coding. The meme implies the devs involved would rather spend hours with an AI or debugger trying to infer the code’s purpose than spend minutes writing it down in the first place. A senior engineer reading that line is laughing (or crying) because they’ve inherited projects where the only ‘documentation’ was random comments like “// feels okay”. In this meme’s collage, indeed, we see people resorting to desperate measures to understand the code: one screenshot shows a user in some editor or Slack asking “what does the white dot mean?”. This suggests the developer is so lost they have to ask what a basic UI indicator signifies. (In many code editors, a white dot on a file tab often means “unsaved changes” or a breakpoint. If you’re writing code and you don’t even know that, it screams inexperienced or inattentive.) The kicker: they’re using an AI-heavy editor (Cursor) and still have to ask trivial questions. The veteran perspective: if you can integrate GPT-4 into your coding but can’t figure out a save icon, your priorities are upside-down. It exemplifies a CodeQuality culture problem: chasing shiny tools (AI assistants) while ignoring fundamental practices (like saving work, reading docs).

  • Reckless Code Changes & CodeReviewPainPoints: Then we have the Slack screenshot of a Pull Request diff: “+93 −38,918”. Holy commit history, Batman! That’s a diff of doom indeed. Adding 93 lines while deleting nearly 39K lines is not a normal refactor – it’s more like napalming the codebase. This smells strongly of an ai_generated_pull_request or some “auto-fix” gone wild. Perhaps the developer asked GPT-4 to “optimize my project” or decided to replace a giant library with a few API calls. The result: tens of thousands of lines gone in one go. Any senior dev will tell you that a diff that huge is basically unreviewable – a prime example of CodeReviewPainPoints. The meme’s author clearly finds humor in the absurdity: nobody in their right mind would want to review such a PR, and you just know it’s going to break something unexpected (maybe everything except on Tuesdays!). In the chat snippet, we see colleagues reacting: “why what’s up with your PR” and the author deadpanning “I was just vibe coding”. That admission is both funny and horrifying. It’s like a surgeon saying “I just winged it” after a 12-hour operation. The dev basically trusted their feelings or an AI’s suggestions to make a massive change, likely without a test plan or step-by-step commits. This is where fear_of_code_reviews comes in. The meme suggests that those who do vibe coding are “developers who fear code reviews.” Why would they fear them? Because a proper review would rip apart code that was written with no rhyme or reason. So instead, they dump a monster diff, hoping no one will scrutinize all 38k deletions line by line. It’s a cynical take on how some folks try to evade accountability: bury your questionable changes in a pile so big that reviewers throw up their hands. Seasoned engineers see this and immediately think of the technical_debt being piled on – that code is bound to hide new bugs (possibly ones that only appear next quarter, or only on leap years for all we know!). They’ve “played us for absolute fools,” indeed, if they expect senior reviewers to rubber-stamp this.

  • Security & Quality Nightmares: The meme collage doesn’t stop at logic errors; it even shows a repository screenshot with a file named passwords.csv containing plaintext usernames and passwords. That’s the kind of find that makes a security-conscious senior engineer do a literal facepalm. Committing passwords.csv with real credentials is a cardinal sin in CodeQuality and security. It screams rookie mistake – or utter negligence – because now those passwords are likely in version control history forever. This one image encapsulates a whole class of “what not to do” in development. It also ironically ties back to lack of documentation/education: clearly, no one told this vibe coder about environment variables, config files, or secret management. Or they felt “eh, it’s just one test account, it’s fine” – famous last words. To a veteran, this is gallows humor: they’ve spent late nights expunging hard-coded secrets from a codebase after the fact, rotating credentials, apologizing to users – the works. The meme pointing it out is a wink to those war stories. It’s an example of TechnicalDebt in its purest form: a ten-second lazy shortcut (stashing passwords in code) can cause weeks of cleanup and a production emergency if leaked.

  • AI Hype vs Reality: Finally, the meme references a LinkedIn post (by a user with a fancy title in ML infrastructure) that forecasts AI’s takeover of coding. It shows AI_ML hype at its peak: 2025 – 90% code written by AI, 2026 – 100% by AI. We’ve all seen bold predictions like this in tech conferences and CEO keynotes. The meme then contrasts it with a cheeky “my prediction”: 2027 – 10x salary for senior devs to clean up the AI-written code. This is big AIHypeVsReality energy. Every experienced developer has lived through waves of “this tool will replace programmers” hype – from 4GLs, to code-generators, to “no-code” platforms – and watched them falter. The LinkedIn prophecy being lampooned here suggests that by 2027, companies realize code quality has plummeted due to unchecked AI generation and have to bring in the heavy artillery (senior engineers) at great expense to sort out the mess. “They have played us for absolute fools” is the collective cry of developers who feel the industry jumps on every hype train only to derail later. The humor here is in inevitability: you just know that if 100% of code is written by an AI that’s effectively stochastic, not logical, the amount of bizarre bugs and security holes (like our Tuesday bug and passwords file) will skyrocket. And who gets to fix it? The humans, of course. So this meme resonates as a dark joke among seasoned devs: “Go ahead, generate all the code with AI and intuition... We’ll be waiting in 2027 with our consulting fees.” It reflects the real TechDebt cycle: quick gains now (AI writing code, no pesky documentation or tests), debt paid with interest later (major refactors, outages, costly rewrites).

In essence, the senior-perspective takeaway is: Everything in this meme has happened before and will happen again. Code written by sheer gut feeling without oversight leads to quirky bugs no one can explain. Skipping documentation and reviews for speed means paying the price in endless debugging and firefighting. Blindly relying on new tools (whether it’s an AI pair programmer or whatever’s next) doesn’t absolve you from understanding your code. Each screenshot is an “Exhibit A” of CodeQuality gone wrong, from committed secrets to monstrous diffs. The humor is that we’ve all seen at least a mild version of these, and while it’s funny on a meme, it’s painful in real life. The veteran voice in this meme is basically saying: “I’ve survived this nightmare before – please, kid, don’t go down the same path of vibe coding. It doesn’t end well (except maybe on Tuesdays).”

Level 4: Halting the Hype

At the deepest level, this meme highlights the fundamental impossibility of magically understanding or fixing code that was created with no clear specification. In theoretical computer science terms, if you don’t specify what your program should do (through design or documentation), determining its behavior can be as hard as the Halting Problem. Feelings-driven development (the infamous vibe_coding referenced here) means the code’s intended behavior exists only in the developer’s head, not in any formal spec. No surprise that the result is a black box: even advanced AI assistants like GPT-4 can only guess what the code is supposed to do. They operate by statistical patterns, not true understanding, which is why relying on an AI to generate a huge code change (like an ai_generated_pull_request with -38,918 removals) is so risky. Verifying that such a change is correct is akin to solving an undecidable problem – you’re essentially trying to prove two massive code versions are equivalent in functionality without a spec. This is why formal methods and documentation_deficit matter: they limit the state space of “what could this code possibly do.” Without them, we get unpredictable Schrödinger’s bugs that only manifest under odd conditions (hello, tuesday_only_bug). The meme’s absurd "only works on Tuesdays" scenario hints at Heisenbug-like behavior, where the system’s correctness is so fragile and context-dependent that it might as well be random. The line “PROGRAMMING WAS NOT MEANT TO BE BASED ON FEELINGS” channels a core software principle backed by math: code correctness isn’t subjective. A program either meets its specifications or it doesn’t – and if you never defined those specs, you’re stuck in an infinite loop of guessing why it broke this time. The veteran humor here masks a serious truth: without solid design, review, and documentation, you’re computing on a wing and a prayer, defying the very determinism that makes computers tick. In short, AI_hype_vs_reality collides with computational reality – no amount of “this feels right” can bypass the hard truth that you can’t debug or verify a vibe. The only proven way to know what your code does is to rigorously define it, or else even a super-intelligent AI will shrug (or hit a chatgpt_quota_limit banner) faced with the endless possibilities of your mystery meat code.

Description

A collage-style meme that serves as a rant against 'vibe coding'. The top features a bold title, 'STOP DOING VIBE CODING', followed by a series of bullet points in all caps. These points argue that programming shouldn't be based on feelings, mock bugs that 'only work on Tuesdays', lament the loss of documentation, and state that 'YES this ~feels right~ so it must work' is a statement from developers who 'FEAR CODE REVIEWS'. The bottom half of the image is a collection of four screenshots. On the left, a Reddit post from r/cursor shows a user asking a basic question next to a file named 'passwords.csv' containing plain text credentials. The middle screenshot is a chat where a user defends a massive pull request (-38,918 lines deleted) by saying, 'oh i was just vibe coding'. The right screenshot is a prediction that by 2027, senior SWEs will be paid 10x more to clean up the mess created by 100% AI-written code. The meme concludes at the very bottom with the quoted text, 'They have played us for absolute fools'. The overall message is a critique of relying on intuition and AI tools without engineering discipline, predicting it will lead to unmaintainable code and massive technical debt

Comments

23
Anonymous ★ Top Pick 'Vibe-driven development' is just agile's final form: you ship based on the product manager's feelings, the designer's feelings, and now, the developer's feelings. What could possibly go wrong?
  1. Anonymous ★ Top Pick

    'Vibe-driven development' is just agile's final form: you ship based on the product manager's feelings, the designer's feelings, and now, the developer's feelings. What could possibly go wrong?

  2. Anonymous

    Vibe-driven commits scale linearly with gut feelings but exponentially with post-merge headcount - Big-O notation the finance team actually notices

  3. Anonymous

    The real vibe check is when your 'feels right' code passes all tests in dev but somehow manages to drop the production database on a Tuesday because you stored credentials in passwords.csv and your AI-assisted PR deleted 38,918 lines of 'unnecessary' error handling

  4. Anonymous

    The real 'vibe coding' is when your Heisenbug only manifests on Tuesdays because that's when the intern runs the weekly cron job that resets the race condition you've been debugging for three years. By 2027, we'll have come full circle: AI will generate the spaghetti code, junior devs will ship it to production, and battle-hardened senior engineers will be paid FAANG-level salaries just to archaeologically excavate through layers of hallucinated abstractions and re-implement everything in 200 lines of boring, well-documented code that actually works - proving once again that the most expensive technical debt is the kind you don't know you're accumulating until the 38,918-line 'refactor' PR lands on Friday afternoon

  5. Anonymous

    If your rationale is “it feels right,” expect a postmortem titled “also felt right until Tuesday” - write specs and tests or budget seniors to mop up GPT-4o’s diff

  6. Anonymous

    Vibe coding: where your monolith achieves CAP consistency via Tuesday vibes alone, collapsing into heisenbugs the rest of the week

  7. Anonymous

    Vibe-driven development is how you ship a +93/-38,918 diff that only passes CI on Tuesdays because the feature flag compares localtime.wday to UTC, and the design doc is passwords.csv

  8. @andrei_nik_kolesnikov 1y

    Ah, but this meme is not ironic, it looks like a serious call to action

    1. dev_meme 1y

      Is you opinion based on ~~~vibes~~~? 🌚

      1. @andrei_nik_kolesnikov 1y

        Compare it to the one above

  9. @H3R3T1C 1y

    Its real

  10. @mrYakov 1y

    So true, try cursor every time new llm released. They write code that looks right, but when you dig deep, its so wrong and after some time you understand that its better to rewrite everything by yourself

    1. dev_meme 1y

      Oooor, maybe time is about to change? And the way we work with code -- will have to change simply because it will be faster with llm?

      1. @mrYakov 1y

        On refactor or one line magic for task, that already done thousands of times, maybe. I think we neen brand new architecture for neural networks with like, hierarchical context, that works well with task decomposition or something similar.

        1. @Johnny_bit 1y

          that'd be cool

      2. @SamsonovAnton 1y

        "Things are gonna change around here... again!" https://youtu.be/UgeesTkdAK0

  11. @SheepGod 1y

    i already have this issue when other companies start working on a site but we gotta finish it 🥲

  12. @Johnny_bit 1y

    vibe coding is stupid using ai as a tool and help is good and makes work MORE productive however now instead of coding one does QA for AI instead of writting the code and doing QA isn't as fun :/

    1. @ArtemVoikov 1y

      QA can code. instant surplus with coders!11 wow!

  13. @ZgGPuo8dZef58K6hxxGVj3Z2 1y

    Lmfao

  14. @AlexAparnev 1y

    instead of vibe-coding i do vibe-commenting

  15. dev_meme 1y

    Since when writing shit yourself and taking responsibility for your mistakes isn't cool anymore?

  16. dev_meme 1y

    I mean back in the day it was either learn or hire, today it's "chat write an app that does.."

Use J and K for navigation