TNS
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
NEW! Try Stackie AI
AI Engineering / Developer tools / Software Development

Vibe Coding and You

Vibe coding is messy, imprecise, and full of landmines. But it also opens up development to people who would otherwise be shut out.
May 6th, 2025 9:00am by
Featued image for: Vibe Coding and You
Photo by Simon Abrams on Unsplash.

Experienced developers shudder at the thought of vibe coding, but are their chills misplaced? Vibe coding is a new development paradigm.

The term itself is unfortunate. It suggests a kind of breezy, seat-of-the-pants approach to software, like you’re just feeling your way through the stack. In a sense, that’s accurate. While the concept isn’t new — there have always been ways for non-engineers or novice programmers to piece together working (or semi-working) code — AI has made the ability to build a tool from stem to stern surprisingly easy. The combination of natural language prompts and well-trained models means that, for many use cases, you don’t need deep knowledge of syntax, architecture, or system design to produce something that runs.

The results of vibe coding sessions are, obviously, variable. A skilled writer or domain expert with a little technical literacy can prompt an LLM like ChatGPT or Replit’s Ghostwriter to code a landing page, a basic automation script, or even a functioning web app in under an hour. Ask ChatGPT to give you a Bash script to find the biggest file on your hard drive, or a Python Flask app that generates random inspirational quotes for Instagram, and you’ll have something working in minutes. Will it be beautiful? No. Will it meet real-world standards for security, scalability, or reliability? Definitely not. But will it give you something to react to, iterate on, or show to someone else? Yes, and fast.

In fact, I treat LLMs like a new form of StackOverflow. Instead of typing in “how to log in PHP,” I ask for the logging code and paste it in. This is where we hit a few snags, however, and the results are often not pretty.

Where It Breaks Down

It’s when you try to do anything more complex — manage state, integrate real-world APIs, handle authentication, maintain data integrity, or prevent users from destroying your app with one malformed request — that things fall apart. And this is where professional developers step in. Vibe code can scaffold a project, but it can’t structure it. It can sketch a feature, but not design the system around it. The gap between “code that runs” and “code that scales” is wide. That gap is where developers live.

More importantly, vibe code lies. LLMs hallucinate imports, invent syntax, and confidently spit out logic that doesn’t account for edge cases. They don’t think in constraints, dependencies, or performance. They don’t know what they don’t know. So while a vibe-coded app may look functional on the surface, the moment it’s under load, or required to integrate with a real payment gateway, or expected to persist user data safely — it breaks. Badly.

One huge issue? Many LLMs have out-of-date information on various frameworks, which means you’ll be coding for frameworks that are a few versions behind. This results in extreme frustration if you don’t know what’s happening and even trying to debug the code results in more errors. In short, all vibe coders need to know that the code they’re using could be insecure, outdated, and just plain annoying.

Why Vibe Code at All?

That said, vibe coding does have a place, especially for people who are trying to move fast without building permanent systems. For non-technical founders, early-stage PMs, or designers trying to demonstrate how a tool might work, vibe coding can replace tedious spec writing and rough Figma mockups with something that actually compiles.

It’s also valuable for sketching business logic. Instead of writing out a convoluted feature doc or use-case matrix, you can say: “I want a form that lets users upload a PDF, extracts the text, summarizes it, and emails them the result,” and see how the machine translates that into runnable steps. The result won’t be production-ready, but it will expose assumptions, surface edge cases, and give collaborators something tangible to push against.

Frameworks help here. Personally, I like to use Laravel for quick-and-dirty web apps. It has enough structure to encourage clean-ish code, a big enough community that LLMs are well-trained on its patterns, and just enough guardrails that vibe-coded logic doesn’t instantly fall apart. I can prompt out a controller, generate migrations, set up a basic Inertia view, and get something interactive up and running before I’ve had my second coffee. That’s not trivial. That’s a different kind of velocity.

When Should You Vibe Code?

Vibe coding works well when you need to:

  • Build a quick proof-of-concept or demo.
  • Generate scaffolding that will later be rewritten.
  • Explore business logic through code.
  • Teach yourself new concepts by watching how the machine assembles code blocks.
  • Move forward despite ambiguity.

It’s especially useful in early product conversations. Trying to convey a feature idea? Vibe code it. Want to show a stakeholder what the login flow could look like? Vibe code it. Need a starting point for a script, test suite, or parser? Vibe code it.

When Shouldn’t You Vibe Code?

Vibe coding breaks down in high-stakes environments. Don’t use it when:

  • You’re touching production systems.
  • You need airtight security (especially around auth or financial data).
  • Performance, latency, or scale matter.
  • You need real architectural thinking or maintainability.
  • You’re doing anything that requires compliance or auditability.

And don’t mistake vibe code for a finished product. If it compiles, great. But that doesn’t mean it’s done, or good, or safe. Vibe code is scaffolding, not structure.

Vibe coding is messy, imprecise, and full of landmines. But it also opens up development to people who would otherwise be shut out. That’s not something to dismiss. It’s something to manage.

For developers, the shift is clear: You’re not just writing code anymore—you’re shaping prompts, reviewing output, and setting boundaries for what the machine builds. You’re not being replaced; you’re being recast as editor, fixer, and system architect.

The real challenge isn’t that non-engineers are coding by vibe. It’s that engineers have to get better at absorbing that mess and turning it into something real. If we do that well, vibe coding doesn’t have to be a threat. It can be the first draft of something better.

Group Created with Sketch.
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.