Vibe Coding

Development —

… but the vibes are off

A close-up photo of red and black lava flowing down a brown stony shallow slope, but the image is slightly distorted by digital artefacts.

Being a developer in the year 2025 is easy. All you need to do is get 20 dollar, hand them over to Cursor, Claude Code, Windsurf or whatever the tool de jour might be, and off you go. Others, have been but a fraud.

Being an AI-skeptic developer in the year 2025 is not that easy. You might be called nuts in popular blog posts. Blog posts that are, frankly, a bit nuts.

Setting the field

So, how did we end up in this very peculiar moment? How can there be companies that promise that you can just insta-wish the app you’ve been dreaming of into being, and how can there be pundits that believe this?

To make one thing clear: I strongly believe that, for good or for worse, probably for both, software development will change drastically. Used responsibly, AI coding tools can be an incredible tool. I have used them myself. But it is despite, not because of it, that I’m weary of the debate. And antagonistic to the hype.

On February 3rd, 2025 OpenAI co-founder Andrej Karpathy published a tweet in which he referred to a specific approach of development as «vibe coding».

There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. […] I ask for the dumbest things like "decrease the padding on the sidebar by half" because I'm too lazy to find it. I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I'd have to really read through it for a while. Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.

There is a lot in it already. Frankly, it summed up the problem pretty well without realising it is a problem.

The term quickly caught on in development circles and beyond. It came at the right time. LLMs were becoming good at coding. Too good? We will get to that.

So over the last year or so there has been a steady encroachment of AI into developer tools.

Claims are grand. EliteBrains claimed this October that 41% of code is AI-generated. Satya Nadella, CEO of Microsoft said back in April that 30% of the code at Microsoft us generated by AI. Dario Amodei, CEO of Anthropic, said that Claude is writing 90% of code at Anthropic.

It has been as subtle as everywhere else. Not very. Suddenly, pressing tab in your IDE of choice doesn’t autofill the suggestion your IDE makes anyway, but something a model calculated as somehow useful. Occasionally it is, often not.

In latest versions of Cursor, one of the few products with any meaningful kind of user base and revenue (not profit, but we will get to that too!), this has become a weirdly Kafkaesque mini game. Something gets generated, and if you accept it, the next generation proposes to delete the just added code – and then some.

«That’s not vibe coding!» proponents of the vibe will proclaim. Whatever. It is the default users of IDE with Claude, Copilot or whatever experience these days. And it sucks.

This text will not try to define vibe coding any further, if you search for a one-by-one guide how to make the most out of coding models, this is also not the text for you. I’m less interested in the how, I’m interested in the should.

I will frame assisted coding in a broader socio-political frame. What are immediate but hidden effects of using these tools. Effects on you, on the world we are living in, but also on the future of the software industry more general?

Development is a social activity – yes, even if you code alone

Coding doesn’t end in the code editor, or a Git merge request. And it doesn’t start there, either. AI model development doesn’t start with writing an algorithm. Once our code gets pushed out, users need to interact with the system we built. And without mining there wouldn’t be AI.

Software development has a tendency to place outsized importance on fantastical figures like the 10x engineer no-one ever witnessed. This can be understood as an effort to position the clean, individual effort of coding in a void. We get Lines of Codes, metrics, and notable contributors awards. The laudation goes to the engineers. The humans making this effort possible – from miners to care workers – remain invisible.

We see this mirrored in the discussion about coding assistants. Code, code, code. More code!

Every tab you take, every prompt you make

It’s easy to forget to reduce the debate over generated code to lines of code, shipped features. To get lost in technicalities, and forget how all of this comes to be.

This is no article that aims to explain generative AI more general, or Large Language Models in particular. But we can’t have an argument about coding assistants and not discuss the material realities these assistants are embedded in.

These realities start in dirt. Chips need rare earths, minerals, and plastics. By design, chip production is an extractive energy, and the metaphor of the cloud is a detractor from this messy reality.

The cloud is the backbone of the artificial intelligence industry, and it’s made of rocks and lithium brine and crude oil.

Kate Crawford, Atlas of AI, p. 31
"A mining field, the foreground are heaps of dirst, possibly minerals dug out from the ground. In the center of the image there are two towers, flying the Chinese flag. They are surrounded by other buildings and smoking chimneys. The sky has a dark orange, toxic tint."
How Artificial Intelligence is born. A mine in Baotou, China, the «rare earth capital of the world»

Once assembled to chips, this reality gets situated in data centers.

This year alone, companies are expected to spend as much as $375 billion to expand data center capacity. These centers house more and more chips, require more and more energy and water.

