Hacker News new | ask | show | jobs
by appplication 15 days ago
> Here's a term for what I think is happening: the human reward function problem. In machine learning, a reward function tells an agent what good looks like. Writing code by hand was never easy, but it was full of small rewards. Solving a problem in your head. Understanding a gnarly bit of logic. Watching the code compile. The feeling of control. LLM-assisted programming has automated much of the work that generated those dopamine hits and replaced it with the cognitive load of review and supervision. The satisfying part shrank. The exhausting part grew. And there are no new rewards to fill the gap.

Say what you will about the Claudisms in this piece, this bit certainly rings true for me. With old school coding, there was always a reward at the end, the harder it was, the more satisfying it felt.

With agentic coding, I really doesn’t feel like that, at least not in the same way. It feels more like continually riding a wave of productivity, where small features or huge features have similar levels of interaction required. And that’s exciting in the beginning but quickly becomes very tiring.

5 comments

You put it in a good way, I have been saying this for my partner that I don't fear my job is at risk. I fear I am going to hate my job soon.

I am coping a bit by still doing stuff by hand, especially stuff where prompting the LLM doesn't save that much time. And what I call "adding good taste" to LLM output where I move things around to structure them in a more human-understandable way (by hand usually).

My cope goes one level further, I’m already seeing incidents where poorly designed code (not necessarily purely “vibecoded”) has made it extremely difficult to figure out why a system is failing. Errors like “SegFault” and “Driver unresponsive” still exist, and so far even $100 of AI credits don’t seem to be able to solve those issues.

I’m already personally seeing the diminishing returns of AI generated code, especially in light of the increase in token prices (or tokens required per task, both are the same).

I think it all depends on your personal driver: personally I rather see a product I built in whatever way used by ever growing number of people because they find it useful. It means that the time I spent working on that helped other people solving a problem (hopefully).

That’s why a was always keen on cutting some corners when and where necessary in order to think about the user first and the code beauty second.

Of course I appreciate well structured and maintainable code but you can always strike a balance, even with LLMs assisted coding sessions.

It seems to be a big fight between the I am interested in the end result and I am interested in the process.

Some people think the same regarding art, they dont see art in the process only in the end result.

I believe no one is right, but also no one is wrong.

There is no art without process though. The art is the process. Is an automatic piano more beautiful than a world class pianist? Of course not.

I am not strictly equating this to coding though. Like the GP sometimes I am driven more by the product than by being able to make it by hand. But that does not mean vibe coding, I still make sure the code is up to my standards.

Maybe for the person who automated the piano it is
Well, a large swath of both sides are wrong in that they insist theirs is the only valid perspective.
Employees are rewarded by the process

Employers/owners are rewarded by the end result

It's obvious why employees using an LLM would get burnt out

I don't even want to put 'my' code or apps out into the wild anymore. I've built a a few things I think are useful and I'm using myself but I'm afraid it'll just get called slop or my only users will be bots. What's the point. So I don't get the joy out of sharing it nor the joy of the achievement. But I've widdled down what I thought was an endless backlog of features to nearly zero, I guess that's something.
Github's weekly Top Trending repos list is depressing. Slop on top of slop, many doing the exact same thing as each other with so much low-quality content it's challenging to read through and compare similar repos.
If it's code built by an LLM it's almost inherently uninteresting in that 'anyone' can also generate the same slop. Beyond the initial novelty the 'achievement' really doesn't stretch that far.

Your slop, my slop, their slop it's all 'slop' and no one can really care about slop. The novelty is wearing thin fast

Of course not, this makes no sense. It's the opposite, most of LLM generated apps are indeed uninteresting, yet it's not inherent at all. Most photos, most drawings, most human-written articles are uninteresting and have been so since forever. Nothing about that is inherent. And in the exact same manner, no, others can't generate the same thing. They physically can, but that has never been a barrier.

If I make uninteresting art, it's not because I physically lack the ability to use my hands in a manner that would create interesting art. It's because I can't come up with the ideas, and lack the taste, to produce interesting art.

I think you missed my point I'm not denying the code does not produce a function of effect. The code however is uninteresting because almost anyone can also generate it.

I'm interested in the source code to Quake but not in the source code to an LLM generated Quake equivalent, I love to hear about the Fast Inverse Square Root formula in Quake that Id software wrote but I'm unmoved by the generated LLM version.

You don't understand what the OP said, your brain can get a intrinsic reward from seeing users use your LLM work. But LLM remove all the little intrinsic rewards from coding elegant systems to get to the point where you see users using your work.

