AI may be multi-threaded, but there's still a human, global interpreter lock in place. :D
If you put the code up for review, regardless of the source, you should fundamentally understand how it works.
This raises a broader point about AI and productivity: while AI promises parallelism, there's still the human in the middle who is responsible for the code.
The promise of "parallelism" is overstated.
100's of PRs should not be trusted. Or at least not without the c-suite understanding such risks. Maybe you're a small startup looking to get out the door as quickly as possible, so.. YOLO.
But it's going to be a hot mess. A "clean up in aisle nine" level mess.
I strongly agree, however manager^x do not and want see report the massive "productivity" gains.
I know many who have it on from high that they must use AI. One place even has bonuses tied not to productivity, but how much they use AI.
Meanwhile managers ask if AI is writing so much code why aren't they seeing it on topline productivity numbers.
>> I know many who have it on from high that they must use AI. One place even has bonuses tied not to productivity, but how much they use AI.
> How does maximizing AI use prevents developers from reading their code?
In my mind developers are responsible for the code they push, no matter whether it was copy pasted or generated by AI. The comment I responded to specifically said "bonuses tied not to productivity, but how much they use AI". I don't see that using AI for everything automatically implies having no standards or not holding responsibility for code you push.
If managers force developers to purposefully lower standards just to increase PRs per unit of time, that's another story. And in my opinion that's a problem of engeneering & organisational culture, not necessarily a problem with maximizing AI usage. If an org is OK with pushing AI slop no one understands, it will be OK with pushing handwritten slop as well.
That's basically what I'm referring to.
"Claude did that" is functionally equivalent to "idk I copied that from r/programming" and is totally unacceptable for a professional
I have never seen this standard reached for any real codebase of any size.
Even in projects with a reputation for a strong review culture, people know who the "easy" reviewers are and target them for the dicey stuff (they are often the most overloaded... which only causes them to get more overloaded). I've seen people explicitly state they are just "rubber stamping" PRs. Literally no one reviews every line of third-party dependencies, and especially not when they are updated routinely. I've seen over a million lines of security-sensitive third-party code integrated and pushed out to hundreds of millions of users by a handful of developers in a matter of months. I've seen developers write their new green-field code as a third-party library to circumvent the review process that would have been applied if it had been developed as a series of first-party PRs. None of that had anything to do with AI. It all predated AI coding tools. That is how humans behave.
Does this create ticking time-bombs? It absolutely does. You do the best you can. You triage and deal with the most important things according to your best judgment, and circle back to the rest as time and attention allow. If your judgment is good, it's mostly okay. Some day it might not be. But I do not think that you can argue that the optimal level of risk is zero, outside of a few specialized contexts like space shuttles and nuclear reactors.
I know. It hurts my soul, too. But reality isn't pretty, and worse is better.
If you submit a PR and you yourself can not personally vouch for every line of code as a professional…then you are not a professional. You are a hack.
That is why these code generation tools are so dangerous. Sure, it's theoretically possible that a programmer can rely on them for offering suggestions of new code and then "write" that code for a PR such that full human understanding is maintained and true craft is preserved. The reality is, that's not what's happening. At all. And it's a full-blown crisis.
100% my takeaway after trying to parallelize using worktrees. While Claude has no problem managing more than one context instance, I sure as hell do. It’s exhausting, to the point of slowing me down.
Ask pretty much any FOSS developer who has received AI-generated (both code and explanations) PRs on GitHub (and when you complain about these, the author will almost always use the same AI to generate responses) about their experiences. It's a huge time sink if you don't cut them off. There are plenty of projects out there now that have explicit policy documentation against such submissions and even boilerplate messages for rejecting them.
That said, the models, or to be more precise, the tools surrounding it and the craft of interacting with it, are still improving at a pace where I now believe we will get to a point where "hand-crafted" code is the exception in a matter of years.
That will work, but only until the people filing these PRs go crying to their managers that you refuse to merge any of their code, at which point you'll be given a stern reprimand from your betters to stop being so picky. Have fun vibe-reviewing.
Nothing can move fast enough to keep up with these hype-fueled TED talk expectations all the way up the chain.
I don't know if there's any solution and I'm sure it's not like this everywhere but I'm also sure I'm not alone. At this point I'm just trying to keep my feet wet on "AI" related projects until the hype dust settles so I can reassess what this industry even is anymore. Maybe it's not too late to get a single subject credential and go teach math or finger painting or something.
So I guess if you asked Claude why it did that, the truth of it might be "IDK I copy pasted from StackOverflow"
The same stuff pasted with a different sticker. Looks good to me.
You're right, saying you got something off SO would get you laughed out of programming circles back in the day. We should be applying the same shame to people who vibe code, not encourage it, if we want human-parseable and maintainable software.
For whom is this a danger for?
If we're paid to dig ditches and fill them, who are we to question our supreme leaders? They control the purse strings, so of course they know best.
This is a very cruel punishment sometimes used in forced labor camps. You are describing torture.
I've also seen "Ask ChatGPT if you're doing X right?", and basically signing off whatever it recommends without checking
At this point I'm pretty confident I could trojan horse whatever decision I want from certain people by sending enough screenshots of ChatGPT agreeing with me
So, for example, by and large the orgs I've seen chucking Claude PRs over the wall with little review were previously chucking 100% human written PRs over the wall with little review.
Similarly, the teams I see effectively using test suites to guide their code generation are the same teams that effectively use test suites to guide their general software engineering workflows.
Lots of companies just accept bugs as something that happens.
Calendar app for local social clubs? Ship it and fix it later.
B2B payments software that triggers funds transfers? JFC I hope you PIP people for that.
Stack Overflow had enough provenance of copying and pasting. Models may not. Provenance remains a thing or it can add risk to the code.
It's not, and yet I have seen that offered as an excuse several times.
Inb4 the chorus of whining from AI hypists accusing you of being an coastal elitist intellectual jerk for daring to ask that they might want to LEARN something.
I am so over this anti-intellectual garbage. It's gotten to such a ridiculous place in our society and is literally going to get tons of people killed.
No, like you I’m getting more PRs that are less reviewable.
It multiplies what you’re capable of. So you’ll get a LOT of low quality code from devs who aren’t much into quality.
For the most part, I've noticed my LLM-using coworkers producing better PRs, but I haven't noticed anyone producing more.
It does, but that experience was a real thing long before AI-generated code.
"Then your job is to go ask Claude and get back to me. On that note, if that's what I'm paying you for now, I might be paying you too much..."
I'm really interested to see how the intersection of AI and accountability develops over the next few years. It seems like everyone's primary job will effectively be taking accountability for the AI they're driving, and the pay will be a function of how much and what kind of accountability you're taking and the overall stakes.
Not meaning to put on a holier-than-thou hat here. But I hated this many times already. E.g. having to approve code that contains useless comments that were clearly generated by AI, but on the other hand, it's nitpicking to bring it up during review...
If my colleagues would do that more often and for more parts of the code, that's where I really start getting inclined to look for a new job.
Could this be fixed by adjusting how tickets are scoped?
I would want someone entirely off of my team if they did that. Anyone who pushes code they don't understand at least well enough to answer "What does that do?" and "Why did you do it that way?" deserves for their PR to be flat out rejected in whole, not just altered.
Using AI tooling means, at least in part, betting on the future.
It means betting on a particular LLM centric vision of the future.
I’m still agnostic on that. I think LLMs allow for the creation of a lot of one off scripts and things for people that wouldn’t otherwise be coding, but I have yet to be convinced that more AI usage in a sufficiently senior software development team is more valuable than the traditional way of doing things.
I think there’s a fundamental necessity for a human to articulate what a given piece of software should do with a high level of specificity that can’t ever be avoided. The best you can do is piggy back off of higher level language and abstractions that guess what the specifics should be, but I don’t think it’s realistic to think all combinations of all business logic and ui can be boiled down to common patterns that an LLM could infer. And even if that were true, people get bored/like novelty enough that they’ll always want new human created stuff to shove into the training set.
The probability of plain english being correctly translated to code depends on existing code and documented abstractions describing lower level functionality.
Humans, for example, aren't a layer of abstraction. Having a team of engineers doesn't enable you to say "build X" and just forget about it.
Yet HN has what feels like one blog post or article to that effect every day. Some senior person describing their workflow, arguing that this makes them 10x of before.
It's refreshing to get the other perspective now and then.
When computers give different answers to the same questions it's a fundamental shift in how we work with them.
At one of my jobs, the PRs are far less reviewable, but now the devs write tests when they didn’t used to bother. I’ve always viewed reviewing PRs as work without recognition, so I never did much of it anyway, but but now that there are passing tests, I often approve without more than a cursory skim.
So yes, it has made their work more productive for me to get off my plane.
Mostly blindly approving PRs mainly because they now contain some form of equally AI-generated tests is exactly the producticity fallacy that's the issue here.
Personally, I’ve been seeing the number of changes for a PR starting to reach into the mid-hundreds now. And fundamentally the developers who make them don’t understand how they work. They often think they do, but then I’ll ask them something about the design and they’ll reply: “IDK Claude did that.”
By no means am I down on AI, but I think proper procedures need to be put into place unless we want a giant bomb in our code base.