No coders guide to vibe coding

New to vibe coding? Read this guide to learn more
- What exactly is vibe coding?
- Controversial vibe coding moments
- Why vibe coding is actually hard
- The false pretences of vibe coding
- Cool vibe coding projects
- Image Compressor
- Paul Graham essay tracker
- Katie Parrot’s AI experiments
- Vibe coding tools
- Cline
- Roo Code
- V0
- Windsurf
- Cursor
- Replit
- Lovable
- Bolt.new
- Rork
- The future of vibe coding: opportunity or illusion?
Megan is a Technical Content Marketer.
When Andrej Karpathy tweeted about vibe coding in February 2025, I doubt he anticipated the impact his tweet would have. Nearly 4.4 million views later, a dedicated Wikipedia page, and a growing debate in the engineering community, vibe coding has evolved from a passing thought into a full-fledged phenomenon in modern software development.

Vibe coding is reshaping how people think about coding and productivity. Even Y Combinator recently released a (controversial) podcast episode suggesting that vibe coding is the future of software engineering. (P.S. You should read the comments.)
Now, I’ll be honest, I don’t have deep software development experience, so I won’t claim to know whether vibe coding is the future. But what I do know is that vibe coding is actually hard.
I say this as someone who’s non-technical but still more technical than the average person. I’ve tried my hand at vibe coding a few times, and to my surprise, I found it far more challenging than expected. On the surface, vibe coding presents itself as clicking and prompting your way into a full-fledged SaaS app. But in reality, it’s deceptively complex.
Vibe coding is notoriously controversial too. We often see people’s vibe coding projects go viral on X, and while some people are making great projects, vibe coding gets a lot of heat. If you go on Reddit, you’ll see a lot of comments from unimpressed developer veterans tired of buggy code and the hype.
What exactly is vibe coding?
According to the Merriam Webster dictionary, vibe coding is “the practice of writing code, making web pages, or creating apps, by just telling an AI program what you want, and letting it create the product for you”.
In simpler terms, vibe coding is about using AI tools, often large language models like GPT-4 to generate code or entire applications based on prompts. Vibe coding isn’t just a tool; it’s a movement.
Vibe coding represents a shift in how people approach building technology, especially for those who aren’t traditional developers. By lowering the barriers to entry, vibe coding has enabled anyone to turn their ideas into functioning products without needing deep programming expertise and knowledge.
While vibe coding does offer exciting possibilities, it comes with its own set of challenges and controversy.
Controversial vibe coding moments
Vibe coding is not without controversy. Reddit forums are flooded with comments from disgruntled developers who feel that vibe coding promotes a shallow, copy-paste approach to software development.
A common complaint is that relying on AI to generate code encourages developers to skip foundational learning. Instead of understanding what the code is actually doing, people are running on vibes and clicking the "Accept All" button and hoping for the best. The result? Messy codebases, technical debt, and a lack of true ownership over what’s being built.
The real frustration seems to come from the idea that vibe coding dilutes the craft of programming. It’s not just about generating code—it’s about understanding it, debugging it, and improving it. As one developer put it, “GOOD ENGINEERS UNDERSTAND THEIR CODE.” Vibe coding, on the other hand, often feels like trying to fix a broken TV by hitting random buttons until something works.

There’s also a dark side to vibe coding, it seems like some (probably a very minor group) malicious actors are deliberately exploiting AI-generated apps, particularly through Sign-Up Flooding Attacks, a type of Denial-of-Service (DoS) attack. I’ve seen tweets from vibe coders reporting that their sites are under siege, with thousands of fake sign-ups happening every few minutes.

