Skip to content(if available)orjump to list(if available)

There is no Vibe Engineering

There is no Vibe Engineering

71 comments

·March 31, 2025

mjburgess

The more hard constraints one imposes on generative AI output, the more that it becomes exponentially harder to constrain that output to those constraints: so much for "embracing the exponentials" -- constraint-exponentials dominate vibe-exponentials.

With only a few dimensions of constraints there are zero relevant examples in training data, with only a few more, there are zero similar examples. This is why programmers are employed: it is always a R&D job, if it existed under relevant constraints, it would be purchased and installed.

The art of vibe coding, such as it can be developed as an art, is in segregating system design to localise (constraint-induced) novelty. There are certain applications of genAI where it makes sense to give up on a plan, and take good-enough. Software "in the large" is not such a place.

It's no accident its data scientists who began vibe coding -- it's a fundamentally "in the small" activity with no hard constraints: much like the throw-away exploratory programming of data science. Hence, I suppose, the alarm and confusion amongst software engineers -- perhaps they just aren't aware they're speaking to a radically different kind of "throw away programmer" that exists in the AI space, they've always been vibe programmers.

hadlock

> This is why programmers are employed: it is always a R&D job, if it existed under relevant constraints, it would be purchased and installed.

Clearly you've never had the pleasure of working at a NIH (not invented here) syndrome culture company. At one company, we didn't have budget to buy a ticketing system, but somehow we prioritized engineering building one from scratch. Another time I was talking with an engineer at Roblox and the engineer interviewing me was building a config scanning and management system from scratch for pretty generic linux installs. I can think of at least two companies that offer a product that did everything they needed and more, plus it was a full featured, stable production ready system, vs theirs which had serious teething issues and was obvious they were struggling to scale it. There's no shortage of these kinds of config management systems out there but they decided to build their own anyways.

At another company our "staff" infra guy wrote 40,000 lines of bash because he didn't like how Jenkins worked for deploys. These are all very standard things that keep getting coded over and over for whatever reason. I haven't tried it yet but I'm pretty sure you could "vibe code" a Jira or Jenkins clone in a couple of days and at least pass the PoC sniff test. I've certainly done it for some throw-away prometheus exporters to get some crude visibility into third party services we have to use.

dingnuts

> I'm pretty sure you could "vibe code" a Jira or Jenkins clone in a couple of days and at least pass the PoC sniff test.

oh man, just think of the security implications of a "vibe coded" CI system, holy shit I'm going to have to get into consulting because there is going to be SO MUCH MONEY to be made digging organizations out of self-created holes like this one.

Jira too, considering the importance of RBAC there, if you tried to replace that in a couple of days, inevitably that's a lawsuit waiting to happen.

Lol I love also that I got a downvote before I was done editing this comment. Love it. Be mad, I'll be rich.

This is a whole new category of "I could build that in a weekend," lol, no you couldn't.

kayo_20211030

Off topic, perhaps, but this is the thing that stuck out to me in the OP

> When the tornado comes whipping through your neighborhood and your house gets blown down and somehow you didn’t have insurance and you lose everything, you can’t control that. But you can certainly control how you’re gonna react to that situation.

Neither of these two things are really true. It sounds like it should be true, but it really isn't. Why didn't you have insurance? Why are there more destructive tornadoes? If my house is trashed, at a reflexive simple human level, I'm pissed, depressed, anxious - take your pick of emotions. No amount of stoicism, short of super maximum foo level is going to change that. Nor, should it. That stuff isn't a movie about overcoming obstacles, as an individual with super-human fortitude. It's a trashed house and a whole boat load of expense, and more.

Why is that quote in the piece? I don't get the analogy.

SerCe

> Why is that quote in the piece? I don't get the analogy.

I liked the quote because what it conveys is that you can't control everything. You can't control the way people freak out about things on Twitter. You can't control an influx of new tools. But what you can control is the way you react to them – not giving in to the chaos, but instead approaching the changes with a cool head. And the Netflix show it's from, Midnight Gospel, is pretty good. I do agree that the house analogy could be better though.

