←back to thread

270 points imasl42 | 3 comments | | HN request time: 0s | source
Show context
strix_varius ◴[] No.45659881[source]
To me, the most salient point was this:

> Code reviewing coworkers are rapidly losing their minds as they come to the crushing realization that they are now the first layer of quality control instead of one of the last. Asked to review; forced to pick apart. Calling out freshly added functions that are never called, hallucinated library additions, and obvious runtime or compilation errors. All while the author—who clearly only skimmed their “own” code—is taking no responsibility, going “whoopsie, Claude wrote that. Silly AI, ha-ha.”

LLMs have made Brandolini's law ("The amount of energy needed to refute bullshit is an order of magnitude larger than to produce it") perhaps understated. When an inexperienced or just inexpert developer can generate thousands of lines of code in minutes, the responsibility for keeping a system correct & sane gets offloaded to the reviewers who still know how to reason with human intelligence.

As a litmus test, look at a PR's added/removed LoC delta. LLM-written ones are almost entirely additive, whereas good senior engineers often remove as much code as they add.

replies(14): >>45660176 #>>45660177 #>>45660521 #>>45661077 #>>45661716 #>>45661920 #>>45662128 #>>45662216 #>>45662752 #>>45663314 #>>45664245 #>>45672060 #>>45679145 #>>45683742 #
Etheryte ◴[] No.45660521[source]
In my opinion this is another case where people look at it as a technical problem when it's actually a people problem. If someone does it once, they get a stern message about it. If it happens twice, it gets rejected and sent to their manager. Regardless of how you authored a pull request, you are signing off on it with your name. If it's garbage, then you're responsible.
replies(8): >>45660554 #>>45661363 #>>45661709 #>>45661887 #>>45662382 #>>45662723 #>>45663123 #>>45664880 #
travisgriggs ◴[] No.45663123[source]
I largely agree with sibling responses.

BUT...

How do have code review be an educational experience for onboarding/teaching if any bad submission is cut down with due prejudice?

I am happy to work with a junior engineer and is trying, and we have to loop on some silly mistakes, and pick and choose which battles to balance building confidence with developing good skills.

But I am not happy to have a junior engineer throw LLM stuff at me, inspired the confidence that the psycophantic AI engendered in it, and then have to churn on that. And if you're not in the same office, how do you even hope to sift through which bad parts are which kind?

replies(2): >>45663266 #>>45667025 #
CuriouslyC ◴[] No.45667025[source]
Code review as an educational device is done. We're going to stop caring about the code before people who are bad programmers right now have time to get good.

We need to focus on architectural/system patterns and let go of code ownership in the traditional sense.

replies(1): >>45668204 #
deltaburnt ◴[] No.45668204[source]
Aren't you effectively saying that no one will understand the code they're actually deploying? That's always true to an extent, but at least today you mostly understand the code in your sub area. If we're saying the future is AI + careful review, how am I going to have enough context to even do that review?
replies(1): >>45668329 #
CuriouslyC ◴[] No.45668329[source]
I expect that in most cases you'll review "hot spots" that AI itself identifies while trusting AI review for the majority of code. When you need to go deeper, I expect you'll have to essentially learn the code to fix it, in roughly the same way people will occasionally need to look at the compiler output to hunt down bugs.
replies(1): >>45676738 #
1. klardotsh ◴[] No.45676738[source]
Human trust has to be earned, why should AI trust be any different? If I’m supposed to yolo-approve any random code a machine spits out, it had better prove to me it’s nearly flawless, otherwise I’m applying the same review regiment I apply to any other code. To do otherwise is to shame the word “engineering” and the field thereof.
replies(1): >>45677572 #
2. CuriouslyC ◴[] No.45677572[source]
Engineering is a game of tradeoffs. Time is one of the things you have to trade off, given your strong opinions I expect this is something you've been in the industry long enough to understand intuitively.

Regarding proof, if you have contracts for your software write them up. Gherkin specs, api contracts, unit tests, etc. If you care about performance, add stress tests with SLOs. If you care about code organization create custom lint rules. There are so many ways to take yourself out of the loop rigorously so you can spend your time more efficiently.

replies(1): >>45687259 #
3. int_19h ◴[] No.45687259[source]
> Regarding proof, if you have contracts for your software write them up. Gherkin specs, api contracts, unit tests, etc.

We really need widespread adoption of stuff like design-by-contract in mainstream PLs before we can seriously talk about AI coding.