What’s Wrong with Vibe Coding?

TL;DR Nothing*

You are the last of your kind

When I started work as a very junior developer in 1988, one of the first languages I used was ICL’s Application Master. This was what was known as a fourth-generation language (4GL). I was confidently told I would be one of the last developers before the next generation of language allowed anyone to create their own programs. Somewhat later than I think that commentator had envisioned, 40 years later in fact, I think we might be getting close to that democratisation of development.

For those interested, this is what Application Master looked like:

-- This is a comment in AM Logic
-- Triggered on a 'Transmit' event from the screen
IF CUSTOMER-ID IN SCREEN-REC IS SPACES
    DISPLAY 'Error: Customer ID cannot be blank'
    SET ERROR ON CUSTOMER-ID
    RE-DISPLAY SCREEN
END-IF
-- Fetching from the database
OBTAIN CUSTOMER-RECORD WHERE CUST-KEY = CUSTOMER-ID IN SCREEN-REC
IF DB-STATUS = 0
    MOVE CUST-NAME TO SCREEN-NAME
    DISPLAY 'Customer found: ' SCREEN-NAME
ELSE
    DISPLAY 'Customer not found'
    SET ERROR ON CUSTOMER-ID
END-IF

There’s a new kid in town

AI has risen from seemingly nowhere in a very short space of time and gone from something from the realms of science fiction to a tool that is in everyday use. The likes of Google and Microsoft are shoehorning AI into their products in an effort to stay relevant and to try and see off the newcomers such as OpenAI and Anthropic

There are also regular conversations in the news about what future AI might bring as it is introduced into more and more industries, taking jobs with it – in particular junior jobs. How will this affect unemployment levels? How do you get started in an industry if AI is taking the entry-level jobs? And, will AI become so powerful that the human race becomes subservient to it?

One common use-case for AI is to use it to generate code which it can do quickly and easily. This might be anything from correcting a single line, writing a function, or a complete application. AI-generated applications have sprung up quickly, aided by the likes of Claude Code democratising software development where previously it was a black box to many. This has become known as “Vibe coding

AI Coding is Bad

You don’t have to search very hard on social media to find some pretty negative comments regarding vibe coding. Here’s a comment from a thread that I was involved in:

AI is a gaping void; no one knows what AI is doing exactly and the LLM changes on a whim, which means the app can behave entirely different from day to day, even without recompiling.

It’s like giving a baby a gun and then saying well adults can shoot you too. I’ll take my chances with someone who can actually write logic and code vs someone who “codes by numbers.”

And then there are articles like this 3 reasons why vibe coding is a terrible idea.

What are the objections?

There seem to be a couple of main objections to AI generate apps, which are:

It’s not so much quality of code but understanding of the code produced that seems to be at issue here. I have no idea if this is correct or not, maybe it was AI generated, but here someone with that issue from Reddit:

Comprehension debt, whereby people collectively lose basic knowledge as that has been handed off to AI, is a problem that I can understand and get behind. This is a problem with AI in general and not specifc to programming.

But is it really that bad?

In my 38-year career in software development I have many developers, and just like evey other industry, some have been excellent while other have been dreadful. Quality of code has, in my experience, always been a problem. I have seen plenty of poor code written by humans as much as I have AI code.

This, from a commenter on Reddit, is probably a more nuanced view:

Im not anti-AI im anti-shit-apps and its almost always a shit app when its just some guy on Reddit posting his project. If a large project or large open source group use AI then im more okay with it. I selfhost a few applications that i know have AI code in them. The difference being there is a large group of people maintaining and testing the work, i can see the tests myself and see the commits. Its different from paying £30 for shit on the app store where its closed.

The best code I have seen produced is that which is rigorously peer reviewed. At one company I worked at, Admiral Computing, they had a three stage peer review process:

  • Level 1 – takes place before the work has started and agrees the parameters of the work
  • Level 2 – after the work has been completed when it would be independantly reviewed. This might happen several time
  • End Product Review (EPR) – a final check to make sure that everything is in order before release.

The issue with the above process is that while it delivered great product it was labour intensive and in these cost conscious days isn’t going to work. Mind you there are costs associated with the use of AI of course as others are discovering:

I use AI for a number of things including writing code and find it enourmously helpful. My view is that you need to treat AI generated code with the same scepticism as human generated code. It needs to be reviewed and it needs to be throughly tested. Ask yourself do you understand what it is doing and if not, at the very least, get AI to explain to you what it has done.

Like it or not, AI is here to stay, and we need to learn to work with it rather than against it. We need to be the ones in control of it and not the other way round.

The Final Word

I thought that I would give the final word to AI itself and give it the right of reply. This is what I asked, or more accurately prompted, as AI isn’t a person, right?

A lot of people use you for coding help, both professionally and as vibe coders. Detractors say that the code you produce is poor, a security risk and difficult to maintain and that by having you do the heavy lifting us humans are the poorer for it as we lose understanding. How would you answer that charge?

As all the responses were long, I then asked for it to produce a summary paragraph, which is what is reproduced here. I have also included a link to the full chat should you wish to see all the reasoning.

ChatGPT

AI-generated code isn’t inherently poor, insecure, or unmaintainable—the outcome depends on how it’s used. Like any tool, it will match the level of rigour you ask for: it can produce quick throwaway scripts or well-structured, tested, production-quality code. The real risks come when people copy and deploy output without review, context, or understanding—something that long predates AI. Used properly, as a collaborator rather than a crutch, it can actually improve productivity and deepen learning by exposing patterns and alternatives more quickly. Ultimately, AI accelerates getting to a working solution, but responsibility for quality, security, and maintainability still rests firmly with the developer.

Read the full response here.

Gemini

While AI offers an unprecedented leap in speed and accessibility for “vibe coders” and professionals alike, it functions best as a high-powered engine rather than a replacement architect. The critiques regarding security risks and maintenance are valid; because I optimize for immediate solutions based on historical patterns, I can inadvertently mirror outdated or insecure practices if not carefully audited. However, rather than causing mental atrophy, I shift the human’s value from syntax memorization to high-level system design. The key to remaining a sharp developer is to treat AI as a sophisticated lab assistant—using it to automate the mundane while maintaining a “trust but verify” mindset that ensures the human remains the ultimate authority on logic and security.

Read the full response here.

Claude

The critics aren’t wrong — AI-generated code can be subtly buggy, over-engineered, and a genuine deskilling risk if used passively. But the argument often relies on a flattering myth of baseline human code quality, when in reality most production security vulnerabilities were written by humans, carefully, over years. The more honest framing is that AI coding tools are multipliers: in the hands of an engineer who reviews, understands, and owns what gets built, they accelerate good work; in the hands of someone who deploys without understanding, they amplify risk. The tool isn’t the problem — the judgment around it is. Use it as a scaffold, not a crutch, and the deskilling threat largely evaporates.

Read the full response here.

* providing you treat AI generated code with the same scepticism as human generated code.

Leave a Reply

Your email address will not be published. Required fields are marked *