It is all about the destination now where it used to be about the journey and the destination.

I wrote some software nearly 20 years ago, haven't touched it for over a decade.

The code was terrible, but I don't care, it did the job, and people still use it despite a whole team of people who have tried to replace it with "elegant" code in frameworks which have come and gone.

The reason people still use it is that it solves their needs, not the programmer's needs.

The goal was to make the user's life better, not to make a work of art

All you're saying is that for you only the destination ever mattered. But it's very apparent that is not true for a lot of people.

And "solving needs" is kinda vague. We drank from lead cups for a long time, because perfect knowledge of material and biology was secondary to just having a cup. And no single sip from any lead cup killed or maybe even much harmed any person, but it all added and adds up.

Of course the comparison with lead is kinda over the top, but it's just to illustrate the principle. If your software crashes the computer 1 out of 1000 runs, and it otherwise crucial and unique, people will still use it, and the longer and the more people use it, the more human lifetime it "destroys". If it would take you 1 year to find the source of the crash, it may not be worth it, if it would take you 30 minutes, it might be. You just won't get recompensated for it, you'd have to get satisfaction from it via something like craftsmanship.

Your users don't know either way, so it's your job to know. Saying it's not, everybody just has to be content with the transaction, is a bit like saying a doctor doesn't have to do medicine according to what they know is likely best, but according to what their patient thinks they need.

And it is true for a lot of people. It's also true for the people paying my salary.

If you're making a plane, crashing 1 in 1000 times is terrible, if you're making some administrative thing which if it crashes costs 5 minutes work then it's likely fine

But you're still implying that the fancy software crafted by hand is better.

I have handmade crafted products and I have assembly line products. Not only are the latter cheaper and more consistent, they're often better. I don't want my beer to come in a handcrafted artisan glass while I'm watching the football, I want it in a pint glass of a known size and quality.

> If you're making a plane, crashing 1 in 1000 times is terrible, if you're making some administrative thing which if it crashes costs 5 minutes work then it's likely fine

Yes, and if it doesn't crash it's better than fine. Objectively.

> I have handmade crafted products and I have assembly line products. Not only are the latter cheaper and more consistent, they're often better.

Completely ignoring the care and work that (ideally) goes into making and running the machines at assembly lines, and the cleaning that takes place every day, or sometimes several times a day, all the strict regulations. You cannot compare 99% of software engineering with food production in modern countries. Similar for furniture, it can hurt or even kill, and it would do at a much higher rate if it was made like most software is.

There's gross factory food, and super nice street food, there's healthy factory food and super gross street food. That has nothing to do with anything. All else being the same, you want the person who prepares your food or runs the factory to pay attention and not be sloppy, or you end up with food poisoning, glass shards, and other fun stuff. You just take allll of that for granted, instead of imagining how awesome computing could be if the people involved in it took it similarly seriously instead of just applauding their own laziness.

It’s not just the destination - there are infinite shades of caring too much about every single line of code (spaces! Tabs! Inline open curly braces! Next line) and caring about the final result without attention to what is running under the hood.
I know exactly what he means - and as I said it all depends on personal drivers/motivation etc etc. take doctors: some starts the profession to make money other to care about people. Both categories can live under the same roof in a hospital.
Going with the doctor analogy: One type tries to be genuinely helpful, the other type suggests unnecessary operations, since it costs more.
Isn't steering the agent the new journey? Why shouldn't that provide "little intrinsic rewards"?
I think you don't understand that they understand. For them it's the destination that matters. Their journey is different.
They are admitting pretty directly that even they don't value their own journey only their destination
Setting up a loop so the AI can test its output, so you can have it go off on its own, gives me a dopamine hit. The more rube Goldberg-ian the hit, the bigger the dopamine hit. I setup a network->usb-c keyboard dongle, and a fingerbot so codex could remote control a laptop, plus a webcam so it could see what the laptop was doing, so that I could get hibernate working on that specific hardware with that Linux kernel.
Maybe it's different between professional and personal projects, but I get that feeling more often as features are not only easier to create, but also come out more polished and consistent. I'm able to focus on a single project for a month and have something pretty good by the end. Doing rewrites to clean up and reorganize has never been easier, so I get to see and feel more of the design space in action. The can be pretty damn frustrating at times, half of which is me/context, the other their nature
> but I get that feeling more often as features are not only easier to create, but also come out more polished and consistent.

Features might be easier to create, but I rarely ever get the feeling of I did that anymore from writing software.

"I told the LLM to do that" is different and far less satisfying for me.

When my wife has a thing she says she needs to do and I can help, I now ask “do you want this done or do you want to do it?”. I think this is a similar kind of split.

