@RealGeneKim and I ran into a surprising vibe coding anti-pattern last week: The Hot Hand.
For context, we both wound up screwing up our own production databases using vibe coding. We had just finished a book on vibe coding (it went to the printer last week!) so naturally we were curious to know how we, who are presumably experienced vibe coders, were such unbelievable dumbasses.
We've noticed we tend to make similar-looking new mistakes every few weeks, which I think suggests we're on the cutting-edge frontier of vibe coding practice. We make mistakes, learn from them, and move on to new mistakes. We get together for a few hours a week and distill our learnings. Up until a week ago, they went into the book. Now we share them on a podcast on YouTube. Last week was when we discovered the Hot Hand.
Digging into our database vibe coding fiascoes, we had the disturbing realization that there is an illusion at work, one which increases in strength as you get better at vibe coding. The illusion is that as the AI's performance improves, it appears to be understanding you better. In other words, it starts to feel like it "gets" you.
If I say to my wife, "Hey baby, this slot machine gets me. I've been winning and winning. I know exactly how to pull the lever. Let's plop down ten grand!" then it sounds pretty stupid.
But if I say to my database, "Hey baby, Claude gets me. I've been winning and winning. Let's update all our admin passwords!" … well that sounds pretty stupid too, but we did it anyway. Well that was mine. Gene did some equally dumb thing. Details aside, both of us had committed the cardinal sin of asking the AI to perform a circus stunt without a safety net.
When I was a little kid there was a TV documentary about the Flying Wallendas, a circus troupe that performed without a safety net with highly predictable results, which I didn't get to watch, but still gave me nightmares. And then I got to see Karl Wallenda's final 1978 act, which you can now watch for free on YT, for even more nightmares.
It's safe to say that I've been ingrained since early childhood to avoid walking tightropes between skyscrapers. So why on Earth would I do it with a database? There's no Undo button, unless you're willing to restore from a backup snapshot, which is almost never optimal. Coding is different: it has Git as a backstop, an immutable ledger of every change, and from that ledger you can recover from any disaster. But production rarely has such reliable recovery mechanisms, and moreover, when you're trying to recover in prod, someone's usually breathing down your neck.
In other words, there's no reason we should have tried doing production operations with a coding agent. I'm glad it failed. It would have been much worse for us long-term if we had succeeded on the first try, because that first impression would have biased us incorrectly and set us up for larger failures later. It's great that we fell on our faces and were able to learn from it early. And now you can, too!
But why did we do it, for real?
When things go really wrong with vibe coding, every week, Gene and I like to dig into what our frame of mind was at the time. We found that in this case, we had been mistaking experience for rapport. That's the illusion: these two very different things look almost identical in the new world.
To illustrate, let's say you get a new helper intern named Casey. At first Casey is not very good at their job, so you have to give them lots of advice and instructions. Over time, Casey makes fewer mistakes and demonstrates improved understanding of the work. You are able to prompt them less and less. Casey even goes to school and gets job training, getting noticeably more proficient every few months. And your workstream with Casey is gradually stabilizing – your shared documents and communications are ironed out and only need updating every few days to weeks. On the whole, Casey is working more independently and making mistakes less frequently – this is measurable and inarguable.
So does Casey "get" you? Are you building a rapport with Casey? Can you trust Casey? Is there a bond of understanding being established? It sure feels like it. If Casey were a human, then it's almost certain that yes, Casey is in fact understanding you (and the work) more deeply all the time.
But here, Casey is actually Claude, wearing a Casey mask, and Claude is a fuckin' slot machine, not a human. Every query is a pull of the lever, with potentially infinite upside or downside. It's addictive, sure. Lots of dopamine and adrenaline, and what's more, over time, your outcomes are even improving. But your slot machine doesn't "get" you. You don't have a beautiful rapport with it. You're just getting better at prompting, and getting consequently luckier with your pulls. Any bond you might perceive there is illusory.
You have to treat using LLMs like working with dangerous snakes, or tigers. You can do your act with them for months, years, but any given day may be the one where they bite you. Your experience isn't armor. The only protection you're going to get is whatever safety nets you put into place yourself, before you start.
Again, vibe coding has Git as its built-in safety net, and it's a pretty reliable one. But vibe coding changes in production is generally irreversible; you can only roll forward. And production changes can have life-and-death consequences. Gene's and my databases were small and relatively unimportant, so the risk was OK there. But it's possible for someone to vibe code their way into a hospital shutting down or some equally catastrophic outcome.
It's safe to say that vibe coding is almost never suitable for making production changes to live systems, even for small or innocuous changes. Even if you have a big reset button. You should have one anyway, whether you're vibe coding or not. But unlike Git, you should try to avoid relying on your production backstops and failsafes. Paraphrasing astronaut Frank Borman, you should be using your superior judgment (only vibe code when there's an instant Undo) to avoid having to use your superior skill (vibe coding your way out of the mess you made.)
So there you have it, our finding for the week: The Hot Hand. Your successes with vibe coding can seduce you into thinking that you have a relationship with the LLM that simply doesn't exist. We learned that the AI tiger may learn how to do your act, but it is never tame. Don't interpret past success as implying future results. You should always work under the assumption that your very next query could be the one that takes you down. Make sure there is a safety net.
And slow your roll! Vibe coding is a fast car. You will drive it too fast at first. The temptation to just let the AI do its thing is almost irresistible--especially after it starts doing the right thing for hours at a time, or for dozens to hundreds of queries in a row. Even so, you still need to take it slow, and assume each subsequent step might head off a cliff.
If you want more insights and techniques for vibe coding effectively in professional settings, check out our book, Vibe Coding (available for preorder on Amazon), and our podcast on YouTube: Vibe Coding with Steve and Gene. See you there!