Top
Best
New

Posted by bucket2015 2 days ago

If AI coding is lowering your code quality, you're not managing quality right(www.i-kh.net)
127 points | 169 comments
zug_zug 2 days ago|
I think this is a bit of a simplistic mental approach. I've certainly seen a lot of "The engineer owns the outcome, AI is just a tool, don't release anything you don't vouch for."

However, I just don't think that's realistic. It's asking an author to suddenly become an editor. It's asking somebody who writes code to now read and debug others code.

It can actually be harder to find the the bug in a tricky piece of code than it can be to write your own correct code from scratch. I see AI introduce all sorts of bugs all the time in my personal projects that I would never introduce, and would never think to test for, especially around anything graphical.

christophilus 2 days ago||
> It's asking somebody who writes code to now read and debug others code.

This has been a big part of the job for anyone on a team for at least 20 years. I do agree that it’s the hardest and worst part of the job, and has now become the majority of the job for anyone who isn’t vibe coding. So, that sucks.

OptionOfT 2 days ago|||
Disagree. At least back in the day there weren't endless comments about how this widget is load-bearing, and how honestly the other widget carries the derived widget, referencing decision ADR-100 that is nowhere to be found. All these comments matter because once accepted as part of the codebase the next LLM takes these comments as canonical.

The largest problem these days is the volume of code developers are expected to review. The volume went up significantly.

theshrike79 1 day ago|||
> the next LLM takes these comments as canonical

This is the best and worst thing about LLM coding agents. They trust comments way too implicitly. And then the errors just keep compounding.

Or a temporary hack that becomes "load-bearing" because the agent doesn't figure out that it's supposed to be a temporary testing shim - instead it keeps building on it until it basically duplicates what it's mocking.

Daishiman 2 days ago|||
> At least back in the day there weren't endless comments about how this widget is load-bearing

By far the biggest problem 90% of developers have with AI is that they should be turning off comments, as it's clear that the training data they have is no good for developing a theory of mind for an engineer who has to read them.

I've turned them off and add them myself at review time and am quite happy.

zahlman 1 day ago||
Requiring the coding agent to (try to) iterate on code clarity until comments are no longer necessary, probably doesn't hurt either. Save the commentary for conversation logs, agent Markdown files, and other sorts of documentation.
phrotoma 2 days ago|||
It's a different of degree, not kind.

Anybody who has reviewed pull requests can tell you that sooner or later you approve a PR after many rounds of changes because it's finally "good enough".

Fighting with a robot to just do the damned thing is less fraught because they don't get offended by critiques but it takes more round trips to get them pointed in the direction you want.

thw_9a83c 1 day ago||
Fighting with a robot requires also a different kind of attention. When you're reviewing the human code, you can quite easily guess an overall seniority and competency level of the author and then you can adjust your level of attention to every detail. E.g. if the solution requires an understanding of some core idea, ones the human understands this core idea, you can be quite sure that it is consistently implemented everywhere. With AI, 90% of the PR could be expertly implemented but then, for no obvious reason, 10% could be low-quality surprise. I've never seen such unbalanced output from human programmers.
zahlman 1 day ago||
If 90% of it was fine, maybe it would be better to just fix the 10% yourself rather than "fighting with a robot" to try to get an automated fix.
thw_9a83c 1 day ago||
Yes, but those 10% of a problematic code is not easy to find without a very detailed study of the whole PR. And since most of the code looks (and usually is) very well-written, the human brain somehow doesn't expect to find those low-quality or sub-optimal parts in such code. That's why I wrote that reviewing the AI code requires different kind of attention.
sameerds 2 days ago|||
> It's asking somebody who writes code to now read and debug others code.

That's exactly right. Open source projects are currently drowning under LLM generated PRs, where those who used to write code are simply punting that work to AI, but still expecting others to review it. It's not okay to expect such a free lunch. If you moved the labour of writing code one step away, then you are yourself the first line of defence now, so you better start reviewing code that you claim to be yours.

sfn42 1 day ago||
That's what I do and expect my colleagues to do. Even before LLMs I was reviewing my own PRs before submitting them to others. I still do that. I work closely with Claude to create something good that I'm happy with, then I review it and test it to ensure it's good. And only then do I submit the PR to colleagues for final review.

I expect the same from colleagues, I'm not interested in treating them as a middle man between me and Claude.

CoolestBeans 2 days ago|||
I agree. When you write your own code, you know what your intention was when writing it. Furthermore, as you gain experience and mature you know in the back of your mind that every mistake during code writing costs disproportionately more to fix later on. You only get that feeling by owning the code. AI cannot do that. It can't have skin in the game in that way.
zahlman 1 day ago|||
> It's asking somebody who writes code to now read and debug others code.

Writing code has always involved reading and debugging your own code, at an absolute minimum, even if you did everything solo. In any remotely serious collaborative effort, it also involved code review and collaborative debugging; people use issue trackers and assign themselves and each other "tickets", which often involve fixing issues that are ultimately caused by someone else's code.