Why vibe coding is actually hard
Before diving into why vibe coding is challenging, I want to give some context on my background. I’m not a software engineer, but I’m not entirely non-technical either. I come from a liberal arts background, took a Code First Girls course, and taught myself SQL. Unsurprisingly, the programming language I find easiest is the one that’s closest to English in syntax.
I have the basics of HTML and CSS covered however, JavaScript is beyond me. But databases and data engineering? That’s a different story. I know my way around them. I’ve worked with dbt and have a solid understanding of data engineering principles.
I get how technical concepts work and have a general grasp of how programming fits together. Yet, despite this familiarity, I’ve found vibe coding surprisingly difficult, except when it comes to setting up and connecting databases. That part feels intuitive to me. I can structure a database, configure connections, and integrate it into a vibe-coded app without much trouble. But beyond that, things quickly get more complicated.
At first glance, vibe coding promises an effortless way to build software. The idea is simple: click, prompt, and let an AI generate code for you. But the reality is far messier. Vibe coding often feels like trying to treat symptoms without addressing the underlying issue. If you don’t understand core programming concepts, you can’t reliably produce an app.
Large Language Models (LLMs) hallucinate. They generate incorrect or misleading code. And when that happens, debugging is nearly impossible if you don’t understand what’s going on under the hood. You end up stuck, abandoning the project, or worse, scrapping everything and starting over.
I presume that one of the most beautiful things about software engineering is turning a vision in your head into a functional product. But when you vibe code, you’re not necessarily building your vision, you’re building the LLM’s interpretation of your prompts. And prompting, despite how easy it sounds, is actually an art. It requires precision, iteration, and a deep understanding of how AI models think.
Vibe coding isn’t a shortcut to software development. It’s a different way of working and in many cases, it can be more difficult than traditional coding. It removes the need to type every line of code yourself, but it doesn’t remove the need for logic, problem-solving, or debugging. And if you don’t already have that foundation, vibe coding quickly becomes overwhelming.
The false pretences of vibe coding
The issue with vibe coding is that it gives you the illusion that you’re “coding” without actually building the deeper intuition needed to work through real challenges. I saw this tweet from Lakshya Jain, who teaches at UC Berkeley. Lakshya succinctly describes my thoughts. “In production-level systems, you cannot just use GPT as a crutch, partly because you won't even have the context needed to give the prompt to solve it.”
AI-generated code isn't a silver bullet. There will be moments where the code is so tangled, and the error so cryptic, that no amount of prompting will help. The only way forward is to step into the debugger, analyze variable states, and methodically work through the issue, something that requires actual programming knowledge. As Jain points out, relying on GPT (or in this case any LLM) as the primary means of development means you're not truly understanding what you're doing, you’re just copy-pasting. And that’s a dangerous place to be.
Cool vibe coding projects
However, it’s not all doom and gloom. Some builders have successfully created and monetized impressive vibe coding projects. In fact, I’m working on two vibe coding projects myself, and I genuinely believe vibe coding has democratized access to software development.
It’s incredibly inspiring to see people building projects that were once out of reach. I know the frustration of having a vision but lacking the skills to bring it to life. In the past, if I wanted to get an MVP built, my only option was to hire a freelancer on Upwork or Fiverr—an expensive and often slow process.
Now, building an MVP is easier, cheaper, and faster. Three of the most important tenets of indie hacking/the startup world. It doesn’t stop at MVPs, according to YC Managing Partner Jared Friedman, a quarter of the W25 startup batch have codebases that are 95% AI-generated. To me that’s mindblowing.
Here are some cool vibe coding projects I found across my personal network, Reddit and X.
Image Compressor

I really like this vibe coding project because we’ve all been there, trying to upload a file and it’s too large, it always happens at the worst possible times, too. Then comes the annoying cycle of uploading your file to a shady website, waiting forever for it to process, and half the time, the site tells you, “File too large. Please upgrade to Pro” The image compressor is a practical solution to a universal problem.
Paul Graham essay tracker

Whalesync co-founder, Matthew Busel vibe coded a Paul Graham essay tracker where you can read all of Paul Graham’s essays in one place and track your progress. The PG essay tracker was built with Bolt.new and synced Airtable to Supabase with Whalesync.
Katie Parrot’s AI experiments

My ex-colleague, content marketer and vibe coding aficionado, Katie Parrott has a bunch of vibe coded projects on her website. My two faves are: the cliche catcher, which was created to help writers spot cliche phrases in their writing and suggests alternatives and earned street excavator.
Earned street excavator asks you a few questions about your experiences and thoughts and the AI will refine your ideas and shape them into a thought leadership brief that’s ready for action.
Katie also wrote about her experience with vibe coding, which is a phenomenal read.
Vibe coding tools
The explosion of vibe coding has led to a growing ecosystem of AI-powered tools designed to turn natural language prompts into functioning software. Here’s a look at some of the most popular tools dominating the space.
Cline

Cline is an open-source, autonomous AI coding agent built specifically for VS Code. It’s designed to assist developers in building and maintaining complex software faster by handling everything from creating and editing files to executing commands and browsing the web.
Cline is a game-changer because it acts as a powerful co-pilot that does more than just generate code, it actively supports your entire workflow. By automating repetitive tasks and providing intelligent suggestions, Cline allows you to focus more on the creative aspects of building software and less on the tedious grunt work.
A developer called Michael Lynch wrote about why Cline is “mesmerizing”, you can read it here.
Roo Code

Roo Code is an open-source VSCode extension that started as a fork of Cline but quickly developed its own identity. Like Cline, it’s an autonomous coding agent that integrates directly with your local VSCode environment, allowing you to edit files, execute terminal commands, and use all your existing tools seamlessly. What sets Roo Code apart is its focus on customizability and workflow optimization.
However, it’s not without its limitations. Roo Code operates on a “Bring Your Own Key” (BYOK) model, meaning that you pay for the API tokens used during development. This can quickly become costly for more complex tasks, especially if you’re running on vibes and don’t intend to monetize your project.
V0

Built by Vercel, V0 integrates cutting-edge web technologies like Next.js, React, Tailwind CSS, and shadcn UI components, making it a powerful tool for vibe coders looking to build polished, production-ready web apps with minimal effort.
Unlike typical AI coding tools, V0 doesn't just generate code snippets; it creates entire projects out-of-the-box, you simply describe what you want, like “Create a todo list app with a blue theme” and V0 delivers a fully functional app you can preview, modify, and deploy right from your browser.
The tool shines by offering deep integration with Vercel’s ecosystem. However, V0 has its limitations. The tool struggles with continuity, meaning changes made in your IDE aren't reflected in the chat interface. Additionally, it only supports Next.js and Vue.js for now, leaving frameworks like Svelte and Flutter out of the mix. Token usage can also be costly, especially when building larger projects.
Windsurf

