Rise of the Cowboy Coder
As a software engineer, I've always been more of a cowboy. Shooting from the hip, relying on intuition and feel. I would get annoyed when people got too theoretical, too academic, too…nerdy…
Nothing against nerds. I am a nerd. There's nothing quite like designing a beautiful software architecture where everything fits together perfectly. But sometimes we let our nerdiness get the best of us and forget that we're making something for someone else.
The person using our software isn't looking at the code.
They don't care about our precious architecture or our impeccably implemented design patterns. They don't care whether we use spaces or tabs, or that we strictly adhered to the purest ideals of functional programming. They just want our app to do what it's supposed to do.
The code doesn’t matter.
With the onslaught of AI coding assistants, the importance of the code itself diminishes every day. We're going to see a lot more cowboy coders in the coming years, but now they’re vibe coding.
For a nerd, the initial reaction to this is disgust. We've spent our whole lives perfecting our craft, and we love it. We have fun doing it. We don't want to see it all thrown away in favor of some kindergartener telling their coding assistant to create a fart app.
It's true that these assistants can produce some absolutely terrible code, and this bothers the nerds. The frustration boils even hotter when faced with an endless hype cycle that proclaims this technology as the be-all and end-all. As a result, the nerds dig in their heels.
If you read the commentary about this subject, you can see a grand battle between the nerds and the cowboys. Every time a cowboy hypes up the fact that they never look at code anymore, a nerd comes in to lambast them. This is wrong.
Instead, we should try to make it better for the cowboys. Make it safer and easier for them to shoot from the hip.
Fix It, Then Hide It
There are thousands of problems wrapped up in this transition, but two stand out to me.
First, we need to fix the output of the coding assistants. Turn today’s intern-level code slop machine into something closer to a reliable senior engineer.
Second, we need to move up a level of abstraction to hide the code completely. That way, we can focus on building software instead of writing code.
Level Up the Slop Machine
Right now, you can treat the coding assistants like an intern. An eager code monkey that can search the web for documentation and churn out code slop at light speed.
If you're an experienced engineer, you can guide it in the right direction. You can review all the code and make sure it's doing the right thing. But our new flock of cowboy coders can't do this. They're at the mercy of the slop.
If we improve the coding assistants so that they reliably write good code, everyone benefits. Experienced engineers become more productive, and non-engineers produce more sustainable code. Nobody has to babysit a machine that hallucinates dependencies and reinvents the wheel every prompt.
Thankfully, the creators of these assistants are already working on this, and the pace of improvement is staggering. The gap between what these tools could do six months ago and what they can do today is enormous. I won’t pretend to have any insight on how to improve the coding models, but I do know it's being solved by some of the smartest people in the world.
But this leaves me with a question. If we're moving to a world where AI generates our code, should the code even look the same? Maybe it would be easier for an AI to work with something different. Maybe it’s a completely new paradigm, or maybe it’s just something a bit more high level. More like building blocks with well-known, well-tested patterns.
I don't know exactly what AI-native frameworks will look like, but it's worth thinking about whether there's something that coding assistants can use to more reliably create what we need.
And that brings us to the bigger idea, moving up to a higher level of abstraction.
Compile My Vibe
Coding assistants have gone mainstream, and we're going to see many more non-technical people using them. These people are not going to go out and get a computer science degree, and they might never want to look at code. What they want is to build software at a new level of abstraction.
Think about assembly language. If you're a software engineer, you likely don't know how to write it, and you don't have to. You use a higher-level language that compiles down to it. You don't care what the assembly looks like in your compiled code because you trust that it does the job.
There are similarities here to vibe coding. Rather than typing out a higher-level programming language, you use natural language to describe your program. If you squint, you might say the assistant "compiles" that into an actual program.
Nerds hate this analogy. I can already feel them furiously typing the hate mail.
I admit it's not exactly the same. A traditional compiler creates deterministic output while a coding assistant is very non-deterministic, but the core pattern holds. Both translate a higher-level language into a lower-level one, and both replace the previous way of doing things by putting a more approachable abstraction on top.
Similar to how I don't want to learn assembly language, many of these people don't want to learn to code. And maybe they shouldn't have to.
Don't Write Code, Build Software
Right now, coding assistants are just automated code monkeys, but building software is more than writing code. It's an entire operation: testing, deployment, monitoring, project management, and everything in between.
If you're a nerd building a web app, you already know you need something like AWS to deploy it. You already know you want a repository on GitHub. You already know you might need a bug tracker. But if you've never touched code in your life, you don't know any of this. You don't even know what you don't know.
Coding assistants help you write code and then abandon you to figure out everything else. What if they didn’t?
What if, in a single prompt, you could create a real application: deployed, tested, monitored, and ready to go? Not a demo. Not a toy. Something that actually runs in the world. Something that does the right thing under the hood.
Hide the Foot Gun
The best way to ensure that people are doing the right thing is to make it impossible to do the wrong thing. Make it impossible to shoot yourself in the foot.
If I'm new, I just want easy mode. I ask it to build a web app, and it does everything I need. It registers a domain, deploys to AWS, monitors for problems, notifies me if something goes wrong, and fixes it automatically.
I don't want to navigate the insanity of the AWS console. I don't want to worry about the problems that come with a large-scale server deployment. Someone much smarter than me already knows how all this works, and they should make sure it just works without me knowing anything.
If I already know what I'm doing, I can look under the hood, but I shouldn't have to. When you let a human handle all of this manually, there's too much room for error. Rather than teaching best practices (or, even worse, scolding people for not following them), we should make the right thing happen by default.
The state of the art changes constantly. New tools emerge, new best practices take hold. I shouldn't have to track any of that. The assistants should recognize when something needs to change and just do it.
Hide the Nerd Shit
If we're going to enable a larger portion of the population to create software, we need to hide all the nerdy shit.
If you have to use a command line, it's a failure. Sure, these terminal UIs are cute. Phenomenal, even. I understand they make it easy to integrate with the developer ecosystem that already lives on the command line. But we can do better.
I shouldn't have to know that there are fifteen JavaScript frameworks to choose from just to add a search bar to my app. I shouldn't have to have an opinion about React versus Vue. Just pick one and build the thing. If I have a problem with how it works, I’ll tell you.
And when something breaks, I shouldn't be staring at a wall of red text that starts with “Uncaught TypeError: Cannot read properties of undefined” and ends with forty lines of gibberish pointing to files I've never heard of. That's not an error message, that's a cry for help from the machine. Tell me what went wrong. Tell me how to fix it. Better yet, just fix it.
Anything that requires the knowledge of a software engineer? Hide it. Don't make me know anything. Don't even think about showing me the word “npm". Just do it for me, please.
The Nerds Have a Point
I can hear the nerds already, “This is how you get security breaches. This is how you get apps that fall over at scale. This is how you get a generation of people who build things they don't understand." They're not wrong.
AI-generated code can be riddled with vulnerabilities that a vibe coder would never catch. It hallucinates dependencies, introduces subtle bugs, and builds architectures that work fine for a demo but collapse under real traffic. There's a legitimate concern that if nobody understands the code anymore, nobody can fix it when things go sideways.
But here’s the thing. This is an argument for better tools, not against vibe coding.
We don't require drivers to understand internal combustion engines. We don't require homeowners to understand electrical wiring. Instead, we build safety into the system itself. The answer to "people will hurt themselves" has never been "make everyone an expert." It's always been "make the dangerous parts safer."
The same logic applies here. If AI-generated code has security problems, the answer isn't to demand that every vibe coder learn about SQL injection. The answer is to build assistants that don't produce vulnerable code in the first place. If the architecture falls apart at scale, the answer isn't a lecture on distributed systems. It's an assistant that knows how to build for scale.
And for the nerds who genuinely understand the code? You're more valuable than ever. Someone still needs to build the guardrails. Someone needs to audit the abstractions, design the safety nets, and make sure the whole machine doesn't fly apart. The vibe coders need you. They just don't need you standing at the gate telling them they can't ride.
Holster the Hate, Help the Herd
So to all the nerds, let's stop fighting the cowboys. I know you hate when they swing their guns around and shoot at random things, but they don't mean any harm. They just want to build something.
Let’s help them. Give them a more accurate gun. Give them a horse that steers itself. Build the guardrails so they can ride fast without riding off a cliff. And for the stuff that's genuinely dangerous? Don't hand them the reins at all. Just handle it.
The cowboys aren't going away. The question is whether we help them build something real or sit on the sidelines and complain about their code.
I know which one sounds more fun.