> It can actually be harder to find the the bug in a tricky piece of code than it can be to write your own correct code from scratch.

Part of the point is to reject tricky code exactly because it is tricky (as this is rarely actually necessary).

skybrian 2 days ago|||
If you can explain how to reproduce a bug, you can ask the AI to debug the code and it usually works, in my experience. If not, you can ask it to add logging or other tools for better observability.
Daishiman 2 days ago|||
> I see AI introduce all sorts of bugs all the time in my personal projects that I would never introduce, and would never think to test for, especially around anything graphical.

This is referred to in the need for E2E testing and E2E testing not being a substitute.

Code review is definitely the biggest challenge of AI-driven development IMO. I still have not found good processes that work in my org, but for my personal work I independently reached the author's conclusions a while ago and am very satisfied with the results.

geertj 2 days ago|||
> It's asking an author to suddenly become an editor.

I think that’s right, and what is needed. It still gives a significant speed up for coding, while still keeping the output human maintainable.

There is the idea that the agent will just produce binary code directly at some point. I don’t know if it ever comes to that but for now I’m in the ‘I’ve become an editor’ camp.

bigstrat2003 1 day ago||
The time it takes you to review the code the LLM produces is the same amount of time it would take to just write the code yourself. There's no speedup to be had using these things, despite what many claim.
sfn42 1 day ago||
Strongly disagree. I know my codebase well, I know what I'm expecting before I ask Claude to do it, and I tell it what I'm expecting. I might tell it roughly what I want, have it make a plan, review the plan and ask for changes if necessary, then execute.

This way I don't need to scrutinize every detail, I just look over the big picture. I also care a lot more about the big picture - architecture and data flow etc. Basically if you view your codebase as a tree I care much more about the trunk and the big branches than I do about the smaller branches and particularly the leaves. So the details of some little leaf function somewhere are fairly insignificant, it's trivial to change at any time. As long as it works and isn't unreasonably slow it's fine.

Working this way I can get things done in minutes or hours that would previously take days or even weeks.

abalashov 1 day ago||
> I know my codebase well

I'll bet you know it because you wrote and/or worked on it manually, likely over a period of years. The odds of you knowing a slop codebase that well, or even particularly at all, are much lower.

arcanemachiner 2 days ago|||
I think the answer is not to debug the code, but, when possible, to debug the outputs. The code may be considered to be a black box much of the time. (This is much more true for my hobby projects than my work projects.)
yosefk 2 days ago||
...because your work projects are bigger, there's only so big a black box can get before you lose all comprehension of it, and splitting it to smaller black boxes the shapes of which you keep refining is programming, and the part of it LLMs currently can't do
dist-epoch 2 days ago||
I routinely see Astra extract related functionality into it's own file after it gets past a certain size, unprompted.

And prompted it can extract the black boxes if you tell it what the boxes are or what to look for.

Same for cleaning up tech debt after organic development, it's suggestions on how to simplify and modularize are good, but you need to prompt.

Given that the prompts are quite generic, "look for technical debt, suggest simpler architectures, what could be extracted in a separate module", it won't be long till it will do it on it's own.