Data center development has become a point of contention, as centers prop up the electricity bills of neighbouring communities, poison their drinking water, and send a constant hummmmm through the air. Business Insider tracked this in their The True Cost of Data Centers report. The activist group The Maybe compiled five global stories in Where Clouds Meets Cement. Data centers already gobble up 20% of Ireland’s electricity, and are increasingly met with disdain and resistance by local communities.

Whenever someone says «An LLM can be instructed to just figure all that shit out» a model is not «just figuring shit out», it runs inference in data centers. And, as the code models are reasoning models, this inference tends to be very compute extensive.

With every code completion, every question we ask in chat, every time we are too lazy to fix this unused variable ourselves, we make use of resources our planet might not be able to sustain.

The individual resource use of a prompt doesn’t matter too much for this. It’s not individuals who are to blame here, and the single prompt might be as efficient as it gets. On the global scale of AI integration, energy, and resource will only know one direction: up.

You can try to ignore this, but it is the uncomfortable ground truth of every interaction with these models.

div soup, $20 per month

Accessibility is an area that human developers already treat with an astounding level of neglect, though rarely anyone will say that much.

It doesn’t matter which model in which version. The first generated result for a website will likely be the infamous soup of <div>s accessibility advocates have railed again for decades now.

I mention this as it makes a case in point: Coding assistants generate code based on prevalence in the training data combined with some fine-tuning, reinforcement learning, whatever. None of this guarantees quality. It guarantees the middle of a bell curve.

There might be better languages. Or worse. But the middle of the bell curve of web development is inaccessible, error ridden, non-semantic crap. I’ve done my share of this. We all have. Because we are all learning. Constantly. And code we have published can survive years and years once we stop maintaining sites.

There are so many demos showcasing something cool, so many websites just pushed out as fast as possible, so much code generated by Wix or whatever the older cousins of Claude & Co. have been called that just give a crap about semantics, or anything besides looking good.

The small number of carefully curated, tested, and robust examples will – unfortunately – be drowned out. This was a problem with human curation already. It is unsurmountable when developers who don’t know better get code generated by a machine that claims it knows best.

Ain’t reading all that, I’m happy for you though

Creating code with the help of agents can be incredibly rewarding. Even though the user experience itself is, frankly, annoying. The bots are helpful, but their tone of voice is so obedient it at times makes me want to poison a dataset.

Anyway, you will likely hit the ground running and have something resembling a product quickly.

They will write a lot of code for you, and — if you’ve mastered the skill of writing the prompts — most of it will solve your problems thing you mentioned in your prompts. All of today’s coding assistant are incredibly good at producing code. The 273 developers on Vibe Rank have burned almost a million dollars combined.

But it will also generate code over and over again, instead of reusing existing functions or asking if code needs to be written at all. After a short while, the immediate feeling of progress starts to sour.

And, does it solve a problem? Which one? Your own particular one maybe. And that’s great. Don’t get me wrong.

At any larger scale the hard part of software, is not writing code. It’s what comes before and after it:

Good software flows from good requirements analysis, from understanding the real problem that is to be solved and it’s domain and organizational embedding, from understanding the needs, abilities and situation of the people using the software, it flows from thinking about good architecture that describes the structure of the whole construct often even before a line of code has been typed.

tante — On Vibe Coding

The better this messy, human part of software is handled, the easier the actual coding is. Even without coding assitants.

In this nut piece I mentioned earlier, the author claims «LLMs only produce shitty code if you let them». At the same time, he also claims that experienced vibe coders have agents running and only review the code.

But how do we define good and shitty code? Is clever code good code, elegant code? Is good code only a technicality?

And at which point will you just stop reviewing every single line as carefully as you should?

… or sorry that happened

Eventually, the context will collapse. The output will repeat and repeat and repeat and repeat and repeat and repeat and rep… sorry.

Eventually, you will end up with hundreds, maybe even thousands of lines of code no-one on your team feels confident to review, refactor or reason about. Is this how it is now? The new state of the art.

Eventually, some bug will sneak up in production. It might be subtle. At first. But at one point, if you trust the systems more and more and get more lenient in reviewing its output, the bug will be more serious. I’m sorry that happened, future me or future you.

All the developers I’ve seen so far have been pretty vigilant during the first generation. The second, the third. But over time, laziness creeps in – misplaced trust in a system that convincingly puts out stochastic prediction clouded as truth.

Yet, truly, it’s not just software engineering. Mathy math slop machines are shoved into every corner of the economy and our lives at breakneck speed, and slow success. Everything is generated so much that no one can keep up anymore.

This information system overload, gets paired with automation bias, the over-reliance on automated systems. Automation bias in itself is no new phenomenon. It’s easy to trust in computation. It’s harder to gauge when this trust is warranted.

