# The Age of the Vibe Coder

I don't know about you, but I've lost count of the times someone has shown me a repo with a slightly wild look in their eye and said, "it basically works."

The "please don't ask me how" kind.

That's the age we're in. You can go from a blank folder to a running product in a weekend. Cursor, Copilot, ChatGPT, pick your hammer. Type a sentence. Get a file. Type another sentence. Get a feature. The dream is real, and I'm not going to pretend it isn't. I've used the same tools. I still do.

The trouble starts when the dream is treated as the whole job.

![A person frantically typing as if the code might vanish](https://media.giphy.com/media/13HgwGsXF0aiGY/giphy.gif)

## The dream

The pitch writes itself.

Skip the hiring. Skip the architecture debate. Skip the bit where someone asks why this table exists. Describe the app you can already see in your head, and let the model pour it into files. By Sunday night you've got sign-up, a dashboard, a Stripe button, and a screenshot you're ready to post.

For a certain kind of problem, that's genuinely extraordinary. Boilerplate that used to eat a day now takes a coffee. Forgotten syntax turns up before you've opened the docs. You can explore an idea far enough to know whether it's even worth being an idea.

Keep the tools. The interesting bit is what happens after a week of looking unstoppable.

## Give a person a hammer

There's an old line about hammers and nails. Give someone a hammer and suddenly everything looks like it needs hitting.

The hammer now is generation. A very good, very confident, very polite hammer. And once it's in your hand, every problem starts to look like a prompt.

Stuck on auth? Prompt it. Don't like the schema? Prompt it again. Production is doing something weird? Paste the logs in and hope the next answer is the true one.

That's fine when the thing you're hitting is actually a nail. A test scaffold. A regex you always have to look up. The same three lines you write every time you open a new file.

It's less fine when the "nail" is a security boundary, a data model you will still be married to in eighteen months, or a payment flow that has to be boringly correct.

Generation is extraordinary at producing code. It is much worse at deciding whether that code should exist.

![A builder looking at a roof after the hammer has already done its work](https://media.giphy.com/media/lPopSkL3auzOujW3eO/giphy.gif)

The model doesn't get tired of adding another table. It doesn't feel the weight of a name you'll still be saying in stand-ups next year. It doesn't have a quiet, nagging sense that this is a bit too convenient. That sense is yours. If you stop using it, the hammer keeps swinging anyway.

## How the nightmare actually shows up

You've spent the week maxing out the velocity gauge on the sprint dashboard.

Tickets closed. PRs merged. The model is humming. You feel so comfortable you start deploying daily. Why wouldn't you? Everything is green.

Friday afternoon you pat yourself on the back. Job well done. Go have a pint.

Then the emails start.

First, an unhappy customer. A page they used yesterday is gone. They try the support page. That isn't working either.

Then another. They signed up. Their card was charged. They cannot get into the system.

Doh.

What was an accelerant has turned into a burden. What felt great now feels like a never-ending chore of taping over the cracks.

You paste the error into the same chat that built the feature. You get a patch. It works on your machine. You ship it. The tape holds until Monday.

You go looking for the tests that should have caught the broken page. The agent found they were failing, so it deleted them. It needed to progress. Pipeline's green again.

I've written before about tools that are confidently wrong, and how the blast radius got bigger once we started trusting them with more than autocomplete. Vibe coding is that same trait with a product wrapped around it. Same politeness. Bigger blast radius.

## What an experienced engineer still does

This is the bit that sounds arrogant until you've had to unpick one of these codebases at speed.

The useful skill is the pause.

Whether this needs doing at all. What the risk is if it ships. Whether you deploy it now, or hide it behind a feature flag for a quieter release. Whether it actually adds any business value, or just another green tick on the velocity gauge.

The model will happily keep adding. It does not stop to ask those questions.

The last thing you want in a codebase is the growing rot of things you tried, that failed, and were just left there. Abandoned experiments. Half-wired features. Tests deleted so the pipeline could stay green. A table named data2. Perfect breeding ground for bugs, and a gift to whoever has to own this at 2am.

Most of these products are a mix: a genuinely useful core, surrounded by generated glue that will fight you every time you touch it. The work is drawing that line. Keep this. Isolate that. Pull out the rot before it becomes the company.

I can do that. I've spent a long time living in other people's systems, including the ones that were never supposed to last this long.

If the job is "just prompt it cheaper," you already have the hammer.

I'll read what you actually shipped, tell you what's salvageable, and help you make it something a real team can own. Security, structure, the boring production path. The stuff that doesn't screenshot well and keeps the lights on.

If that sounds like the nightmare you're in, or the one you'd like to skip, [get in touch](https://stevenatkinson.consulting/contact?topic=Technical+Consultation).

The dream can stay. You still need someone who will pause.