zahlman 1 day ago||
With directed prompting like "aggressively refactor into short functions with intention-revealing names" (a paraphrase; I'll give it a few sentences to describe a general style), even Luna handles this pretty well IMX. I have too much pride in my own analytical skills to try something like "how would you refactor this for clarity?" followed by "do it", but I imagine it would at least result in a step in the right direction.
DANmode 1 day ago||
> It's asking an author to suddenly become an editor.

It’s asking an author to suddenly become an editor if they decide to use the robot for a task.

Certain workplaces are demanding this - but not all.

Many still just want working commits without tech debt.

In fact, private and public teams alike are backed up at the PR review stage, so, lots of sane places wouldn’t mind individual contributors using the robot less - especially if its use increases the complexity of reviewing the task.

Speed isn’t the only variable to optimize for!

chadash 2 days ago||
I agree that agents can produce decent code. In general, I don’t find agentic code beautiful but neither is most of the code I write. The code for ingesting CSV files into my ETL pipeline doesn’t have to be beautiful, it just has to work.

I think the bigger issue (like many things in software engineering) is a management issue. Once upon a time, I could take a look at the final output of a project and if it looked like a Ferrari on the outside, I could have some confidence that there was a good engine under the hood. OF COURSE THIS WASNT ALWAYS TRUE, but something that looked good, or was performant, or whatever, was a decent proxy for the code underneath being good. And with a smart human, there were ancillary things. Having spent 20 hours coding something, they probably thought through the edge cases that their manager, or product team hadn’t considered.

With AI, everyone’s output looks like a Ferrari, so it is hard to know what the internals are like.

A lot of people will probably look at this and say “well you need better management”, but better management has always been elusive in software engineering. Furthermore, reviewing AI generated code is soul crushing work and I don’t know who wants to do it.

In my guesstimate the number of good engineering managers out there is actually very very small and in practice, the best managers that I’ve seen are the ones who don’t think they are good managers, so they just set a very high hiring bar and hire people who don’t need much management.

thw_9a83c 1 day ago|
> With AI, everyone’s output looks like a Ferrari, so it is hard to know what the internals are like.

Based on my experience, this is a significant issue with AI generated code. You wouldn't expect a real Ferrari supercar to have random internal mechanical components that are, for no reason, completely inappropriate for a high-speed car design. With AI generated code, such inappropriate components can appear randomly at any point in the implementation stack. And very often, they are deeply buried under non-trivial algorithms and are thus not easy to spot.

axegon_ 2 days ago||
Ah, the "skill issue" argument again. Same crap aswhen everyonewas worshiping Musk 5-6 years ago, this time it's dario and altman with a claude/chatgpt mask. Crash can't come soon enough.
skybrian 2 days ago||
And why wouldn’t writing software be a skill issue? Yes, it’s an annoying meme, but we should expect that there are better and worse ways to write software. It would be weird if everyone got the same results regardless of experience.

I’m doubtful that the author’s recommendation always work, but I do some similar things and they do seem to help.

tyleo 2 days ago|||
Not only that, but you really want it to be a skill. The book _Making Software_ describes skills as things you can get better at through practice, and talents as things you're born with.

I'd like to think the time and practice I've put into software engineering has made me better at it. If that's not true, then there's no reason to prefer senior or principal engineers with years of experience over newcomers.

malfist 2 days ago||||
Anyone who thinks they can produce high quality code from an LLM is mistaken about how to judge code. Trust me, I've seen enough PRs to last a life time. A lot of professionals wouldn't know good code if it slapped them in the face.
preg_match 2 days ago|||
You can most definitely produce high-quality code via an LLM, particularly if you test your code aggressively and review it. Yes there are a lot of shoddy PRs, but that's nothing too new. The problem with LLMs is the amount of code they produce. More code = more garbage. But, that code velocity can be leveraged to increase quality. Through careful design and testing.

Ultimately, I would take LLM code + high-quality multi-strategy testing over human code with little to no tests. And some would say "well that's a false dichotomy". I disagree, before LLMs engineers didn't have the time or incentives to aggressively test. The tests either would not exist, or would be shitty unit tests intended to get an arbitrary coverage percentage. Now, we can write high-quality tests, differential testing, fuzzing, and more, in much less time.

rented_mule 2 days ago||
Going much deeper on tests has been transformative for me. In a solo project started from scratch, I'm 6-7 weeks in, and it's up to ~90K lines. ~60K of those are tests. Those tests have now found (and then the agent has correctly diagnosed) multiple bugs in broadly used libraries that I'm using in my project. That's because those bugs surfaced as occasional issues in my project. Especially powerful are all the property-based tests (perhaps what you are calling fuzzing? I'm using the Python package called Hypothesis for this).

Another spectrum that I've found useful to explore is the scope of what I ask the coding agent to do in one turn. I see some people trying to do one massive prompt that the coding agent works on for a day or more. I find a large boost in overall quality if I do 10-20 prompts per day (not counting the prompts where I'm just trying to understand things). It's still much less of my time than hand-coding, but the resulting architecture looks like my own. The quality of the overall system is great. There are certainly issues here and there in the code, but it's always that way once a project gets large enough. Now it's easier to address any particular issue throughout the code base in one go.

asutekku 2 days ago||||
I'd argue for most people LLM produces much better code than they would be able to write themselves.
malfist 2 days ago|||
That is not an argument that LLMs produce good code
bluGill 2 days ago||
They produce good code when I'm personally reviewing them. There are a few other people who work with who likewise know how to review code and thus can get good code out of an LLM. There are, however, a lot of people who just accept the first slop that they get out of it and that's not good code.

The larger issue of good code isn't the actual individual lines, it's the overall architecture. And that's what I'm going to be reviewing first is, is this a good approach? Then the interfaces to other code is this a good interface. Get those two right and we can go back for the details. In a lot of cases, the LLM is plenty good at those details.

In some cases, an LLM is better than what I could do. Well, I suppose I can trace down all the locks in all the different special cases, and I have done that, but that was a huge amount of effort that I really don't want to repeat.

Note that I'm talking about recent models. If you're asking about the models of just one year ago, I would give a very different answer about the type of code an LLM produces.

abalashov 1 day ago|||
I'm not sure how literally you mean "most people". This might be true in a purely volumetric sense, but that's not really the bar around these parts...
deterministic 2 days ago|||
> Anyone who thinks they can produce high quality code from an LLM is mistaken about how to judge code

Sorry, but you are 100% wrong.

I have 30+ years of professional development experience working on complex, very large-scale C++ code used by companies around the world.

I care deeply about code quality and always have. More than any other developer I've worked with in my 30+ year career. And I'm now using Claude Code to push the quality bar much higher.

But you have to learn how to use it properly. It's a tool. Quality doesn't happen automatically.

It's a big mistake, and frankly quite arrogant, to assume that because it doesn't work for you, it can't work for anyone else. Or that the rest of us must either be lying or incompetent.

blub 1 day ago|||
It’s fair to ask people bragging about their amazing AI skills to show their code or GTFO. Hope it becomes established.
deterministic 1 day ago||
I work on proprietary software, so no, that’s not really a fair question to ask.

However, if you’re willing to share how you’re prompting the AI and some examples of where you think the results are poor, we might be able to help identify what’s causing the difference. I’d be genuinely interested in understanding why we’re getting such different results.

Rather than assuming one of us must be wrong, it would be more useful to compare approaches and see what we can learn from each other.

player1234 1 day ago|||
[dead]
pydry 2 days ago|||
>And why wouldn’t writing software be a skill issue

You've missed the point. Nobody doubts writing code well or badly is indeed a skill issue.

The question is that "once you account for all of the things you need to do to make the code very high quality, did vibe coding actually provide any real value?"

I'm certain there are guardrails that help bolster vibe coding but I'm equally certain that when ive prompted something important I usually have to redo it enough times that just writing it manually myself usually would have been quicker.

Then I watch other people who code who dump on that opinion and I see total slop. They just can't tell the difference.

AndrewKemendo 2 days ago||
I hate typing and like reading

That seems to be the primary difference I’ve found between people who embrace gen code and those who dont

The ones who dont, seem to like the physical act of typing, and that tends to cluster with people who write software all day

Sharlin 2 days ago|||
My experience is that most people don't enjoy code review, which is why it must usually be actively encouraged and not just something that happens naturally.

Mechanically writing boilerplate is not enjoyable, and unfortunately in some languages and domains most of the coding is writing boilerplate. Machines can help with that no problem.

What is presumably enjoyable to most programmers is writing the parts where the actual magic happens. The translation of informal ideas into formal representation has beauty, like mathematics has beauty. Designing and implementing structures of code and data that are as simple as possible, but not simpler, is rewarded with a feeling of artisanal satisfaction and pride. Few things in life are as satisfactory as figuring out an elegant solution to a challenging problem.

None of the above are necessarily bound to the actual typing of words and symbols. AIs can help with all of them, and act as a genuine force multiplier. I would describe that as "responsible use of AI". Unfortunately, it seems that incentives are often against such use.

pydry 2 days ago|||
high quality code means boiling down code to its bare essentials, not spewing boilerplate. that means deleting code where you can and crafting good abstractions while leaving functionality intact.

if you find the ratio between typing and thinking to be very high then you're probably producing a lot of slop.

This is a common theme I find when I hear about people's AI coding success stories. Where they say "its good at X" where X might be "backfilling unit tests" or "writing boilerplate" I usually think "if you find you need to do X a lot youre definitely doing programming wrong.

Ive actually yet to hear an X applied to production code that doesnt make me think that.

Daishiman 1 day ago||
> Ive actually yet to hear an X applied to production code that doesnt make me think that.

This is one of those things we value in theory in engineering but not in practice. Reducing code as an artifact might mean coming up with clever ways or compressing data, like making code that generalizes and abstracts. This is fine if you're experienced and clever. But a lot of organizations don't have that many clever or experienced engineers and those tools cause more harm in the hands of those people. Hence compromises must be reached and verbosity is valued because it is explicit.

I used to believe otherwise but then I worked in larger orgs with a lot of mediocre people who still provided value but needed to be given the means to add value.

Sharlin 2 days ago|||
In a way it reminds me of the good old "if agile doesn't work for you, you're not doing agile right".
osigurdson 2 days ago||
Agree. These days, if you think you have a methodology that works better than others, you can actually try it / compare it and publish it so that others can replicate and critique your work. Articles like this one, that merely claim they've found the secret sauce, therefore should not carry much weight.

That wasn't the case with 00s agile / Uncle Bob stuff since proving that any of it was helpful was impossible - you just had to believe (and if you didn't believe there was something wrong with you!).

