Top
Best
New

Posted by florianherrengt 9 hours ago

AI is removing the middle class of software engineering?(blog.florianherrengt.com)
644 points | 540 commentspage 8
zackmorris 7 hours ago|
Wait till we realize that nobody is buying the software we vibe code anyway.

We've seen this game before, with the Dot Bomb and 9/11. A lot of you have 6 figure jobs that will simply be gone next year after the election, never to return.

That winter lasted about 5 years until 2007 when the iPhone and social media sites like Facebook went mainstream. This winter won't end. Or more accurately, it is the end.

Maybe we should stop debating whether we're in a crisis and start looking at the 5-10 year endgame of the Singularity. We're entering the eventuality that many of us have predicted since the arrival of the internet 30+ years ago, that prices will get lower but nobody will have any money to buy anything anyway. The feeling that we're doing something wrong with our lives will continue to intensify. We'll try so hard, and get so far, but in the end, it doesn't even matter.

I don't know about the rest of you, but I'm turning my attention away from trying to play the job game with AI. I'm looking instead at how we can provide time/money/resources to the middle class after capitalism can no longer provide them.

A conservative friend of mine just read the Communist Manifesto by Karl Marx, which I didn't see coming, especially since he beat me to it. In the neurodivergent spirit of not being able to do anything alone, what if we all read it?

https://oll.libertyfund.org/pages/marx-manifesto

https://www.marxists.org/archive/marx/works/download/pdf/Man...

I'm predicting that it stops just short of what full automation can provide. Loosely the evolution of economics goes: hunter-gatherer -> agrarian- > feudalist -> capitalist -> socialist -> communist. And now solarpunk (or something).

The working class is looking forward to the next chapter, but the capitalist class is looking backward to neofeudalism.

Those two directions can't coexist, so what does the future hold? Well, it's always darkest before dawn:

"It's easier to imagine the end of the world than the end of capitalism." - Mark Fisher.

https://www.youtube.com/watch?v=aCgkLICTskQ Mark Fisher: The Slow Cancellation of the Future

https://www.scribd.com/document/835022535/Mark-Fisher-The-Sl... (transcript)

https://goodscienceproject.org/articles/the-slow-cancellatio...

https://mediationsjournal.org/articles/end-of-world

If the endgame of capitalism is that it inevitably eats itself, then the game now isn't how to get more money and do nothing with it, but instead how to start doing something with no money.

I should add that even if I'm exploring anti-capitalist futures, that doesn't make me socialist. I don't like the 6 hour daily work requirement of many socialist societies. I think we can do better than that and get closer to 0, so that we can shrug off wage slavery and finally get real work done.

florianherrengt 6 hours ago|
This is extrapolating several steps beyond anything we actually know.

Whether people will buy AI-generated software is a different question. The problem I’m describing already exists inside businesses with paying customers.

I’m talking about established teams working on products that already have users and make money, where AI lets individual engineers introduce changes faster than the rest of the team can properly understand and review them.

mikert89 8 hours ago||
AI gives more leverage to exceptional people, its an amplifier not an extender
happytoexplain 8 hours ago||
Right, it's a multiplier only if we define bad engineers as negative numbers, and "bad" as "most".
iugtmkbdfil834 8 hours ago||
I know what you mean, but the amplifier could genuinely work both ways ( magnify bad and good outcomes ).
b800h 7 hours ago|||
There was an old truism of "acid fascism" that went like this: "LSD makes smart people smarter and stupid people jump out of windows". This is like that.
onesandofgrain 8 hours ago|||
Maybe
api 8 hours ago||
That is true of all tools. AI is a tool. A tool provides leverage. It does not make a bad craftsperson good.
dgellow 8 hours ago|||
I hate that framing because it glosses over what makes AI distinct from other technology. Pretty much anything can be used as a tool, that’s not an interesting aspect of AI. However standard tools do not take decisions on behalf of the user, they do not apply judgement. They come with assumptions and constraints that make some decisions more likely to be made. But the whole thing about LLMs is that they apply judgement and take decisions. When you use an LLM you delegate both aspects to it with very little overview or control.

I don’t think it’s “just a tool”, it’s something that directly compete with the role of humans in a system, by design

