The Art of Vibe Coding: Building Software by Feel, Not Just Function | Picasso Art
Essay 8 min read August 2026

The Art of Vibe Coding: Building Software by Feel, Not Just Function

Before there was a word for it, there was a feeling: the moment a program stops looking like a list of instructions and starts looking like a decision.

// pure feel // taste, applied // a decision

One line, drawn once — the same shape a habit takes when it stops being taught and starts being trusted.

Try it yourself, first

The Vibe Check

Before you read on — five snippets an AI pair-programmer might hand you mid-session. No context, no tests run yet. Just your gut. Keep it, or toss it?

Watch someone vibe code and it looks almost careless. They type a loose idea into an AI pair-programmer — “make the sidebar collapse smoothly, something like Notion” — and watch code appear faster than they could type it themselves. They don’t read every line. They run it, look at it, feel whether it’s right, and either keep going or throw it out and try again. No spec document. No architecture diagram drawn first. Just a kind of forward motion that trusts the next click more than the last plan.

The term spread through programming circles in 2025, popularized in a widely shared post that described giving in to the vibes, forgetting the code even exists. It stuck because it named something a lot of developers were already doing quietly and felt slightly guilty about: building software the way a painter blocks in a canvas, in fast, instinctive passes, rather than the way an engineer signs off on a bridge.

The old contract

For most of software’s history, the craft told a very specific story about itself: programming is engineering, and engineering means rigor. You write a specification. You design before you build. You prove, or at least test, that the thing does what it claims. The programmer’s whole professional identity was built on being the opposite of an artist — precise where the artist is intuitive, verifiable where the artist is subjective, boring on purpose because boring means safe.

spec-first still wins in the places where being wrong is expensive, not merely embarrassing

That contract wasn’t wrong. It was earned, line by line, by decades of expensive bugs. But it was also always a little bit of a performance — a way of borrowing the credibility of bridge-building for a discipline that, underneath, involved just as much taste and gut instinct as any other craft. Vibe coding doesn’t invent the instinct. It just stops pretending it isn’t there.

Feel is not the absence of a plan

The easy criticism of vibe coding is that it’s undisciplined — that skipping the spec means skipping the thinking. That criticism misunderstands what feel actually is. A jazz musician improvising a solo isn’t skipping music theory; the theory is why the improvisation works. A portrait painter mixing a skin tone by eye isn’t guessing; the eye has been trained by ten thousand earlier mixtures that didn’t look right until they did.

Vibe coding runs on the same kind of trained instinct. The person prompting the AI is fast precisely because they’ve spent years doing it the slow way first — reading other people’s code, debugging their own mistakes at 2am, learning what a well-shaped function actually feels like before they could name why. The AI now supplies the syntax. The human still supplies the judgment. That judgment is not new. It’s just been promoted — from something you exercised occasionally, during code review, to something you exercise constantly, in real time, on almost every line that appears on screen.

Vibe coding doesn’t remove taste from programming. It removes almost everything except taste. — on what’s left once the typing gets automated

What the eye is actually doing

Sit behind someone vibe coding well and you can watch the judgment happen in real time, even if you can’t always name it. They glance at a generated function and something in them either relaxes or doesn’t. They’re reading for a handful of things almost simultaneously:

  • Does this read cleanly at a glance, the way a well-set page reads before you’ve consciously parsed a single word?
  • Does the error handling look considered, or does it look like the AI assumed the happy path and moved on?
  • Do the names tell the truth — does getUser actually just get a user, or does it quietly also log them out?
  • Does the shape of this file match how the feature is actually going to be used six months from now?

None of that is really a technical checklist. It’s an aesthetic one wearing a technical costume — the same kind of instant, whole-object judgment a menu designer makes glancing at a page layout, or an editor makes reading a paragraph’s rhythm before checking a single fact in it. The vibe coder isn’t skipping quality control. They’ve just moved it from a later stage, done by someone else, to the same instant the work appears.

taste is pattern-recognition that’s earned the right to move fast
// what “feels right” is doing here isn’t mystical —
// it’s a fast comparison against thousands of examples
function handleCollapse(state) {
  // a vibe coder reads this and knows in under a second
  // whether the transition will feel like Notion’s, or not
  return ease(state, { duration: 180, curve: ‘outQuad’ });
}

Where the feel runs out

None of this means feel should govern everywhere, and the honest version of this essay has to say so plainly. There are parts of a codebase where a plausible-looking wrong answer is the most dangerous kind of wrong answer there is — precisely because it looks fine. Authentication. Payment logic. A database migration that quietly drops a column nobody remembers needing. An AI will write a broken migration with exactly the same confident, well-formatted output it uses for a correct one, and a tired eye scanning for vibes alone will wave it through.

confidence in the output has never once been evidence that it’s correct

The craft, then, isn’t choosing feel over rigor. It’s knowing which rooms in the house you’re allowed to redecorate by instinct, and which ones still need a level and a plumb line. A chef can improvise a sauce to taste every night of the week and still weigh flour to the gram for a bake, because yeast doesn’t negotiate. Good vibe coding carries the same split personality — loose and fast in the interface, exacting and slow anywhere a mistake would be silent.

The new discipline

What’s actually emerging isn’t the death of programming discipline — it’s a new one, with its own developing rules that don’t look like the old ones. The prompt is a sketch, not a spec. The first output is a rough draft, never a final one. And the real work has shifted from writing code to reading it — fast, constantly, with a trained and slightly suspicious eye.

That shift has a cousin happening one field over. Visual designers went through something similar the moment AI image tools got good: the job stopped being “draw the thing” and became “generate fifty things and know, instantly, which one actually has it.” We’ve said elsewhere on this blog that art was never really about the museum — it was about intention, about someone deciding deliberately what goes where and why. Vibe coding is that same decision, made at the speed of a keystroke, by someone who has finally stopped pretending their instincts weren’t part of the job all along.

Nobody in a standup is going to call this art out loud. But watch a good vibe coder work for an afternoon, watch what they keep and what they throw away and how fast they know the difference — and the line between doing something and doing it on purpose is exactly as visible here as it is everywhere else we’ve looked on this blog.