hypfer 2 days ago|||
It actually is though?

Though arguably more of a process and judgement issue than skill.

What makes LLM-generated code a bit special there is that misjudging how to deal with it seems to be what most people do. So the default is broken.

Whereas in prior iterations of "skill issue", the default was working.

post-it 2 days ago|||
What's a crash going to do? The internet didn't disappear after the dot com bubble popped.
ModernMech 2 days ago|||
I think the point is just it doesn’t have to get worse, so there are things you can do to prevent / change it if it is deteriorating.
Sharlin 2 days ago||
Yes, but it doesn't matter if nobody actually does that. Either because

1. they don't care

2. the rest of the team doesn't care

3. the powers that be actively discourage it because velocity.

axegon_ 2 days ago|||
Exactly. Most restaurants you go to don't care about the food they serve you nor do they care about the products they use, as long as it doesn't harm their business. Same with groceries - manufacturers don't care, as long as what they sell you is acceptable and passes regulations. But once you go to a restaurant with standards, you can immediately tell the difference. I do not come from a wealthy family and even as such, I certainly prefer paying the higher price now that I can afford it.
bucket2015 2 days ago||||
That's a fair point. I guess step 0 is that you have to care about code/product quality and prioritize it.
rgoulter 2 days ago|||
Without LLMs, you can still have bad development processes which lead to increasing technical debt with no plan for paying it off.