api 7 hours ago||
If you go back in time and imagine yourself in 1950, would you have said that about computers in general? Yes their decisions are the result of pre programmed heuristics, but to the operator that can feel as opaque as AI. In fact in the early days of computing AI was used to refer to a broader swath of what we now call heuristics and machine learning.

Is a very sophisticated computer driven adaptive control system making decisions for the user? Arguably yes. If your car has a bunch of assist tech you are not driving. You are commanding a nonlinear control system.

AI today is quantitatively far beyond these systems but internally it is still just a giant decision table. It’s just a differentiable table that can be automatically programmed by back propagation at what would be unimaginable scale for manual implementation.

As soon as you put a machine between you and the target action that is more complex than what you can hold in your head and that has multiple layers or feedback loops, you are ceding fine grained direct control in favor of a simpler abstract control surface.

I will change my mind a little if I start seeing evidence of genuine volition, but as of now I suspect that’s a property of life not intelligence. One interesting result of AI when viewed as an experiment is: I think it proves that life and intelligence are separate phenomena and that consciousness and intelligence may actually be unrelated.

I have the hypothesis that consciousness (and therefore true volition) is a property of life. You have to be metabolic and tied in some intimate way to thermodynamics and the arrow of time. Solid state electronics doesn’t have this property. It’s unrelated to intelligence. A bacterium may be conscious.

happytoexplain 3 hours ago|||
>If you go back in time and imagine yourself in 1950, would you have said that about computers in general?

I'm not the parent, but personally, no, I don't believe so.

I always appreciate the "it's like past changes" thought when things change, but in my opinion, this one simply isn't. It's notably different both quantitatively and, critically, qualitatively, than all previous increments in computers/software. This is much more lateral than punch cards -> assembly -> compilers -> frameworks.

Also, regardless of that thought, the "it's like past changes" argument relies on a false implication: That all changes that survive are "good" in the broad sense. Many changes often persist simply because they are inevitable - not because they are good. They have both good and bad parts, and it's subjective as to which side it leans towards.

dgellow 3 hours ago||
I agree, and you wrote that better than I could have. Though it’s difficult to say why exactly I feel that way
dgellow 3 hours ago|||
LLMs don’t have a will of their own and will (very likely) never have one, they aren’t an entity or anything that can have a sense of self. They are a compressed dataset with a next token prediction engine. From the token prediction + complexity of the dataset + reinforcement learning + whatever other techniques AI folks are using we are able to derive judgement and decision making (of course the LLMs don’t judge or decide anything, they have no free will of any sort, it’s purely derived from the patterns within the dataset).

Though I personally don’t find the topic of consciousness interesting, it’s not something we are able to define and is distracting from all the other aspects of LLMs that should be discussed or evaluated for what they are.

subygan 8 hours ago||||
Ai is a tool in the same way an employee is a tool. very unlike a hammer.
mikert89 8 hours ago|||
right but we have never seen a tool like this
snk 8 hours ago||
https://en.wikipedia.org/wiki/Timeline_of_historic_invention...
fl4regun 8 hours ago||
Economics would have always created this downward pressure on demand for software engineers regardless, either companies would replace the number of engineers they need with AI, or with low paid offshored workers.
pelagicAustral 8 hours ago||
I don't know what kind of company has got a large codebase and it's taking 20,000 loc pr's expecting that shit to be sustainable, but I work AI first and at the most PR's are touching 12 to 15 files, with the more radical ones sitting at 30. They are still human-reviewable. They are still the kind of change you can revert back to original without breaking all the rest... there are ways of doing this stuff, dear luddites.
mezyt 8 hours ago||
I was wondering how anyone could reach the token limit of a 200$/month Claude subscription. I never did on a 20$ one, and I'm parallelizing Claude to the absolute limit of what I can reasonably keep in mind. And I do that day and night, on week-end too with open-source. Now I'm absolutely convinced that it's by doing crap architectures and design that require 200k token of context before adding a single checkbox. If you apply good design principle and course correct the AI in real time before it commits to really stupid way to fix things (i.e. you don't ask it or let it do things that would make zero sense if you had to do it yourself), then the vibe coding cost way less and is way faster and easier to reason about.
florianherrengt 6 hours ago||
I’m hardly a Luddite and you’re basically making my point.

