So Now It's Called "Vibe Coding"

So Now It's Called "Vibe Coding"

Tutorials ai coding assistants cursor programming workflow vibe coding

I've been putting off writing about this because I figured everyone else on the internet would beat me to it, and they mostly have. But it's Valentine's Day, I'm home alone with a laptop and a pot of coffee gone cold, and I keep thinking about a tweet from a couple weeks back.

Andrej Karpathy, the guy who used to run Tesla's autopilot team and was one of the founding folks at OpenAI, posted something on the 2nd about how he barely writes code anymore these days. He just talks to the AI, accepts whatever it spits out if it looks like it runs, and calls it "vibe coding." He wasn't being fully serious, I don't think, but the phrase stuck immediately. Within days it was everywhere, on every dev Discord I'm in, in three separate newsletters I subscribe to.

Here's my complaint, and it's a small one: I don't think the thing Karpathy described is actually new, it just finally got a name. I've been doing some version of this since GitHub Copilot came out of beta, and honestly since way before that if you count Stack Overflow copy-paste as the original vibe coding. What changed is that the tools got good enough that you can go whole files without opening a reference tab.

Anyway. I want to talk about how I actually use this stuff day to day, because the discourse keeps skipping past the boring practical part in favor of arguing about whether it's going to replace programmers.

My actual setup

Cursor for anything that's a real project (it's $20 a month for Pro, which I resisted paying for about four months out of pure stubbornness), and Claude in a browser tab for anything conversational: architecture questions, "why is this regex not matching," that kind of thing. I dropped GitHub Copilot back in the fall. Not because it got worse, I just found I wasn't opening VS Code as much once Cursor's autocomplete got its hooks into me.

A few things I've learned that nobody tells you upfront.

Read the diff every single time. This is the boring advice and everyone gives it and almost nobody consistently does it, myself included some nights. Two weeks ago I let a generated function silently swallow an exception because the model decided a bare except: pass was a reasonable way to handle a JSON parse error. It ran fine. It just also ate a bug I didn't find until Sunday morning, when a cron job had been failing quietly for four days straight.

It's much better at code you already understand than code you don't. If I ask it to write something in a language I know well, I catch the weird choices immediately, the same way I'd catch a typo in my native language. If I ask it to write Rust, which I'm mediocre at, I have no instinct for what's idiomatic versus what's just plausible-looking. That gap is where the actual risk lives, not in whether the code compiles.

The vibe part is real for prototypes and mostly fake for anything you'll maintain. For a one-off script to rename four hundred files or scrape a table off some webpage, sure, vibes all the way, I don't even look that closely. For the actual guts of a project I plan to touch again in six months, I still write most of the logic myself and use the AI more like a very fast, occasionally wrong junior dev doing the parts I'd outsource anyway: boilerplate, test scaffolding, docstrings I'd never write otherwise.

The Paris thing, briefly

There was also a whole summit in Paris this week, some AI gathering where the US basically told a room full of European regulators not to slow things down, and the US and UK ended up not signing whatever joint declaration the rest of the room agreed to. I don't have a ton to add there that a hundred bigger outlets haven't already said better than I could. Governments move slow, companies move fast, that's been the pattern since I started writing this blog back in 2011 and I don't expect one February week to change it.

What I keep coming back to is smaller than any of that. The tools are genuinely useful. The marketing language wrapped around them is mostly noise. And the failure mode isn't some dramatic robot uprising, it's a swallowed exception in a cron job that nobody notices until the weekend. Call it whatever you want, vibe coding or just coding with extra steps. I'm still reading my diffs, and I'd suggest you keep reading yours too.