LLMs let you move faster.

But it's not as if introducing them is the only reason your codebase isn't high quality.

hajile 2 days ago|||
When you’re required to approve thousands of lines a day (code you can’t possible understand), it certainly IS causing issues that didn’t exist before.

Every study I’ve seen correlates the use of AI with large increases in the number of bugs. Look at Amazon dialing back AI after massive outages. Microsoft patch Tuesday releases are bricking computers (they even managed to break notepad somehow). The rash of Facebook bugs also coincided with their move to AI. Leaks from Google have engineers saying AI either doesn’t save any time because it takes so to remote stuff or it causes breakages if they speed up.

These companies can afford to get the best devs. They have access to essentially unlimited token budgets. They have STILL fallen off a cliff in quality.

What more proof could there be that this isn’t sustainable?

bitwize 2 days ago||
A correlation-causation link between AI use and these bugs has not been established. Until it has proven to come from the region of AI-pagne, it's just sparkling enshittification.
hajile 1 day ago||
This isn’t the human body or some other thing with billions of unknown parameters. It’s a single (relatively simple) math equation that you are ascribing tons of non-existent complexity to.

Left to its own devices, that system will result in AI autophagy (model collapse) and iterative degradation.

The only area with serious uncertainty is how humans interact, but we now have research showing humans suffer cognitive issues very quickly using AI (some studies indicate effects happen in as little as 10 minutes) with cognitive surrender being a particularly big issue.

In a lot of systems, the only new data seems to be a few brainstorming sentences (you can read slop as entropy decaying things). The AI slops that into requirements. That slop feeds into an agent which generates a bunch of “reasoning” slop, maybe compacts everything (more slop), and spins up agents that get handed slop. They then open files with who knows how many generations of slop (maybe never even touched by a human) and write out a bunch more slop (it’s ironic that humans get better the more they edit a file, but AI gets worse). That slop gets “tested” by another agent reading all the other slop and maybe all this recurses a few generations.

At the end of this AI equivalent to “the human centipede”, you get a developer who’s handed 10x or maybe even 100x more code than their brain would possible process. They are suffering complete cognitive surrender (not to mention often reaching mental and maybe physical collapse from the workload and stress). They don’t understand the system and rubber stamp it so they can move on to the next 50 PRs of the day.

From start to finish, it’s 100% entropy outside a handful of lines worth of human input.

Many people predicted bugs and even discussed entropy issues before AI coding was popular. The buggy mess timing aligns not only with AI adoption, but happens to each company ramping up as they ramp up AI usage.

This is like seeing Einstein’s predictions happen, but arguing he can’t prove correlation/causation. What evidence would you actually accept that is feasible to study?

Sharlin 2 days ago|||
So you're saying that LLMs let you accrue technical debt faster? I suppose that's like the fact that living on payday loans let you accrue monetary debt faster.
rgoulter 2 days ago||
Yes.

I think if you're on a team that cares about quality, LLMs can help you write quality code faster.

If you're on a team that's mindful about technical debt, you can have make practical trade-offs for velocity now at the expense of paying off technical debt later.

And if you're on a team that's unable to care about code quality ("I gotta merge this code now!"), then you can write mountains more code than you can understand.

mitxela 2 days ago|||
What were people worshipping Musk for 5-6 years ago?
CrimsonRain 2 days ago|||
It is indeed skill issue.

You don't think crash will happen because XYZ. You _wish_ for the crash because you are hateful of progress that you are not part of.

mitxela 2 days ago|||
Studies (e.g. METR) show AI programmers think they're better but they're worse.
bitwize 2 days ago|||
METR has admitted that that study was flawed, and when they tried to rerun it they hit a snag: nobody wants to not use AI to code anymore!
vasko 2 days ago||||
Anthropic's own study showed the same, yet people ignore it.
Madmallard 2 days ago|||
assuredly true
axegon_ 2 days ago||||
> You _wish_ for the crash because you are hateful of progress that you are not part of.

Microsoft 2000

> You _wish_ for the crash because you are hateful of progress that you are not part of.

Facebook 2008

> You _wish_ for the crash because you are hateful of progress that you are not part of.

Cryptobros 2013

> You _wish_ for the crash because you are hateful of progress that you are not part of.

Altman/Dario/Musk 2020-onwards.

There might be a trend here...

SaucyWrong 2 days ago|||
Microsoft is a monopolist that makes some of the most hated products on earth.

Facebook has been shown to derange young minds and has been a nonstop firehose of disinformation into global public discourse.

Crypto moved an insane amount of wealth from the poor to the rich through and uncountable number of scams and empty promises.

These? These are what you call progress? Yes, the created wealth for a few individuals, but progress? No, my friend.

deterministic 2 days ago|||
> Microsoft is a monopolist that makes some of the most hated products on earth