You’re deliberately constraining the output so changes stay small, human-reviewable and reversible. That’s good engineering culture.

It isn’t all or nothing. I use AI heavily but that doesn’t mean I have to pretend there aren’t serious problems with how it’s being used.

oceanplexian 7 hours ago|
> The engineer opening a 25,000-line PR should have stopped the agent long before it got there.

So many A car is simply a faster horse arguments being made here.

The “You must review every line of code” camp are going to be in for a seriously bad time when Claude/Grok/etc starts writing machine code, and they absolutely will and you will look like a crazy person the same way as those who said we can’t trust compilers back in the 1970s.

Breaking up code into small reviewable pieces is obsolete advice from legacy software engineering. We will probably be reviewing prompts or functional simulations as a form of review. Which brings me to the point that a Senior engineer in 5 years will look absolutely nothing like a Senior engineer in 2019.

rfgplk 4 hours ago||
> The “You must review every line of code” camp are going to be in for a seriously bad time when Claude/Grok/etc starts writing machine code, and they absolutely will and you will look like a crazy person the same way as those who said we can’t trust compilers back in the 1970s.

I'm working on this right now, will have a release probably in a week or two. Not machine code but it's essentially a custom assembler/compiler pipeline (close enough) that an LLM can operate via the CLI (you can do it too, it's just way slower) and it emits native asm optimized chunks that can then be inserted back into cpp (working on a rust et al impl). The results are _obscenely_ good. It's outright outperforming gcc vis-a-vis by a MONSTROUS margin, and it's not even close. As in, gcc can do abour 3-4 cyc/byte (arbitrary workloads on a wide variety of tests) and my tool does it in 0.5 cyc/byte if not better. It outright emits kernels that run at a flat 4 IPC for more or less _anything_. You can then have an LLM convert it back into high level C++ intrinsics (not always, gcc doesn't always expose all the levers needed to do so) if you wish. The one downside is that you need to provide fairly accurate cpu arch maps (ie agner fog instruction port/latency tables) for the tool to work right, which is what i'm focusing on right now.

florianherrengt 6 hours ago||
I do have a genuine question though: what value are you adding at that point?

If you don’t understand the system, don’t know what the code is doing and you’re mostly prompting an LLM to make the decisions and implementation for you, what exactly is your contribution?

The ability to operate the tool isn’t much of a moat if everyone else has access to the same tool.

I don’t review assembly produced by a compiler because the compiler isn’t deciding what my system should do. It’s translating a program whose semantics were already specified. More importantly, that translation is deterministic.

A compiler takes a human-specified program and translates it into another representation while preserving its semantics.

If in five years I can give an agent a complete specification and reliably verify the resulting machine code against it, then sure, reviewing code may become obsolete and I’d happily stop doing it.

Also, keeping changes small isn’t just about making individual lines readable. It limits blast radius, makes behaviour easier to reason about, isolates mistakes, makes changes easier to revert and so many other things. None of those properties suddenly become obsolete because code generation got faster.

shishy 5 hours ago||
Do you think it's impossible for someone to have a 25K line PR / diff but not know what's going on in the system?

I ask because I've pushed some of this to the limit in my own testing and when I get the right building blocks / primitives in place in the repo, I'm able to get plans written in a way where I don't just describe what I want but specifically mention outcomes, verifications, constraints, etc. that utlimately describe the shape of my system and my intent.

My plan is my understanding of my system and the changes I'm making, and the execution of that plan (e.g. with subagents), verified against my spec, is the code itself.

With the correct building blocks, I've found that frontier models can write code in fairly predictable ways that lets me maintain my understanding and confidence in pretty large PRs.

I think perhaps the quoted part of your post seems to imply it's not possible / isn't phrased with that nuance?

florianherrengt 4 hours ago||
For the vast majority of 25K-line PRs, especially AI-generated ones, I would bet money that the person opening it does not actually understand all of it.

If you genuinely understand the resulting system, then that's fine. That’s not the behaviour I’m criticising.