I used to describe myself as someone who can program, but isn't a developer. There's a real difference — and for a long time, that gap defined my relationship with code.
Where I Started
I was writing Arduino programs back in high school, then took a few programming classes in college, picked up some online courses along the way. Over time I built a solid understanding of the fundamentals — how to think in code, how to break a problem into smaller pieces, how to structure logic. The conceptual side came naturally to me.
What didn't come naturally was syntax. I knew exactly how loops worked, but every single time I needed to write one I'd have to Google it. I knew what I wanted to do — I just couldn't always remember the exact incantation to make it happen. At one point during a job interview, I Googled how to append an item to an array. I wasn't lost — I just blanked on the syntax. But try explaining that distinction under pressure.
The result was a particular kind of programmer: great at stitching together code, reading it, reasoning about it — but slow and friction-heavy when building from scratch.
Then Vibe Coding Happened
When AI coding tools became genuinely useful, something clicked for me. Vibe coding abstracted away the exact part I always struggled with. Instead of fighting syntax, I could describe the logic I wanted to implement — clearly, precisely, in my own terms — and the AI would write it out. Then I'd review it: check for bugs, spot security issues, verify the logic matched my intent. When something was off, I could go in and fix it myself because I could read and follow what was happening.
The productivity difference was immediate. I stopped losing momentum to trivial lookups. I stopped context-switching every few minutes to check documentation for things I already conceptually understood. The gap between what I could think and what I could build essentially closed. For me, vibe coding wasn't a shortcut — it was the missing piece that finally let my existing knowledge move at full speed.
"I used to say I can program but I'm not a developer. Vibe coding quietly made that distinction irrelevant."
But There's a Ceiling
Here's what I've noticed, though: vibe coding has limits, and those limits show up fast when the project grows in complexity.
I've watched people start ambitious projects with zero coding background, riding purely on AI assistance. For a while it works — the AI scaffolds the structure, generates the logic, keeps things moving. But as the number of moving parts increases, something breaks down. The AI starts making mistakes it can't catch, leaving gaps it doesn't flag, producing code that technically runs but quietly misbehaves. And when that happens, if you don't have the foundational understanding to read what's in front of you, you're stuck. You can't debug what you can't understand.
Most of those projects got abandoned. Not because the idea was bad — because the scaffolding collapsed and there was nothing underneath to hold it up.
The Ceiling Will Always Exist
AI will keep getting better at this. Models will handle more complexity, catch more edge cases, write cleaner and more reliable code. I have no doubt the ceiling will keep rising.
But I don't think it disappears entirely. At a certain level of complexity, programming stops being a science and starts becoming an art. It's the accumulation of intuition — the feel for when something is off before you can prove it, the architectural instinct that comes from having broken things and fixed them enough times to develop a sense of how they should fit together.
We can teach AI everything we're able to articulate. But there's knowledge that lives below the level of language — things we know how to do without quite knowing how to explain them. That's the part that's hard to transfer. And until it is, the humans who understand what's happening under the hood will always have the edge when things get complicated.
Vibe coding is a powerful multiplier. But like any multiplier, what it amplifies depends on what you bring to it. If the foundation is there, it's transformative. If it isn't, there's a wall waiting somewhere further down the road.