Really? That is quite a claim. You are talking about one of the worlds most successful software companies. What fact based research or large scale survey do you base that on?

SaucyWrong 2 days ago|||
I’ll cop to not having facts to back up the perception of its software, but its status as an illegal monopoly is cemented by its successful prosecution by the DOJ.

But Facebook is extremely successful. Some crypto companies are very successful. I don’t hold any of these up as exemplars of the progress of humanity.

EDIT: My response to the GP, whose claim was that the only reason for the haters is that in each case they wanted the business to fail because they weren’t part of it, should been, no, actually there were at the time other and valid reasons detractors of those companies thought the way they did, and the same is true this time.

player1234 1 day ago|||
[dead]
axegon_ 1 day ago|||
I was being sarcastic. I hate all of those with a passion.
SaucyWrong 22 hours ago||
Bravo, the sarcasm went right over my head :)
vanuatu 1 day ago|||
Famously, Microsoft stop progressing after 2000. Facebook disappeared after 2008. BTC stopped appreciating since 2013. All the investors in these trends regretted it.
SaucyWrong 22 hours ago||
Yeah again, you’re confusing wealth accumulation for progress.
mcmcmc 2 days ago|||
Why presume hate?
rgoulter 2 days ago||
LLMs are not magical tools which take slop as input, and produce well thought out documentation and tests and code as a result.

Over the last year, LLM coding agents gotten pretty good. It's no longer "if your results suck, you gotta try the latest and greatest model". You can get capable results on a wide variety of tasks, with a wide variety of models, used in a wide variety of ways.

fishfasell 2 days ago||
I think there's a lot of setup and context required for an AI agent to consistently write good code. Once the agent has these guard rails in place I usually get great quality- far better than what I would write in most cases.

I think where things get dicey is being able to write in any language. I write and review code in many languages and frameworks I'm not fluent in, so it's hard for me to distinguish between working code and great code. I can spot when the fundamental logic is wrong, but when it comes to "best fit" choices I'm clueless.

this_user 2 days ago||
The issue is that in order to have the agent write good code, you need to implement standard SWE best practices. But that also means a lot of manual intervention in terms of writing specs, checking acceptance criteria, and reviewing code. So you end up spending a lot of time on managing your agent, which means you won't get a 1000% productivity gain, you get maybe 50 or 100, possible less in some areas and with some issues.
lolakutty 2 days ago|||
> implement standard SWE best practices

The thing is, if you follow SWE best practices indiscriminately, then you ll have a shit code base in no time.

There is no silver bullet, and no replacement for experience and mindfulness.

user43928 2 days ago||||
A 1000% productivity gain is quite possible on solo greenfield projects.

At work, with a team and code reviews, the 50%-100% figure seems much more likely.

This can probably move towards the more spectacular productivity gains as the AI's output becomes more reliable, people realize this, and less time is spend on code review and cleaning up the output.

beezlewax 2 days ago||||
50 or 100 seems unlikely. Even with all these improvements, custom setups and guardrails it just isn't that much faster for me.
bigstrat2003 1 day ago|||
You get 0% productivity gains if you are careful and actually reviewing the code the LLM produces. The only way to actually get the massive productivity gains that AI bros claim is to throw quality out the window.
kuczmama 2 days ago|||
I'm curious as to what guardrails you've tried.

This is something I have been trying to get right as well. I've attempted to use lots of linting and things like strong typing, duplicate checks, cyclomatic complexity, and robust tests. However, I still happen to find issues, which requires me to look at the code (at least at a high level)

For example, I can say "Don't repeat yourself, and don't re-write helper functions" and I will even have a duplicate linter check, but inevitably the LLM will always want to re-write a similar yet slightly different helper function. Like it will always want to re-write something small like a trim() or a toString() function in every file.

bucket2015 2 days ago|||
I find that if I leave an instruction in AGENTS.md to "do not do X", there's a good chance the agent will forget it.

But if I add a separate post-implementation pass to "find and fix X" by the agent, it'll usually find and fix the issues.

So I've started doing it for everything from naming conventions to duplicate code to other problems. It does cost more tokens, but now I get less frustrated at having to fix basic issues in the PRs.

esprehn 2 days ago||||
Have you tried something like "Always consult the utils/ package before writing helper functions. When adding a new generic helper function justify it in your design or PR description."

I have better luck telling it positive things rather than lots of "never do X" style things.

kuczmama 2 days ago||
That's a good idea to give more positive instructions as opposed to negative instructions. I think you've stated it well, I suppose the problem with negative instructions is that the LLM doesn't know what to do instead.

"Never re-write a helper function" vs "Always search for helper functions before writing one" the "never... " one doesn't tell the LLM what to do, so it would have to make the logical leap from not re-writing to knowing that it should search. While it's a minor leap to make in isolation, I suppose stacking many negative rules in an AGENTS.md would assume that every time it will always make that logical conclusion on what to do.

ytoawwhra92 1 day ago|||
> Don't repeat yourself, and don't re-write helper functions

