As you may or may not know I've been running a series of RevOps and AI Round Tables.
And I am not surprised by the level of vibe coding that's going on, really. When you make something easy, people start doing it. Especially when those people were not having their needs met by what was previously in the market
So that's good, and I love that people are really getting out there and starting to build the things that they truly need, because that was always what was gonna happen.
And it's great that we have tools like Claude Code that can let us do that.
What I am concerned about, and I'm not even sure I know how to voice the concern specifically in a way that will make sense to most people, is the amount of vibe coders who now think they are software engineers.
I started coding in 1982, and when someone picks up a tool like Claude Code and builds an app that works, awesome. But then, when they claim to be as skilled as I am, they're basically saying that 40 years of my life don't count.
Now, you could take that as me saying, "I'm not valuable anymore," and certainly there are changes in technology that do eliminate jobs. Look at the rise of automobiles and how many fewer stable hands we needed as an example.
And this change, at the moment anyway, hasn't eliminated the need for software engineers.
I remember the first time I encountered someone who had used a no-code platform to build something, and they were calling themselves a software engineer. I couldn't believe their audacity.
Here was this guy sitting across from me in a meeting, trying to tell me that he understood how to do my job.
And all I could think is, “dude, you're using a tool that I basically wrote to do a job. In order to do that, I had to understand the tool and the job that the tool would do in order to write that tool. You're saying you're as skilled as I am?”
Still, I didn't say anything because what's the point? You can't change someone's mind in a moment where they think that they have as much skill as you do.
Instead, what I can do is this: to all the vibe coders out there who are calling themselves software engineers,
“Do you even know what DRY means?“
This is a principle in software engineering that we refer to as one of the first principles. DRY means “don’t repeat yourself”.
And I've seen plenty of people who are building skills because they want repeatable skills in an AI agent, and I commend you for that because that's absolutely what you need to do.
However, when it comes to reviewing the code that Claude Code is writing, I have to question whether this one software engineering principle is being applied at all.
In fact, I find even in my environment where I know what I'm doing and I'm telling Claude Code what I want, it still doesn't do that.
More than once in my coding career have I inherited a codebase that was written by people who didn't know how to write software.
They figured out how to write code, but they didn't understand any software engineering principles.
And what that resulted in, in each case, was a system that, once it gets to a certain level of sophistication, has code that's replicated throughout it that's doing the same thing. Or maybe even worse, it has code that's doing the same job throughout the codebase that lives in more than one place and that's not actually using the same code.
So that means we have a proliferation of code doing the same job.
When that code is identical and littered throughout the codebase, when there is one bug in one place, it's actually present in all of the places where it's been replicated.
You might think the second scenario is better, where you have code doing the same job throughout the codebase that's not replicated. If there's a bug in one place, it's not present in the other, and that is true, except there's one HUGE catch.
When we now need to change this behavior to something more advanced, more robust, what happens is we change it in one place, and then we don't tend to change it in the other places. That's because we're not even recognizing necessarily that this code exists in more than one place. That's the nature of a codebase: they get large, and it's hard to remember where everything is, even if you wrote every line yourself. Let's be clear: when you didn't write those lines yourself, when a system like Claude Code wrote those lines of code, you actually have no idea what's there, especially when “acceptable” = “works”.
And so what ends up happening is we accrue what in the industry we refer to as technical debt.
And I know a lot of people have a really hard time grasping the idea of technical debt, other than it is technical stuff that we are going to leave undone that we need to take care of. That's the way they look at the debt part of technical debt.
But let's be clearer than that, technical debt is actual real debt because the more you accrue technical debt, the more you actually have to pay real dollars to get it resolved.
This cost has real interest attached to it in the form of inflation. Meaning that the longer you go without resolving this issue, the more you have to pay. Just because the value of money decreases over time.
And in real dollars, what I'm talking about is you're going to have to pay someone to take care of it. I have yet to see Claude Code take care of that unless we create an agent that is specifically looking for places where we have this exact problem, which you can do. And you'll notice this isn't the kind of task a vibe coder who just wants to get something working would do.
So what I’m saying is this… if you are vibe coding, you are the creator not the AI. You are in full control of what gets built not the AI. In the end if that vibe coded solution violates contracts, security, or trust, that’s on you… not the AI.
So act like you own it.
Coding was never the hard part.