Sometimes I want to cook, that’s a thing I want to actively do. Sometimes I cook because I want to put dinner out, dinner being out is the thing I want and cooking is just a required step.

Sometimes I want to solve a problem, sometimes I want a problem solved.

Here’s the tricky part for me now and I think others are hitting it - when a machine can solve the problem does that devalue the feeling of doing it by hand? Solving a sudoku feels good even though I know I have multitudes of machines in my house that could solve it faster than I could pick up the pen. Games that place a dollar value on some item I can also achieve makes me feel like the effort is only worth $ though. This isn’t logical but I’m ok being human.

So for a personal project do I get the same feeling doing it by hand? Will it feel like I’ve just made my life harder for no reward or will it be a nice satisfying thing?

As the models get so much better the goalposts shift too, the less I direct the less I was needed.

It’s a weird time. Fascinating, exciting and definitely useful - but so much of what I’ve learned is rapidly becoming less and less important for many tasks. Still, I’ve argued for many years that more people should code because it’s such a powerful tool even used basically, I guess I’ve got my wish (and that side I genuinely love, seeing people make things with their domain knowledge and not having to learn exactly how brackets work in order to automate something)

I used to get overjoyed and would tell my partner how amazing programmer I am every time I built something that felt difficult at the beginning.

Now for every problem I know Claude/Codex will do it, and they do. I just don't get that feeling on finishing 10 features now.

We're just getting used to the invention of the washing machine. All clothes are equally cleansed on average, with good enough results even if afterwards some particular pieces need a bit of extra care, while before we had to clean them all one by one and paying attention to minutia and details on each piece's needs. Nowadays you just control a couple buttons and hope for the best.

Better to find joy in other parts of the process! Hanging clothes out is still a widespread practice in Europe, and some enjoy it. Likewise for software quality controls, testing, and full product lifecycle.

> Better to find joy in other parts of the process!

I recommend the joy of helping the customer get what they truly want. Spend more time on client calls and intercept additional hot potatoes now that we have extra free time to work with.

The technology is a blank canvas. These LLMs are like 600DPI color laser printers. The customer cannot tell the difference between hand painted and LLM generated at even a short distance. Once you get your head out of the worry that not hand painting everything is somehow an abdication of your professional capacity, you may find this whole thing goes a lot better. Try to think of it more like a heavy equipment operator climbing into the cab of a Caterpillar D9. You could do the job by hand, but the customer would probably get upset with how long it takes. Why not just finish the damn thing? Fire the infernal machine up for a few minutes and then move onto the next task.

You may find that by using the big scary machines that you get to engage with far more interesting technology problems than if you had insisted on hand coding. The only real difference is that you get to enjoy the problems from the comfort of an air conditioned cabin rather than a hot, muddy field.

That's such a naive take, the joy of helping the customer ha! That's a situation your employer sets up for you!

Try reading your sentence above and swapping in 'EMPLOYEE':

'These LLMs are like EMPLOYEES. The customer cannot tell the difference between EMPLOYEE painted and LLM generated at even a short distance. '

> That's a situation your employer sets up for you!

Who says you need a boss or other human coworkers?

Start your own consultancy and take 100% of the pie. The term "employee" evaporates in this context, as does an entire universe of lazy, negative tropes about work ethic, etc.

The customer can absolutely tell the difference between a Caterpillar digger and a dude in it vs 100 dudes with shovels
Disagree.

The 'washing machine' problem, was solved decades ago.

Improvements in detergent allows basically anything to be washed with cold water.

Added 'features' from late model machines do very little to improve the experience, and instead drive up purchase price, and decrease lifespan.

It's weird that so many pro-LLM arguments rely on bad analogies of other technologies that aren't perfect, and say, "We're not perfect either. That stuff is embedded in society, so you should do that for us too!"

I think it's not as bad of an analogy. Where you dedicated time and perfectionism for each piece of clothing (line of code), now you push a button and get them all done for you.

You mention improvements on how good clothes are washed for you, after decades of technical progress. Oitside of the analogy, we are literally living through that, but in 10x speed on a day to day basis regarding how well AI writes code.

It is all about the destination now where it used to be about the journey and the destination.
This sounds like development/engineering will eventually go from a knowledge-based career to a factory worker, with a reduction in salary.

It takes way less knowledge and experience to guide an LLM, than it does to write it yourself. Especially if LLMs are already being trained on previous knowledge.

I'm already seeing people on Linkedin having almost no previous experience (or a Junior at best) getting hired as AI engineers.