It's worth reflecting on why these things are important to you and whether they remain important in an agent-developed codebase.

sevenseacat 1 day ago||
Yes, they are both still very important for consistency throughout your codebase and any user interface for it.
ytoawwhra92 1 day ago||
Consistency of behaviour and UI can be tested.
nicce 2 days ago||
I would say that it is like gardening. If you let them go havoc from the start, the weed will take over. If you keep focusing on removing the weed and enforce specific standards and practices over the code base and it keeps growing, over time LLMs start to suddenly follow that and they don't make so much slop anymore. At least that is my experience. But I force specific audit agent after every added feature which says them to force compliance with AGENTS.md and check the consistency with the code base.
teliskr 2 days ago||
I am getting really good results from claude. We have a 22-year old legacy system. The system is stable, but had issues as all legacy systems do. Claude has been great for modernizing the codebase, updating dependencies, auditing security, and rapidly adding new features. It has worked well with existing code style and patterns. Sometimes it is a little off-track, but overall it is pretty amazing.

When implementing new features or making large refactoring changes; I use the superpowers:brainstorming skill. That has consistent process which has worked really well. I alway review the code before merging, but most of the time there are few issues to correct.

I don't do 95% coverage, but I have increased it from 65% to about +80% and that is sufficient.

deterministic 2 days ago||
My experience as well, working on very large-scale C++ code.

Thanks for adding such a thoughtful and level-headed comment to the discussion.

lolakutty 2 days ago||
>most of the time there are few issues to correct.

Kindly share the metrics by which you evaluate the changes.

teliskr 2 days ago|||
Lately, I've seen a couple responses to my comments which inquire about metrics. They seem strange and I wonder if they are bots. I just noticed this inquiry is from an account that is 11 days old. How does one benefit by adding bot comments in a forum like this?
edgyquant 2 days ago|||
They’re not bots they are ai skeptics who want to prove that ai isn’t actually productive we all just think it is
teliskr 1 day ago||
I can understand normies being AI skeptics, but at this point it is a pretty insane position for any developer/nerd. It's like being schizophrenic and completely out of touch with reality.
breakpointalpha 1 day ago||
Asking for proof of improvement is a very rational reaction to the last three to five years of constant AI hype cycling.

It's a simple question that seems to make AI cheerleaders really mad.

"How are you measuring improvement."

I use AI for coding every day and see it fail all the time, I'm a seasoned developer and early tech adopter just like everyone else on HN. I'm still very skeptical because of how often these systems just miss. It's gambler's ruin on a very large scale, we remember the hits and forget the misses.

teliskr 1 day ago||
What kind of metrics are you looking for? No one answers that question. It's like asking for clinical trial results about whether or not a parachute works and if you should use one when jumping out of a plane.

I don't expect AI to be perfect. Are people perfect? I leave room for corrections, but at this point they are usually minor and acceptable.

lolakutty 2 days ago|||
take a look at my comments and tell me if you feel like I am a bot...
teliskr 2 days ago|||
oh, no worries.. what kind of metrics would be helpful here?
fragmede 2 days ago|||
If you could stop creating new accounts, that would be great though
lolakutty 2 days ago||
This is my very first account...
fragmede 2 days ago||
Apologies then! There's been a rash of new accounts from an individual who is too cowardly to keep with one account.
teliskr 2 days ago|||
I don't require metrics in these instances. I review the code and test the functionality. That is sufficient for my needs.
lolakutty 2 days ago||
> I review the code...

If this is true, then you are not saving a lot of time. Because most of the time is spent evaluating various options and ways to implement the functionality. Even when you are reviewing, you ll have to do that. (With LLMs, this is even more feasible, because now you can actually implement some of the variants, and evaluate them).

But on the other side, you are saving from typing the code. So if you are really reviewing everything, then you are not saving much time. The alternative is that you settle for some local maximum during each review, that in long term won't necessarly translate to a globlal maximum or even a global "good enough" position...

teliskr 2 days ago||
I'm saving time. It's implementing features in a few hours that would have taken me weeks to implement. I can review code much faster than I can create well reasoned, implemented and tested solutions.
lolakutty 2 days ago||
Can you tell me what the most complex thing (software) that you have yourself implemented is?
senordevnyc 2 days ago|||
This faux socratic method flavor of AI skepticism is so cringe at this point, and reeks of your own insecurity in your beliefs. We get it, you don't think AI is useful for the type of coding people claim it is. Why on earth would anyone try and convince you at this point?
lolakutty 2 days ago||
>AI is useful

This is not a binary thing. It could be useful at the same time detrimental in some manner. Look at smartphones. I am just raising the possibilities if one use LLMs indiscriminately to generate code.

senordevnyc 2 days ago||
No, that would be more honest. Instead you’re asking loaded questions as if anyone owes you an explanation or proof.
lolakutty 1 day ago||
Don't answer then...its as simple as that...

They can LLM themselves to complete lock in for all I care...

