Vibe coding is building software by telling an AI what you want and letting it write the code. You describe the outcome, it produces the thing, you run it, you tell it what to change. You're directing, not typing.
It's a real shift, and the appeal is obvious. Someone who's never written a line of code can suddenly ship a working app. Someone who does write code can move way faster. But how well it goes depends entirely on what you're building, and that range is bigger than people think.
Easy: a one-trick tool with no data and no users
Start here. A countdown timer, a tip calculator, a color picker, a little browser game. One file, runs in a browser, no database, no logins, nobody else ever touches it. You describe it, the AI writes it, you open it. If it's wrong, who cares — it's one screen.
This works great. The AI almost never blows these, and when it does, one more sentence fixes it. A total beginner can be productive here inside an hour, imho.
Medium: a multi-screen app that remembers things
Now it gets more interesting. A task tracker, a recipe box, a small budget tool — something that saves your data between visits. Multiple screens, data getting stored and loaded, a layout that has to survive on a phone.
Still very doable. But the questions pile up fast. Where's the data living? What happens when two screens disagree about what's true? What happens when the file gets big? The AI makes those calls for you, and usually they're fine — but you're now signing off on decisions you might not understand. A non-developer won't always see the one that's going to bite them in three months, such as assuming everything AI writes is secure and wont get hacked (https://rickysays.com/posts/security-audit-your-vibe-coded-app/).
Hard: a real app with accounts, payments, and other people
This is the deep end. Real users logging in. Passwords. Some of them are paying you. Their data has to stay separate from each other and locked away from everyone else. There's an admin side, it sends email, and it has to keep running while you keep changing it.
Here's the trap at this level: the gap between "looks like it works" and "actually works" is huge, and you can't see it. An app can log people in, take their money, and render every screen perfectly while being wide open. The AI will hand you code that runs. Whether it handles sessions right, stores passwords safely, keeps one user's data away from another's, and validates input — that's a completely separate question, and clicking around the finished app will not answer it for you.
Here's my developer environment for Vibe Coding. I have root level access to a VPS (virtual private server) running on Bluehost and I've given full access to Claude so it can do pretty much anything it needs to do, including pushing code to staging (https://staging.rickysays.com/ for example) and then shipping it to the production site you're reading this on after I've reviewed and verified the changes on staging.

Here's an example of why developers are still needed
I had an AI build a subscription app with Stripe doing the payments. Customer pays, Stripe bounces them back to a success page, the success page flips their account to active. Worked perfectly. I could sign up, pay, watch it go live. From the outside, a finished payment flow.
It was also broken in a way that mattered. The success page activated the account off a subscription ID sitting in the URL — and never checked that the subscription actually belonged to the person logged in. So anyone holding any valid Stripe subscription ID, including their own from some unrelated service, could paste it in and turn their account on without paying me a dime.
Nothing about using the app would ever show you that. Every screen behaved. You'd only catch it if you already knew a payment confirmation has to verify ownership and not just validity — and knew to go hunting for that exact check. The AI doesn't hand you that knowledge. It comes from having built things before and knowing how this kind of feature gets attacked. The fix was tiny. Knowing it needed fixing was the whole job.
So who's it for?
Vibe coding genuinely drops the barrier to building software, and that's a good thing. For simple tools and personal projects, anyone should be doing it. But the difficulty doesn't ramp up gently. The second other people, their data, and their money are in the picture, the job quietly stops being "write the code" and becomes "decide whether the code is right." The AI produces. The person decides. And at the hard end, that person needs to have done it the old-fashioned way at least once.
Vibe coding changes who can build software. It hasn't changed who should be trusted to ship it.
Leave a comment