Vibe coding: What is it good for? Absolutely nothing (Sorry, Linus)

5 min read Original article ↗

Opinion It is a truth universally acknowledged that a singular project possessed of prospects is in want of a team. That team has to be built from good developers with experience, judgement, analytic and logic skills, and strong interpersonal communication. Where AI coding fits in remains strongly contentious. Opinion on vibe coding in corporate IT is more clearly stated: you're either selling the stuff or steering well clear.

The reasons are simple. Code generation is sold on promises of fast results from natural language prompts, not requiring specialist knowledge of how code actually works. This much is somewhat true, and impressive two-minute demos, if well chosen, are certainly possible. In this respect, vibe coding is much like the low-code/no-code movement that's been around for 30 years.

Vibe coding really falls down thereafter because it is non-deterministic. Low/no-code platforms have consistency in how their interface responds to user input. Iterative tweaking works, from fiddling with fonts to restarting with a completely new approach. Vibe coding may give you different results over time for exactly the same prompts. Trying to tweak results is highly dependent on how the AI chooses to interpret your requests, and on how strongly it's attached to its original idea. Which it often is.

Let's not get started on how you maintain a code base that no human has ever understood when your tools are constantly mutating. If there aren't many production apps under the low/no-code banner after 30 years, the prospects for vibe coding are dim indeed. Even if vibe coding fulfills its most basic function, of quickly producing a prototype model to explore ideas, it will hit the principle that prototypes can't be killed, instead mutating into monsters. Once something looks functional, the pressure from outside to build on it immediately is usually immense. That's bad enough in any environment, but the vibe really won't dig it, man.

In one respect, though, vibe coding does have an attractive attribute that is difficult to find elsewhere. For the first time since instant-on home computers that fell straight into a BASIC interpreter, it's possible to make things happen with a bit of typing as a very naive user. Linus Torvalds sees this as a saving grace, comparing it last week to the days of typing in programs from the back of computer magazines. That's not wrong – if you were there, you'll remember how nightmarish it was to fix logic or printing errors in hundreds of lines of gnomic code – but it almost completely misses the point.

BASIC met criticisms similar to vibe coding back in the day, being seen as encouraging bad programming practices and unstructured, impenetrable, unmaintainable code. Elder god Edsger Dijkstra argued in "Go To Statement Considered Harmful" that this was the progenitor of this critique, and the phrase resonated down the decades. Which is like saying that children who pick up a musical instrument to see what they can do, or who are taught by teachers with no formal training, will make terrible music. Often, that's true. The thing is, that's where most good musicians start. It's where music starts. If you find you love it, you get better. Same with BASIC.

Vibe coding has no such path. That's not its fault, not entirely. To get to the "doing something useful" stage in a modern computing environment means producing complex code with APIs and structures and no end of confectionery around the core logic. Hacking away at iterative prompts won't build the internal framework of understanding that building code does, and without the dopamine hit of sudden understanding that fuels so many early coding experiences, the process won't reward the autodidact to keep going for more of the same.

Vibe coding that doesn't code would be a much better idea. Stuff that suggests where to start, what to learn, and helps build an environment where you can get results that quickly and clearly depend on discovering and trying out ideas. These tools exist already. They're called books. They're called tutorials.

It would be nice to be instantly productive while learning the ropes, and no tutorial or book will offer the specificity of a unique, innovative outcome. It's not clear that LLMs could do this either reliably or at all, but it would be an interesting experiment. Fortunately, there is a way to do this, and it's called joining a supportive and experienced team prepared to mentor you and feed you just the right tasks to build your skills.

If you don't know much about the realities of coding, vibe coding sounds great. That's one of generative AI's biggest risk factors, the ability to inspire confidence independent of reality. Likewise, if you remember the days when you didn't know much about coding, vibe coding sounds like a good way to help others take the same steps you did.

Both of these overlook how much of learning and coding is about motivation, reward, comprehension, understanding the future, and most importantly doing all this amid other people. That's the real vibe, man. ®