senordevnyc 1 day ago||
lol, yeah, you clearly don’t care at all
lolakutty 1 day ago||
I care about other things. Like my amusement that I get when I see the AI praising accounts go silent once they are pushed a bit...
senordevnyc 1 day ago||
Probably because it's utterly pointless to try and convince someone in 2026 that LLMs are useful for coding. Why waste time trying to talk to someone with their head in the sand?
lolakutty 1 day ago||
>LLMs are useful for coding..

No one said they are not...look at my comment above in this thread!

Why are you so mad lol...

senordevnyc 1 day ago||
lol, why are you still here trolling?
lolakutty 1 day ago||
Calm down..I don't want to ruin your day or something..
moltar 2 days ago||
I think it’s much more simple than that. It comes down to caring.

I’ve had a long discussion with a coworker on a long drive.

What we came to realize is the difference in our attitude towards writing code.

I approach it as craft. Even when I’m doing 100% of my coding with an agent these days. I still care about the result to be of high quality and maintainability. I still use my system design knowledge to guide the agent to produce scalable systems.

He treats it like just a job. If it’s good enough he ships. The edge cases and bugs don’t matter. Can be fixed later.

But in my mind that’s a fallacy. We all know things don’t get fixed later unless they are obvious defects and users complain.

Instead we get slow degradation of overall quality. All those small issues compound overtime to create a brittle systems that is difficult to debug and maintain.

My mental model of software engineering is like this. Each commit/PR is a small LEGO block. If you make them well they’ll snap well and create a stable structure that can withstand forces. If every LEGO block you make is just slightly off here and there. Your structure becomes unstable and will always have faults and will always have failures under unpredictable environmental pressures.

bunderbunder 2 days ago|
And this is why I mildly dislike the term “software engineer”. If a mechanical engineer took your colleague’s approach toward their work, they would be legally liable for engineering malpractice.
Havoc 2 days ago||
I'd say step 0 is know your audience.

I'm happily vibing my own toy projects, but would prefer if the tech in hospitals is not vibe coded.

And I don't think it's plausible that the gap between those two is "well you just need to use it right".

Daishiman 1 day ago|
> And I don't think it's plausible that the gap between those two is "well you just need to use it right".

But this has always been the gap between effective software engineering and garbage. When humans write software we put a large amount of effort in having best practices, hiring seniors with a track record, and enforcing process that empirically shows good results in reliability.

This is the same in AI. You need to have thorough code reviews by humans and agents, do a lot of manual QA, understand the tradeoffs when codebases grow, keep good documentation, keep bad comments out or anything that wastes the agents' context windows, etc.

The reality is that most people who produce mediocre code are mediocre users of AI, except that now they're empowered to produce crap 10 times faster and are too ignorant to distinguish between productivity and accelerated crap production.

oefrha 2 days ago||
If AI coding isn’t lowering your code quality, you have a low starting point.
bguebert 1 day ago|
I feel like this is the deal. If you already have a revolving door of tons of entry level developers you hire to churn code then AI agents are no difference to your process. The thorough approval and testing process you already have from that works the same.
compiler-guy 2 days ago||
A sibling comment talks about needing a lot of setup and context for agents to produce good code. That’s both true and bizarre.

If the compiler that I write produces lousy code, I get bugs that I fix until it doesn’t.

And that is the most annoying thing about this revolution. It’s obviously powerful and transformative and I use in my job all the time.

But many, perhaps even most, purveyors seem intent on blaming their users when they have issues, rather than fixing their own bugs.

General model improvement is going a long way here, but basic things like “ensure you use good style and programming practices” really shouldn’t be a thing users need to put in any .md file.

Jare 2 days ago||
A programming language spec is expected to be unambiguous. A compiler is expected to be deterministic. There are multiple ways to different outputs when compiling (optimizations, etc) but those are also meant to be well defined and deterministic themselves.

AIs are stochastic/probabilistic machines. Their big potential is in how they take malformed, incomplete, ambiguous inputs and come up with valuable and usable solutions.

compiler-guy 2 days ago||
If everyone needs to give them roughly the same set of instructions to get good results, then those instructions should be built in.

Good defaults are expected in pretty much every other tool.

And “You just have to set it up carefully and properly” is pretty much saying that the defaults are never good enough.

user43928 2 days ago||
You obviously don't need to put such things into .md files.

They are already present in the harness.

In my opinion there is all kind of worthless advice going around, including skills or prompts, where the authors have never benchmarked them against clean runs.

That said, when you are dissatisfied with specific aspects, it can be beneficial to request them as a separate review stage.

smargopulos 2 days ago|
If AI is not lowering your code quality, you weren't very good to begin with. The point of AI is to increase your productivity tenfold while maintaining acceptable (but not great) code quality.
vehemenz 2 days ago|
What do you mean the point of AI? The point of AI is to do whatever I tell it to do.

Its lack of “quality” (always invoked in a metaphysical sense) isn’t a problem for most of its uses. It can automate, research, build boilerplate, and test way faster than a human.

More comments...