mentalgear

It should be called "vape coding", as the outcome is almost always a vapor-ware like abandoned project.

(for those mixing up "vape coding" with AI coding, they are absolutely not the same.)

gdubs

The flip side of all of this is that so many products fail because development on new features becomes unbelievably slow. Either because of a kind of process paralysis or because things are over-engineered.

Don't get me wrong - there are absolutely critical path parts of software and engineering projects that can become enormous liabilities if not handled correctly. Further, the whole nature of software means that sometimes it's not even clear what will be a vulnerability at the outset – people find ways to exploit even the most benign-seeming aspects of a piece of software.

So, I'm not suggesting that the warnings raised here are without merit. But, it's worth understanding that despite all of that – AI or not – disruption happens constantly because a startup that isn't big enough to worry about a lot of these issues can come in and upset the established player by moving fast.

Again, this isn't a moral judgement either way – just pointing out a reality.

I personally think 'vibe coding' should be thought of as a kind of prototyping tool. A scaffolding to quickly validate an idea and see if it has legs.

127

I don't see it working on anything outside the most popular of frameworks and libraries which have the most example code to ingest. Vibe coding will have hard time creating novel solutions by definition. It devalues the already lowest common denominator and lets people create more buggy CRUD applications.

NewsaHackO

I agree, but I think the reason so many people are on edge is because people are just now realizing that they don't do actual engineering or R&D work. They are essentially doing what LLMs are doing, and adapting already known solutions for business problems.

victorbjorklund

I'm having some success using it on Elixir and Phoenix. Not the most common stack. It works better on Javascript but it does save time having it do basic stuff (with me checking the changes).

porter

Do you want a vibe engineered pacemaker?

Jtsummers

This is the kind of thing that comes to mind every time I read about vibe coding. I work on systems that are generally considered critical, there's no way we'd use vibe coding to develop and maintain them. When our systems go wrong, people can die, and very expensive infrastructure can fail (and would cost billions to repair/replace).

I always wonder what kind of things people would want to use vibe coding for because there's no way it could be for anything serious, I'd hope.

currymj

some responsible yet still "serious" uses would include:

1) throwaway code where the "work product" is not a software system, but rather the outputs of the code which you can verify yourself.

the classic example for me is producing plots. I can easily verify that data is loaded correctly, and that the end result is correct, I just don't want to learn the complex API to make all the ticks and colors and fonts look perfect.

2) prototypes, mockups

3) simple tools (often with a web interface) for your own use

9rx

> 2) prototypes, mockups

Any time I have taken shortcuts because "it's just a prototype" I have always come to regret it later. This may not be the "serious" use that it initially feels like.

mentalgear

> prototypes

Only there exist no prototypes, in the sense of throwaway. Prototypes become the product, as rarely something is really build up again from the ground to account for best setup.

TrackerFF

For every critical system out there, there are thousands of trivial ones. The vast, vast majority of programmers aren't writing code for fighter jets, spacecraft, surgery robots, pacemakers, and what have you.

sublinear

Can you give examples of software that actually makes money and people are okay with it failing?

Muromec

How about vibe-engineered autotargeting on the nuclear warhead? There is a movie about something like it

pphysch

If it had a serious QA process behind it, sure, I don't care how the code is generated.

But I wouldn't trust an AI to design the QA process.

cmrdporcupine

Honestly, I don't even want a pacemaker "engineered" by standard pre-"vibe" software engineering practices as I've seen them in the real world.

The worst outcome of all of this stuff could be that instead of dealing with exploding complexity and coming around to best practices that reduce it, we'll just let complexity and resulting confusion multiply because "the machines" will be the ones "thinking" about it, and not us.

cadamsdotcom

You cannot and should not vibecode things that are “out of distribution” vs your model’s training set. For those you need to constrain the amount of novelty, generating things in small incremental steps. It’s not much different to how humans constrain software development to one PR at a time.

