Vibecoding is skeuomorphic because code generation is slow

Why exactly do vibecoding apps stream their decision-making and code? Because 1/ They’re optimized for a temporary state of affairs where code generation isn’t instantaneous and 2/ Low-ish value customers are being over-served

The best analogy for vibecoding apps: AI models are the iPhone camera and one or more apps are Instagram. Everyone, including the creative but unskilled, will be ready to create things they never would have been able to create before.

I’m here to point out that while that may be largely true, we’re still stuck in an old, skeuomorphic paradigm when it comes to coding, such that the future doesn’t look merely like more of the present.

1. Technical people use no-code tools better than non-technical people

No-code tools promised something similar to the Instagram + iPhone camera bundle: You don’t need technical expertise to build internal tooling. The problem is that, at least in my experience, technical people are much better at using no-code tools than non-technical people are.

No-code saves technical people time deploying things internally more than it does empowering non-technical people to build on their own. This is selection bias: The types of people who are good at building tools now would have already found it irresistible to learn to code and understand how applications work. Similarly, the types of people who are good at making games now would have already learned Scratch, Phaser or Unity.

2. It’s revealing that vibecoding tools show so much code

Maybe vibecoding is the final realization of no code. In other words, UI’s for creating flows weren’t good enough; you need inference and conversational UI’s to extract the architecture from a no-coder’s head and the creativity and expertise of an LLM to construct the application.

I’d proffer a different idea consistent with the high degree of churn we see today in vibecoding and similar AI creation apps: There’s a lot of pent-up FOMO from people who didn’t get to participate in the upside of the app explosion nor make the money one could have made being an engineer over the last 15 years. Showing code being written and deployed in a chat is something of a painkiller for that FOMO. It elicits the feeling, I’m finally writing code, which is one half of the reason why vibecoding apps stream their output.

This is not what productivity looks like

This is productivity muzak

The demand for photography via Instagram had nothing to do with a fantasy of becoming a photographer. People were just constantly seeking novelty and fun as consumers on their iPhones. Nowadays people are now constantly seeking alpha; vibecoding apps offer the fantasy of being a technical founder.

3. Conversational UI’s might not be better but they are more comfortable

Julian Lehr asked, skeptically:

I’m not entirely sure where this obsession with conversational interfaces comes from. Perhaps it’s a type of anemoia, a nostalgia for a future we saw in StarTrek that never became reality. Or maybe it’s simply that people look at the term “natural language” and think “well, if it’s natural then it must be the logical end state”...I’m here to tell you that it’s not.

...Natural language is great for data transfer that requires high fidelity (or as a data storage mechanism for async communication), but whenever possible we switch to other modes of communication that are faster and more effortless. Speed and convenience always wins.

Julian is right: Conversational UI’s are not the fastest nor the most convenient way to do things. I was somewhat off-the-mark in a popular blog post on this topic a few years ago, but there’s one other aspect of conversational interfaces beyond speed and convenience that’s inescapable: They’re exceedingly comfortable. Chatting on an iPhone is still the most comfortable thing in people’s digital lives even though it’s slower and lower fidelity than an alternative. It’s why people text instead of calling. It’s why they prefer iMessage to mediate their conversations: You can do something more quickly in iMessage than you can do anything else elsewhere, which is comfortable.

This relates to the selection bias point above: Vibecoding appeals to people who find it a very comfortable way to participate in the app economy. People genuinely interested in productivity are generally already technical, write informed, opinionated specs, and use command-line runtimes to leverage AI for productivity.

The main reason vibecoding UX is the way it is now

There’s yet another reason why vibecoding apps are conversational: They’re so slow that they need to entertain you while you wait. The stream of code is productivity muzak.

By the standards of pre-AI coding, it’s preposterous to call AI code generation slow, but consider this thought experiment: What if it were instantaneous? Imagine typing a request for an app and it just appears. You’d lose the opportunity to give the user an artificial IKEA effect, which will change who wants to use them.

Were code generation instantaenous, it’s obvious that instead of using a conversational UI in a vibecoding app, you’d type something into Figma and edit it on a GUI-enriched canvas, similar to how you search for and then edit templates in Figma already. Why show code at all?

Look at how kids are remixing Flappy Bird in Reddit’s new games product. You see the row of tiny tools on the bottom? That’s close to the ideal way of editing a game on a phone, uninspiring as it may be.
Flappy Goose How to edit a game on a phone

To revisit the iPhone camera + Instagram analogy: the iPhone camera doesn’t stream the bytes it writes to a HEIC file, nor does Instagram stream the bytes it’s sending over the wire for the 750ms it might take to upload the photo. Professional photographers don’t care how their photos are written to disk, let alone want to watch it print on their screen.

Today's vibecoding apps streaming their Javascript outputs is too low level of an abstraction. Ask yourself, why does it stream Javascript and not the bytecode that Javascript compiles down to? Because the skeuomorphism elides the fact that vibe coding cycles take a minute.

One more skeuomorph

In this thought experiment where code generation is instantaneous, the term “app” doesn’t totally make sense for what’s exported from a vibecoding session. “Apps“ imply something freestanding and enduring, whereas the speed with which they’ll eventually be created contradicts the singularity of labor and love we’ve come to expect from apps.

We’re not far off the day when software will become indistinguishable from media or content, what we once called “multimedia”. Today we all produce a lot of photos and videos that you can’t interact with; in the future some portion of that stuff will be more clickable.

Addendum

If we're in a hype cycle of AI right now it’s because the super extraordinary investment in AI is outstripping the still extraordinary demand for generative AI. Exceptions: Prosumers are obviously consuming and paying for AI and Replit appears to benefit from a rapt audience of the young, quick twitch, and technically skilled.

Thanks

This post was inspired by conversations with and posts from Peter Zakin, Julian Lehr, Nathan Baschez and my doesn't-have-an-online-identity partner on an upcoming AI app for fun-loving plebes.

¯\_(ツ)_/¯