Chatbot-like experiences present an interesting conundrum: Historically, trust in automated systems tended to be lower when the systems were complex (Romeo and Conti 2025, p2). In AI chatbots, this complexity is hidden at first sight. You need to interact with the systems and make a conscious effort to understand them to get a grasp of it. Which leads to the effect that user tend to users AI more the less they know about it.

Another contributing factor is cognitive overload. Counter-intuitively, the harder it is to review the output, the more likely humans are to trust the machine.

Which gets us back to the mountains of code generated. There will be a point at which the amount of it surpasses our level of understanding, and we give up reviewing it as carefully as we should. This will be the time at which we delete databases.

Or, even worse, we don’t just give up on a single task, but lose the ability to comprehend the output and ask critical questions altogether.

I’m sorry that happened, for all of us.

The future

In the immediate now, we have a tool that does things. It’s sometimes worthwhile, sometimes not. But what do we need to grapple within the years to come?

Good riddance, juniors

When ChatGPT hit, the prognosticated effects on the labour market were grand. Basically, everyone who does anything with computers – or language for that matter – seemed to be at risk to lose their job to it.

A few years in, the situation seems more nuanced. Klarna, after claiming «we don’t need humans anymore» has backtracked and is hiring for roles it previously claimed redundant. IBM likewise tried to automate all customer service, it didn't work. Taco Bell tried to automate drive through orders, to end up as the laughingstock of the internet.

There seems to be one demographic already impacted significantly, though. In the paper Canaries in the Coal Mine? Six Facts about the Recent Employment Effects of Artificial Intelligence researchers from Stanford found a robust decline in entry-level jobs in industries that attempt to automate work through AI, such as software development or customer service.

Who requires juniors if you have algorithms, right? If software development shifts completely to reviewing automated output, you only need those who are fluent enough in the code base and languages who can perform the reviews.

I, hopefully, don’t need to tell you what an incredible shortsighted approach this is. Who will be able to review the code in five, ten, twenty years if there is no-one backfilling roles?

This bet might make sense if you trust in the progress of AI enough to believe that we will have Artificial General Intelligence by 2030. It’s careless nonetheless.

At the same time, we might see a different trend, where even if companies re-hire previusly laid off staff, they will do so paying the same people less, or try to offshore the work.

AI becomes thus becomes a de-skilling project. A cruel one at that. Companies will constantly threaten their workforce that they might, at any moment now, be laid off or have to accept paycuts to keep their jobs.

I don’t hold a PhD in economics, but how is this supposed to work?

Usage numbers of Lovable seem to have tanked over the past few months. According to Deutsche Bank research, even OpenAI is flatlining in Europe. Cursor is valued at almost $10 billion dollars, reports $500 million in Annual Recurring Revenue, and still can’t turn a profit. While at the same time competing against Anthropic, while being their largest customer.

Flat-lining, declining is something no capitalist will ever like to hear. But for an industry that needed exponential growth yesterday, that’s especially bad news.

The numbers that are thrown around grow ever more fantastical by the day. When the USA’s Stargate project was announced, the $500 billion investment was raising eyebrows. In September, Gartner calculated that in 2025, $1.5 trillion were spent on AI. With $2 trillion projected for 2026.

Bain & Company claim that the AI industry requires $2 trillion in annual revenue by 2030 to make today’s bets work. AI companies in the USA today make a combined $41 billion in revenue. That’s 0.205% of the goal.

OpenAI might have, last quarter alone, lost around $11.5 billion. Horny chatbots will save them, surely.

So what?

I admire any people who stand by a definitive «No» to any of these technologies for their steadfastness. For me, the reality is more murky than that.

Coding assistants can be an incredible helpful tool if used consciously. As with every tool, we need to keep reminding ourselves when a nail is a nail. Thinking about assistants requires a reframing of the discussion. Scratch any «just» when describing how they work. Scratch any trust when reviewing their output.

At the same time, I’m deeply troubled by those pushing these tools and sell them as the future without any concern for their externalities and consequences. If you treat any technology just as the technology, you are fooled. Technologies are complex and intertwined, with material realities and effects beyond the prompt window.

It’s all too easy to forget about effects of our choices. The promotion of the tools reinforces that believe. The PR departments, CEOs and CTOs of these tech companies care about one thing: shareholder value. And the specter of automation has always been a great way to drive this number up.

We, as humans, should not be tricked into this game.

A meme with two frongs sitting in front a fireplace, toasting to each other in an overall very comfy surrounding. The top part of the meme reads «Stop glamorizing ‹the Grind› and start glamorizing whatever this is.

1 Webmentions

1 Likes

  • James

0 Reposts

    Using Webmentions and webmention.io.

    Title Image Credit

    Distorted Lava Flow by Lone Thomasky & Bits&Bäume

    Filed under

    Changelog