There’s been a lot of conversation lately about vibe coding—the idea that you can describe what you want, let an LLM do the heavy lifting, and ship software without really getting into the weeds.
To be clear, generative AI has gotten much better. Tools like GitHub Copilot are genuinely impressive. But better tools don’t remove the need for understanding—they just raise the stakes when you don’t have it.
A recent study making the rounds claims Gen Z may be the first generation “less capable” than their parents. I’m not interested in dunking on an entire generation, but I do think the underlying concern is worth talking about: what happens when we outsource too much thinking to our tools?
I Grew Up Fixing Things
I grew up in a household where things got fixed, not replaced.
My dad grew up on a farm. If something broke, you didn’t run to the store—you figured it out. That mindset carried forward. I learned how to change a tire, replace brakes, use power tools, and make things work again.
Today, I have a machine shop at home. I fix broken things. I make new ones. I know how stuff works because I’ve had to take it apart and put it back together—sometimes more than once.
That mindset didn’t stop when I became a software engineer. Code is just another system. You build it. You fix it. You own it.
AI as a Mechanic, Not a Chauffeur
Relying on AI to write all your code for you is a lot like dropping your car off at a random mechanic and coming back later hoping everything went well.
Maybe it did.
Maybe it didn’t.
And when something goes wrong… then what?
That’s why vibe coding, as a philosophy, doesn’t sit right with me.
I don’t expect every developer to understand every line of code at all times—but you do need to understand what matters, especially in critical paths, security-sensitive areas, or systems you’ll be responsible for long-term.
How I Actually Use AI
I use AI the same way I use my mechanic—the one I’ve trusted for over 25 years.
When I bring my car in:
- I already have a pretty good idea what might be wrong
- We talk about what he’s going to look at
- When I pick it up, he explains what he did
- And I ask questions if something doesn’t make sense
That’s exactly how I use GitHub Copilot.
I already understand the problem.
I usually know how I would fix it.
Copilot is like a supercharged IntelliSense that saves time and keystrokes.
But—and this part matters—I read the code it writes. I question it. I adjust it. If something feels off, I know what to look for because I understand the system.
That’s not outsourcing thinking. That’s using a power tool.
Where Vibe Coding Might Be Fine
Are there cases where pure vibe coding is acceptable? Sure.
- One-off scripts
- Exploratory analysis
- Throwaway log parsing
- “Let’s see what the data says” type work
If it breaks, no one’s hurt and nothing catches fire.
But for production systems? For software I’m accountable for? For code that impacts customers or revenue?
Not a chance.
Tools Don’t Replace Craft
Power tools didn’t eliminate the need to understand carpentry.
CNC machines didn’t make machinists obsolete.
And AI doesn’t remove the need to understand software engineering.
If anything, it makes understanding more important, not less.
Because when something breaks—and it will—you don’t get to tell your boss or your customers:
“Sorry, the AI wrote it.”
If you don’t read the code your AI generates, you’re not engineering—you’re just hoping. And hope has never been a great production strategy.

