What vibe coding taught me
I've been vibe coding for a few months now. The machine writes, I steer. It's fast, it's fun, and it fools you constantly. So I wrote down the things I keep having to relearn. None of it is clever. It's the boring stuff that's easy to know and hard to do.
Guess firstβ
Before you read the code, guess what it does. Then read it. The gap between your guess and the truth is the exact spot where you were fooling yourself. That gap is the whole lesson. If you skip the guess, you skip the lesson β you just nod along and feel smart, which is the most dangerous feeling there is.
Close the laptopβ
If I can't explain a thing with the code closed, I don't understand it yet. I might have shipped it. It might even run. But "it runs" is not knowing. Knowing is being able to say, out loud, to a bored friend: this is what happens, and this is why. Can't say it simply? Then I don't know it β I've only met it.
The right question at the end of the weekβ
Not "how much did I ship?" That's easy to measure and easy to game. The honest question is: did I understand more this week, or did I just ship more? You can produce a mountain of working code and end the week dumber than you started, because the machine did the thinking and you did the accepting. Shipping is the exhaust. Understanding is the engine.
Fix depth where the blast radius is bigβ
Not everything deserves the same care. A wrong color on a button is a shrug. A hole in your authorization or your tenant isolation is a catastrophe that arrives one quiet Tuesday with someone else's data on the screen. So spend your deepest attention where an error ripples the farthest β auth, isolation, money, data. The UI can wait. Nature doesn't grade on how pretty the front end looks.
The tool is a tutor, not a ghostwriterβ
The AI is happy to hand you a finished answer. If you take it and move on, you learned nothing and you own a black box. Make it teach instead. Ask it why, ask it what breaks if I change this, argue with it. A ghostwriter leaves you with words you can't defend. A tutor leaves you smarter than it found you. Pick which one you're using, every single time.
The test that never liesβ
Here's the one question that catches me every time: if I change this, what breaks, and where does it ripple? If I can answer that, I understand the system. If I can't, I've been decorating a machine I don't understand. There's no faking this one. The code will tell you the truth eventually β better to ask it now than in production.
Friction is the cureβ
This is the strange part. The problem with AI isn't that it's dumb β it's that it's so smooth. It removes all the friction, and friction was where the learning lived. The struggle to name a thing, the fight to make it compile, the slow read of a stranger's code β that was never the tax on the work. That was the work. So I've started adding friction back on purpose: guessing before reading, explaining before shipping, changing something just to see what screams.
The first principle is that you must not fool yourself β and you are the easiest person to fool. The machine just makes it faster.
