The Problem With Vibe Coding: You Still Need to Code

Vibe coding is fun and fast, but without fundamentals, it’s fragile. Pair AI’s speed with real coding skills to build software that lasts.

If you're remotely plugged into the tech world on social media, there's no way you've escaped discussions around "vibe coding" in 2025. The idea that you can simply sit down at your computer and describe a piece of software you want to create to an AI agent, and then, within hours, if not minutes, have fully functioning code, and you’re ready to raise your Series A or at least that’s the dream being sold by the loudest voices in the room. This is the kind of thing non-coders dream of. But, the truth is, vibe coding if you can’t code is like using Google Translate to write a tattoo in a language you don’t speak. Did you just get “I’ll take a cheeseburger with no cheese” permanently inked onto your body?

Confession time: I’ve gone down the vibe coding rabbit hole and used it to build several test projects to see if an idea has legs or not. So this isn’t just a shitpost or gatekeeping to say “Vibe coding bad, coding from scratch is the only way.” Rather, I want to explore what I’m seeing happen, the risks, and the downsides. But I also want to look at how vibe coding can be good and how generative AI can be leveraged to 10x software development.

The Allure of Vibe Coding

What makes vibe coding cool? It’s simple. The ability to go from nothing to something is alluring. It’s the dopamine hit of “I made this and it works.” This is where vibe coding really excels and where it first started to gain traction. My first experience with real vibe coding was using Replit , a generative AI agent built on top of Anthropic’s Claude models.

When you first log in, you’re greeted with the question, “What do you want to build?” After you describe the app you want in as much detail as you can provide, Replit’s agent goes to work creating a development plan, suggesting features such as adding a database or an integration with Stripe for billing.

Damn Replit took a process that would take me hours to complete and did it in less than 5 minutes. But it’s even better, once you approve the development plan, Replit’s agent goes to work building your initial version, and within 20-30 minutes you have something tangible that’s clickable and maybe even usable. It’s so hands-off that you don’t even need to sit in front of your browser window, just download the Replit app on your phone and receive a push notification whenever the agent needs your input. It’s like your own personal software developer working away as soon as you give them a task.

But, as the old saying goes, “Not all that glitters is gold,” and code that runs once might not always run.

The Problem With Blind Vibe Coding

This is where we start to see holes with our vibe coding. Most AI agent-created code is buggy, hard to read, fragile, and challenging, if not impossible, to maintain. A quick scroll through r/vibecoding reveals tons of stories of agents fixing one mistake only to break something else, and requiring 2, 5, or even 10 new prompts to get the original component working again. When something breaks, it’s often nearly impossible to fix manually.

In my experience, AI agents and assistants often utilize outdated packages, employ single-character or non-descriptive variable names, and rarely provide clear and concise comments in the code. All of this combines for code that is destined from the start to have a very short life. When it’s just as easy to write brand new code from scratch as it is to maintain your existing code, you have a hobby, not production-ready code, and certainly not something you can build a business with.

The Right Way to Use Vibe Coding

If we know that vibe coding isn’t going to give us production-quality code, should we even use it? Does it have a purpose, or is it all smoke and mirrors? I think vibe coding definitely has a place in the modern software developer’s playbook, but it might not be the place you want it to have. I look at vibe coding as the next step or a complete replacement for the design prototyping capabilities of Figma .

With vibe coding, you can follow the same process as you would with a designer: identify the problem you’re trying to solve, determine how you want to solve it, provide feedback, and iterate to create a working prototype that guides your coding. To incorporate vibe coding into a production use case, you’re not using it to make your final version; you’re using it to prototype, collect user feedback, iterate to incorporate feedback, and then, once you’re ready to move toward production, you discard your vibe-coded output and rewrite clean, production-optimized code that can be maintained for years to come.

AI is a Multiplier, Not a Replacement

AI has gone from something the average person had only heard of in Sci-fi movies to a topic that’s regularly discussed in offices, coffee shops, and backyards. But just like no one is going to write the next “Great American Novel” using ChatGPT, it shouldn’t be expected that using AI agents to vibe code an app is going to create the next Unicorn or even a sustainable side hustle.

What AI can do is compress development timelines. It’s now possible for a single developer to spin up 10 functioning prototypes in the time it would take to code one from scratch. A startup can validate more ideas before burning investor runway on a perfectly coded initial product that still gets thrown away. Debugging errors that previously required hours of Googling can now be explained and fixed in a tenth of the time. Suppose you need boilerplate code for authentication, payments, or deployment. In that case, it’s possible to use AI to generate it nearly instantly from its vast knowledge of existing, working code, leaving the developer to focus on actual logic. AI isn’t replacing fundamentals of coding; it’s creating leverage for developers.

Can you use ChatGPT to help write a novel? Absolutely, just don’t expect it to be on the NY Times bestseller list next week. In much the same way, vibe coding agents can help you go from idea to working prototype on your screen faster than ever before. But turning that prototype into production-quality code still requires fundamentals: debugging, refactoring, and writing clean, maintainable code.

Conclusion

Vibe coding is exciting, powerful, and even fun. It lowers the barrier to turning an idea into something you can touch. But vibe coding without core fundamentals is a trap. If you don’t have the skills to debug, refactor, and write the code, you’re not building software; you’re sketching prototypes. And that’s perfectly ok, as long as you know the difference and recognize the limitations.

The real advantage of AI coding lies in pairing it with your own fundamentals. AI compresses timelines, accelerates prototyping, and takes the tedious work out of writing boilerplate code. Having the fundamentals allows you to turn the speed of AI into something that’s usable in the real world.

If you’re serious about coding, but don’t know where to start, one of the best FREE places to learn is HarvardX: CS50’s Introduction to Computer Science . It’s a recording of Harvard’s CS50, one of the university’s most popular classes, and is rigorous while also being beginner-friendly. It will give you the foundational knowledge to not just vibe code, but to build software that lasts.