Windsurf is Codium’s latest AI-powered IDE built to enhance productivity. Windsurf has impressive terminal command handling. Its ability to retry commands when something goes wrong, analyze differences, and automate terminal processes gives it a significant edge over other vibe coding tools when it comes to debugging.
While Windsurf excels at managing specific tasks and handling commands, its code generation capabilities feel less creative and more rigid compared to other vibe coding tools.
Cursor

I’m not a developer, but I’ve read extensively that Cursor offers a great developer experience out of all the vibe coding tools. Built on top of VSCode, Cursor will feel familiar if you’re already comfortable with VSCode. I was able to complete a database schema using SQL Lite with just a few prompts.
Cursor’s code generation capabilities are impressive, particularly when dealing with structured backend development. However, it does struggle with more creative aspects of coding. Overall, Cursor’s strength lies in its user experience. It provides a smooth, integrated development environment that allows you to keep working without constantly shifting between windows or interfaces. Its multi-file editing capabilities through Composer are a game-changer for vibe coding, allowing even non-technical users to build functional prototypes.
Replit

Replit has established itself as a popular AI-powered IDE, where AI assists you in debugging, writing code, and speeding up your workflow. What makes Replit particularly appealing is its user-friendly interface, where the file explorer and chat window coexist side-by-side, minimizing friction and allowing you to iterate faster. It feels like a complete development environment where AI is embedded naturally into the workflow, enhancing productivity without overwhelming you
However, Replit’s AI Agents sometimes exhibit unpredictable behavior. They can be overly aggressive in editing multiple files or too rigid in completing tasks based on the initial spec, even when errors persist. Additionally, Replit’s AI struggles with reasoning about external dependencies, making it less effective for projects relying heavily on third-party services or integrations.
For smaller projects or isolated tasks, Replit’s AI Agents can feel like a magic wand. But when tackling complex, multi-layered projects, the limitations in flexibility and external dependency awareness can be frustrating.
Lovable

Lovable is designed to code full-stack applications through simple conversations. It’s also my personal favorite vibe coding tool. Lovable generates apps primarily using popular React/TypeScript frameworks, while handling backend tasks with Supabase.
Additionally, Lovable handles database operations remarkably well. Its integration with Supabase for backend management is smooth and efficient, making authentication and CRUD operations simpler than with other tools.
What sets Lovable apart is its ability to establish a shared cognitive framework between you and the AI. Rather than simply spitting out code, Lovable works best when you clearly outline your project’s intent and the problem space you want to explore. By guiding the AI’s thinking process through structured documentation and assigning it different perspectives, such as product manager or a UX strategist, you create a well-rounded approach that results in more thoughtful, cohesive software.
But what really sets Lovable apart from other vibe coding tools is its approach to error handling and communication. When an error occurs, Lovable offers a “try to fix it” option without consuming a message.
Bolt.new

Bolt.new promises to take vibe coding to the next level by allowing users to build fully-functional web applications from natural language prompts. However I find Bolt to be one of the more challenging vibe coding tools. Bolt’s error handling left me trapped in an error loop that consumed a lot of tokens.
Bolt’s user experience is phenomenal when things work as intended. The platform allows for quick prototyping, seamless UI creation, and even instant deployment to Netlify. It’s a powerful tool for building core functionality fast, although its credit system limits how much you can accomplish in a single session.
Overall, I would say that Bolt is best paired with a developer’s expertise. As with all things vibe coding, the key is knowing when to rely on the AI and when to intervene yourself.
Rork

Rork is a vibe coding gem. Rork differs from other vibe coding tools as it primarily focuses on building apps for iOS and web (via React Native). Rork generates complete apps with essential features like multiple pages, navigation, dashboards, and user login/signup functionality.
My favorite thing about Rork is its integration with tools like Expo, allowing you to test the app on your device. This makes it ideal for rapid prototyping or quick deployment of functional web and mobile apps.
But Rork does have its limitations. Highly customized or complex features may not be perfectly executed as I feel like the AI often struggles to interpret your user requirements accurately. However, for straightforward applications and MVPs, Rork is an impressive tool that lowers the barrier to entry for mobile app development.
The future of vibe coding: opportunity or illusion?
Vibe coding is an exciting, controversial, evolving trend that has transformed how we approach software development. It promises accessibility, creativity, and the power to build functional apps without deep technical knowledge. But while it lowers the barrier to entry, it also raises new challenges, especially when it comes to debugging, reliability, and ownership over the code.
At its best, vibe coding democratizes software development, making it more accessible than ever. But if you don’t understand what’s happening under the hood, it can quickly turn into a frustrating experience. As more developers experiment with these tools, the line between “AI-assisted” and “AI-dependent” coding will continue to blur. Whether that’s a good thing or not is still up for debate.
Subscribe for more
Stay up to date with the latest no-code data news, strategies, and insights sent straight to your inbox!