Vibe Coding or Professional Programming? Choose only one.

Posted by Scott on March 26, 2025

Photo by Jacob Kiesow on Unsplash

Vibe Coding or Professional Programming: Choose one

So I've been watching this trend called "vibe coding" pop up lately, and I've even tried it just for fun, and here's my report:

You can either do vibe coding, or you can be a serious, professional programmer. You can't do both.

Unfortunately, the hype is growing, and it's getting a little stupid now. Let's dive in.

What is Vibe Coding?

As far as I can tell, the idea of vibe coding is this:

  • You work with an AI coding assistant.
  • You tell the AI what you want to accomplish.
  • It spits out some code that might work, or might not work.
  • You try to run it, and get errors.
  • You copy the error messages, paste them back into the AI chat interface, and tell it to try again.
  • It spits out another version of the code, which might work, or might not work.
  • You try to run it, and get errors.
  • At no point do you try to understand the code that's being spit out, properly debug it, or try to apply any professional discipline or standards to any of it.
  • Repeat until the task is done.

I'm struggling to come up with something similar in any other area of work that you'd call "professional".

Imagine a chef who just randomly tries different combinations of ingredients and spices until the dish doesn't get sent back to the kitchen by the customer.

Or a lawyer who goes in front of a judge completely unprepared to argue for his client, just quoting laws and decisions that might have something to do with the case, until one of them actually makes some sense.

Or an investor who just sprays money around to a bunch of random companies without knowing anything about them hoping that one of them works out.

Oh....

Consider the source

Speaking of investors who randomly spray money around, I checked out this video called Vibe Coding Is The Future from deep in the heart of the Reality Distortion Field known as Silicon Valley.

There's so much nonsense to break down from this, it's hard to know where to start.

First of all, the only audience this group cares about, pays attention to, and talks to, are young startup founders. Are you a young startup founder? No? Then, no, you don't need to bother with vibe coding.

These are investors with one goal: give a small amount of money to a small founders group, expect them to spend every waking moment working on their idea, encourage them not to have any work-life balance, all to crank out a first-draft idea as quickly as possible to see if there's product-market fit.

Odds are they're going to be writing some basic JavaScript/TypeScript crap running in npm; in other words, exactly the coding scenario that works best for current LLM's.

If that's your goal, then, sure, vibe coding could work for you. You'll get some basic code, with no useful structure, that will cost you more to rewrite if your idea works out than it would have to just slow down and do it right in the first place.

But hey, some 20-somethings with no historical understanding of software think it's cool, so it must be, right?

Vibe coding for small tools, toys, etc.

Sure, go ahead. I've been doing this since GitHub Copilot was released in preview, and ChatGPT 3.5 came out.

If I need a quick PowerShell script for something, it's great. If I need a small C# utility for something, why not?

Is it vibe coding if it's just a script and it's not a web page? 🤷🏻‍♂️

Really, who cares? This is a great use of an LLM. Party on.

Vibe coding for existing, large codebases

Ha, just kidding... there's no vibe coding for that.

Being at GitHub, I get to work with many of our large, enterprise customers, some of whom are running the largest monorepos in the world. I get to see the sophisticated, mature, thorough CI/CD pipelines they've defined over years of improvements. I see the dozens, and sometimes hundreds, of checks that get run against every code change that lands in main.

I also get to see it at GitHub, where all of that is true for us.

Recently, for the first time in my almost five years at GitHub, I worked on some code in our famous Ruby monolith github/github. I did everything I could to get Copilot to generate the code for me, because most of that situation was new to me. I've never written Ruby or Rails, I've never heard of ActiveRecord, I've only looked at our Ruby codebase a few times, and because I joined GitHub as a Product Manager back then, and have since moved over to our Revenue team, I haven't been a full-time programmer working on GitHub code here and had little experience with our Engineering patterns and practices.

When I created the pull request for this code, before I was ready to ask for human review or to merge it, all of our checks ran against my branch. On the one hand, it was amazing; I'm so grateful for all of the work that's gone into our own CI/CD infrastructure, and how well we use GitHub Actions ourselves to run automated quality checks against every change we make to GitHub. On the other hand, those checks ensure that the code we commit doesn't just work and pass unit tests; it makes sure that the changes stylistically and architecturally and even culturally make sense given the patterns we already have over 17+ years of this repository's history.