Part of the skill of coding with LLMs is knowing what's likely out of distribution so knowing “how much rope” to give the model.

These problems with present-day LLMs can and will be mitigated in future with synthetic data providing more examples, and with even more inference time compute, and with intelligent fetching of docs, and with realtime ingestion of relevant dependency code, and with larger context that give models larger working memory.

Coding models have so much potential value that it pretty much has to happen.

duped

Imagine if you will, a team tasked with building widgets. That means designing the widget, the mechanisms to fabricate widgets from input materials, and building those mechanisms to then build the widgets.

You could do this with a team of two people, the engineer and machinist. The engineer spends their time at the drawing board and handing designs to the machinist to fabricate. The machinist is probably going to run into problems, or there are problems with what is fabricated and the engineer needs to go back to the drawing board. It's an iterative process.

Now imagine those widgets are software. Historically we call both the engineer and machinist "software engineers" or "developers" and might call the first one "senior" or "architect" or something like that. Since we don't need a human being to physically operate machinery it seems like using AI agents would be the an ideal place to replace the software machinist.

However there's a problem - the engineer/machinist duo works not because the machinist is an engineer but somehow worse; they have different skillsets and the engineer is going to get immediate feedback from the machinist that a design is going to work or not. The engineer/machinist divide works because the machinist can say "nah."

AI agents today don't have that ability. You can tell them to do things that are impossible, or they will make shit up. Without the ability to check for validity or preemptively avoid mistakes, vibe coding is just shitty software development. If and when that problem is cracked then the concept of a software machinist will be obsoleted.

kristjank

Vibe Coding and the environments that enable it are the Turkish Hair Transplant of programming.

kridsdale1

Providing accessible life changing and affirming quality of life improvements to millions?

throwaway314155

Ostensibly.

indigoabstract

Calling it rapid prototyping doesn't sound as cool as it used to, now that there is vibe coding. Especially when its pure shiny 100% AI.

It seems like such a hippy thing to do.

kevindamm

> When might this future arrive? It's uncertain. A good indicator, however, might be when engineers confidently say "yes" to the question: "Would you happily go on-call for a system of fully AI-generated services?".

I dare say there are already people saying this, but I don't know of any SWEs (or anyone who has maintained a significant codebase) who would be willing to go on-call for such a system. But I would hesitate to go on-call for even an entirely human-built system unless I'd done some in depth review of its architecture and playbook.

Maybe there's a middle ground here, like willingness to update the codebase of a vibe-coded application. Do that enough times and maybe the confidence in the system increases enough to be willing to on-call for it.

I agree with the position that the value of an "engineering" role in this context should be judged by those who have held that position, moreso than the opinions of management or media in that regard, anyway.

duped

I think being "on call" is a sign you're not doing engineering in your role, but that's not absolute and kind of a deeper discussion about what "software engineering" even means.

mdaniel

I swear I'm not trying to take your bait, but I did want to point out that I want to live in a world where developers are responsible for running the products that they produce, otherwise the incentives are not aligned and then -- relevant to this vibe discussion -- tossing slop over the wall becomes Situation Normal

9rx

You can certainly run the product, but engineered solutions should fail so infrequently that the idea of being "on call" becomes ridiculous.

Of course, there are tradeoffs that come with that. You might not need engineering in your product.

arkh

> running the products that they produce

Awesome, products who live what? 1 year tops.

One of last month fun bugs I got from a 10 year old ecosystem was due to some backend calling an API which (aside from fetching info from an API provided by the backend) needed data from some third system generating it using a CRON run mon-thu at 13h. The original input in this third system was done on thursday around 17h so it was not available on friday (date of the ticket) nor monday morning (which led to this treasure hunt) but things were automagically resolved around 13h15. Gotta love the world of in-house legacy applications.

null

[deleted]

null

[deleted]

null

[deleted]

sublinear

There is no "vibe coding" either. It's just idiots playing around with copypasta by a different name.