Learnings of a Reluctant Vibe Coder

Everyone's talking about "vibe coding." Despite I still cringing when I hear the term, the Internet has already decided that's what we should call it.

I'm not anti-AI at all. If anything, I'm leaning into AI-assisted coding more and more everyday. It feels more like an evolution of how we solve problems. Earlier in my career, Stack Overflow used to be my default helpline. I'll surely miss having that space where you ask humans and wait for thoughtful replies, but AI trades that for speed. The help shows up instantly. Not always correct, but fast enough to keep momentum.

People often compare AI to a junior developer and I think that analogy is fair. A good junior can take rough instructions, fill in gaps, and sometimes deliver more than you expected. They listen, infer, adjust. But the result still depends on how clearly you communicate intent.

GenAI behaves the same way. They respond to direction. Clear prompts tend to produce useful results. Messy prompts usually echo that mess back to you... sometimes confidently inventing details just to keep the conversation flowing.

I guess this is where the discipline comes in. AI isn't a genie. You can't be vague and expect magical results. In fact, vague prompting is often where hallucinations thrive. If you overload it at once, the model will try to stitch meaning out of chaos which isn't always what you want. That being said, communication still matters as much as ever.

What's interesting is how AI forces clarity. You have to articulate the problem, define constraints, and explain intent. Prompting becomes less about commanding a machine and more about organizing your own thinking.

Sometimes I finish writing a prompt and realize I already know the answer. AI just becomes the confirmation layer... a surprisingly good rubber duck.

I'll admit though that I'm a bit worried for the future. IDE assistants are incredibly convenient. They help with debugging, tracing unfamiliar code paths and rubber ducking. Somehow there's a quiet fear of over-reliance. When answers come instantly, it's easy to default to asking instead of understanding. That habit can slowly rust the brain we rely on as engineers. I don't want to be that engineer.

Maybe that's what makes me a reluctant vibe coder.

While my approach to AI is still evolving, here are some of my learnings:

Use AI with a learning mindset

Treat it as a collaborator, not a genie. If it generates code, read it, question it, and understand why it works before moving on. Ask questions on why one solution is better than the other. Challenge it. I have had instances where I asked if we can do X instead of Y because it is more efficient and it will respond with "Yes, you're right to question that...".

AI is great as a primer

When stepping into an unfamiliar domain, module or repository, it helps sketch a mental map before the deeper dive. Not perfect, but enough to reduce that overwhelming feeling when navigating a huge codebase for the first time.

Don't outsource your brain!

GenAI can feel like fast food for thinking because quick, convenient and easy to overconsume. The danger is not the tool but the habit of skipping the deeper understanding.

AI doesn't replace engineers but it definitely speeds up the development process. Less time hunting for syntax or boilerplate, more time defining intent and validating output. The pace increases, but so does the responsibility to verify what gets generated.

So yes, I vibe code now...just not blindly. Maybe being a reluctant vibe coder means moving fast with AI while keeping enough judgment to hesitate, just for a bit, before I hit merge to main.