Those checks quickly identified things that I did, or accepted from Copilot, that didn't make sense for our codebase, and I made the proper adjustments to fix them.

If you think vibe coding would have done anything beyond the most trivial change that would have gotten past those checks, you've clearly never worked in a large, enterprise codebase.

Feel free to try it to get started with a task, but if you don't know how to write code, you won't get far in a large codebase.

It's not about the code, it's about the systems

If you want to remain a junior developer, do vibe coding. You'll get tasks done, which is what we expect of junior developers, but you won't learn much about the systems you're working on, or the architecture of them, or why they're shaped the way they're shaped.

When something goes wrong, and all of the copy-and-paste of error messages doesn't help, you'd better find a professional programmer to help. Someone who thinks in systems. Someone who has familiarity with the entire stack, with the cloud provider you're using, with networking, with queue theory, with databases, with performance optimization.

At the end of the video, finally they came around to admitting this.

Again, if your job is ship some piece of crap as fast as possible that minimally gets the job done, go do vibe coding. If that's not your job, you still need to know what you're doing.

But models will improve, and vibe coding will improve with them

OK, sure. Let's project ahead a year or two, and assume that models with larger context windows and better ability to understand your codebase do a better job of emitting code snippets to satisfy some requirement.

Great. That means that an experienced developer will be able to get their tasks done faster, just like a junior developer would.

But there will still be production problems. There will still be bugs. There will still be performance issues, and security issues, and failure modes you weren't expecting, and all of the things that happen in a real production system doing any kind of significant traffic.

If all you know is vibe coding, you'll never be useful in these scenarios, and those are the ones that get you promoted. Those are the experiences where you learn the most.

These are all of the things that Silicon Valley investors don't think about, and don't care about. All they care about is you making some MVPs (Minimum Viable Pieces of Shit Products) so they can either get paid or cut you off.

If that's what you're into, great. Just don't mistake that for being a professional programmer.

Agents will not be vibe coders

But what about coding agents, which we've seen the start of this year? Aren't they basically just fancy vibe coders?

If they are, they're not very good. A vibe-coding-level of quality is what I'd expect from a first-draft or first-version agent product.

If your agent can't do better, you won't be using that agent for long. Customers will demand better if you want their money.

So, go ahead, stick with vibe coding to ensure that you never do better than an agent will by late 2025.

[Bad] Taste

One other thing I'd like to observe about this video is the use of the term "taste" in it. The idea, as far as I can tell, is that what's important is not whether you know how to write code, but whether you have good taste in designing the UX.

As you're vibe coding, as long as you can tell the AI "move that button 5px left" or "change the color to orange" then you have good taste, right?

I mean, 🤦🏻‍♂️. Seriously?

This is from the same group of people who exist in an Apple monoculture, who assume that if you're using Windows or Android you're just not cool enough to matter, and who assume that Mac patterns are objectively correct, who ship rage-inducing applications that I'm forced to use, where you can tell that no one at the company knows anything about what makes Windows special and different from MacOS.

This is the group who ships crappy "applications" in Electron and thinks they're good enough.

This is the group who thinks that "good enough" is good enough.

If you care about UX, "good enough" isn't good enough. Either you understand that, or you don't have good taste.

Good taste includes, but goes well beyond, UX. What about maintainability and architecture and performance and accessibility and documentation and testing and CI/CD and regulatory requirements and networking and whatever else I'm not thinking of right now? It takes experience and good taste to do those well, and vibe coding will not get you there. Not even close.

It won't get you there in UX, either, no matter what they say in this video.

Vibe coding is a small part of the future

This video has a lot of "if you're not vibe coding, you're going to be left behind" bullshit.

The list of things for which you'd be left behind if you didn't learn them in my career is long. And full of things that I didn't get left behind for when I didn't learn them.

There are only so many hours in a day.

Should you try vibe coding? Absolutely. Don't take my word for any of this. Try it yourself, on a codebase you're familiar with. See how far you get.

Again, for small tasks, it might work out.

For anything else, you have a choice: do vibe coding like a junior, or be a professional and keep learning and do it right.