If you are asking for human attention, demonstrate human effort
https://tombedor.dev/human-attention-and-human-effort/This single headline perfectly captures what I have been thinking. It's not that I reject AI content, but it takes _effort_ to review and weed out any mistakes. When your thoughtful reviews that take an hour(because the PR is typically large, and you want to be _right_ when you're pointing out a hallucination) gets an AI-generated response with AI-generated amendments, It doesn't feel _nice_. I feel dismissed and it has continuously trained me to subconsciously avoid his PRs. After all, the team is fully onboarded with AI, so it's not like there is a lack of PRs to review.
It looks like the sentiment isn't just isolated for me.
And the exact same things you would need to safely give up on PRs for human developers (auto-formatters, linters, comprehensive end-to-end tests, continuous deployment pipelines, etc), are also things that place meaningful guardrails on LLMs, and help them maintain a reasonable quality bar.
If that's genuinely your attitude then your org has a problem.
Code review is slow and less fun, for the average sw eng. But for high quality work it's indispensable. So treat code reviews as a scarce resource. Optimize for code reviewer time and attention. Have your PRs the right size? Are they well described? Do you give context? Do they fit in the bigger story? Do you mix in unrelated drive-by fixes? How easy is it to deal with you once you have received comments? Do you address them promptly? Do you give your reviewers credit (if not praise) for their help? Do you give back by doing code reviews yourself with high quality feedback? There are lot of things you can do to streamline things and give code reviews the place in a teams workflow that it deserves.
That said, sometimes low-trust environments are the issue, not PRs. In a higher trust environment, PR review is a helpful thing you usually desire, not dread.
I've worked with people who consider themselves 'prolific humans'. Someone always has to tidy upp later, and its never them
1. Your skills are >2 standard deviations above everyone else's.
2. You're fast at producing a lot of half-baked garbage, and your coworkers are too shy to confront you, so they just try to ignore it.
(one of these scenarios is much more likely)
I am not sure there is a good analogue for reviews in the AI world. The human operating the AI should obviously review everything produced but that is clearly not as good as a second pair of human MK1 eye balls from pair programming.
Then don't review the code. Ask Agents to review and merge it, also shift the responsibilities to the AI agents as well.
If you think human is a bottleneck, then either optimize for humans, or remove humans. What's the problem?
Prolific humans should scale to the review/test/QA/staging backpressure - not just push to have whatever they produce accepted.
Prolific is not a badge of honor, and "lines of code" is not a quality metric.
I would always feel bad in those cases, because it's clear they spent a lot of time, and I'm going to have to say "no" and they will feel like they wasted a ton of effort.
The thought process around this has started shifting for me in the last few weeks. I'm a lot more comfortable saying "no" with a list of concerns when I suspect the code is AI-generated, and I see others doing the same. CLs that would be sitting around for days because no one wants to be the first to say, "this is bad, don't do this" now get quicker feedback.
The good thing is this feedback doesn't feel like as big a deal as it used to because people are less personally attached to code they generated in 30 minutes vs. code they hand crafted over a week. I had at least 2 LLM-generated PRs that were complete, correct, tested, and pre-reviewed by me, but I got feedback that they were going in the wrong direction. This would have been 8 hours of wasted effort a year ago, but now it's just an extra 30 minutes to rework the direction with LLM assistance.
I get this feeling, too. I do however think the onus is on the developer to make something reviewable by their team members if they want a speedy review. Stacked PRs, scoping things down, properly structuring commits so you can review commit-by-commit for example.
I also think that "I spent a bunch of time on this" is not a valid reason for expecting an approval. It should hurt if you've produced a bunch of code that is way off target, even if it ends up implementing the feature. That's how I learned at least.
A proper way to go about large projects, in my opinion, is the same as with software development at large. Fail fast if possible. Draw up a crude boxes and arrows sketch or just discuss how you want the code to integrate with whatever already exists and invite the team to comment. If no one has anything to say, well then they can't complain later when you implement that approach. But if anyone cares then most likely valueable input will come that makes the end result better.
If they continue to do that, then someone has to tell them they're doing a bad job.
And a some of them never did improve, and got fired for it.
I think slowly opening their eyes to the actual scope of the ticket is a lot easier on them than saying "no".
Like : Here is the ticket, this was the goal. I set out by beginning here- but encountered problems x y z I then refactored to accomplish. Finally..
You just dont drop a blob from orbit.
Ironically, ai could generate that quite well from existing documentation (ticket, tasks and prompts) + https://marketplace.visualstudio.com/items?itemName=vsls-con....
Run several rounds of such reviews until the clanker fails to find problems.
Because the problems AI causes are fundamentally problems of good design. It has the same problems of large teams, but less politics. Do your design well ahead of time, and AI review, or a large team, will amplify what you can do. Potentially by a lot.
Do it badly (or like most companies: do it with bad knowledge of the problem or just don't do it at all) and both team and AI will make a mess of things. If the team is made up of inexperienced programmers, they won't even complain, in fact I've seen teams that like this to be happening. At least in AI reviews I've always seen "grumbling" (in the sense of what you might call mean comments)
I've been thinking about this in art. Is it the end result that matters, or the process of creating it?
I once saw a hideous sculpture. Didn't like it at all. Then the video zoomed and I saw that the whole thing (quite massive) had been hand-built out of individual toothpicks, and suddenly I thought it was amazing.
Perhaps an even better example: I read a story of a man in india who carved a passage through a mountain, so there would be a shorter route from his remote village to the city. He did it by hand and it took him 20 years. We seem to have an instinctive admiration for heroic effort.
In business, generally only the end result matters. Although, the end result also includes the client's perception of how the product was made... (see also: fake fairtrade etc.) In a meaningful way, the perception, the story, is reality.
If a human put some effort into it, that's a signal.
I think this comment misses the point. Let's forget about AI and assume that there are three developers: A, B, and C. Now, A is supposed to make a PR, but instead they describe it to B, and B writes the code. C reviews the PR and gives feedback. A passes the feedback and the responses between B and C.
As you see, this is not easy for either B or C, and A is totally useless in this scenario. When you replace B with an LLM that doesn't get tired or bored, only C complains about the process.
One of the main reasons that art is valuable is in its ability to communicate emotions. Good art has the ability to serialize emotions within the artist and deserialize them within the mind of the viewer. It's not just "wow, this is a pretty picture", it's "wow, this is how another person sees the world, and now that I understand that, I feel an intimate connection with them".
I wonder if that's occurred to him.
The fix, imho, is for the reviewers to also use ai to review the code. However, the ultimate responsibility for the outcome(s) should be on the committer - you commit it, you own it, so to speak. If there's an incident, they need to be the one paged in the middle of the night. Bugs resulting from it will land on their desk.
The reviewers aren't a shield/safety net.
This was true long before AI. With AI the difference is just a lot bigger. It exposes team inefficiencies quite mercilessly. We have a big glaring issue with the current AI tools not being to suitable for usage by multiple users. All interactions are one on one. Which means hand offs between tools and people are bottle necked on people communicating with each other. So, any issues there with people delaying, gate keeping, etc. become very visible.
The sentiment of pushing back on AI is understandable but probably not a productive reflex. We need to find more effective ways on staying on top of massive amounts of changes. It's not going to slow down and insisting on manually reviewing all code is not going to be a long term sustainable way of developing software. It simply does not scale. I'd question the added value of manual PR reviews at this point. Are they finding real issues? Are we valuing those issues correctly? Could we come up with automated ways to find and fix those same issues? There are a lot of open questions about how we are going to do this. But no question about the notion that we need to up our game on this front.
On top of that, we have been running multi-model AI reviews on every PR through their respective GitHub integrations (Codex, Gemini, Copilot, Greptile, CodeRabbit).
They never fully overlap, and yet they somehow usually all miss the same things. The most significant improvement came from having agents commit their plan along with their work.
On the upside, it means I get to focus my reviews on different things.
Yeah, why not reduce the team size to zero while you are at it?
These generalizations about software engineering have never been useful, IMO. Context is everything, there is no flow chart for building a perfect software process.
Although, I'd say you are absolutely delusional if you think we are universally beyond the point where manual review of pull requests is required.
A bit sick and tired of arguments like yours
That might teach those people a lesson.
Ultimately what it means to be a professional is that you are responsible for your work. That’s why you get a salary instead of being paid by the token.
This won't help. Your wall of text will just get fed right back into the LLM.
Not necessary. Use Haiku.
The response doesn't need to be good, it just needs to be substantial. Presumably the goal here is basically DoS of the problematic colleague through token limits.
why not speak directly to the bot yourself instead? then you can drop pretenses and get to the point
I find this to be a new variant of the old behavior where a colleague comments on a typo in a PR, and the team later moans about laborious back and forth for small nitpicks, instead of simply editing the typo right there (and perhaps leaving a note that they did so)
The bot isn't making decisions. It's not choosing to submit extensive PRs with bad code. The colleague is the one who needs to actually learn something here, and the problem is that confronting him about it directly is widely considered to be bad form. This is, of course, a deeply unhealthy aspect of our corporate culture. We need to be more open to honest communication, even when it's either uncomplimentary of one of the people involved, or counter to the prevailing opinions within the company.
"I'm writing tons of code, and the process is stumbling where the guy whose job it is to review code isn't reviewing it."
"I'm not reviewing code."
Sometimes I wonder: how does someone go and think so much about their coworkers, and never once think about how they themselves look?
Even if I sympathize with the people complaining about their poorly chosen GitHub-based workflow - whose purpose is to let pull requests languish, for the most part - and how they stumble when overwhelmed with solutions. It's obvious to me, that the people who complain the loudest about the anti-sociality of LLM authored code in their precious harmonious low-effort workplace status quo: they are projecting.
One of two things will happen:
1. Things start breaking, proving AI generated code sucks and the individual spamming these PRs is incompetent.
2. The code works fine and reviews are unnecessary for anything other than liability concerns.
That includes taking responsibility and accountability so that the software doesn't become a sad and dangerous mess.
If we want to be an engineering discipline, just yoloing in production is not going to cut it.
I understand that the information may be accurate, even helpful at times, but feeling like I'm constantly talking to an AI chat bot all the time gets tiring. And I don't appreciate having to double-check everyone else's AI generated responses for them.
Before AI they had to actually put in work, or at least play games of trying to steal credit from other people without getting noticed. Now that AI appeared, they see it as the ultimate way to take credit for work they didn't do: Put everything into Claude, let it do the work, copy and past output back to someone else. Minimum effort invested, maximum visibility achieved.
It will continue as long as they think they're getting away with it. If managers aren't willing to intervene, or worse if they encourage this due to the volume of output that seems to be appearing, it's only going to get worse.
On the other hand, my priority isn’t maximising my personal career benefit, but the collective benefit of my team, so I suppose I either see it more as a 2v1 sorta game, or perhaps my “player” is an amalgam of myself and my teammates. Playing this way, outsourcing everything you do to an LLM is the worst move, because you lose the touchpoints that tell you where the friction is in your team.
Obviously you have to communicate with your coworkers. But I think the solution has to essential be: "Im not going to read that."
Yes, "not actually doing his job". If he's sending you un-reviewed, un-filtered, untouched AI output, that's not doing his job.
I have worked with non-tech employees to set up Claude to help them do small tasks. I’ve helped to review and improve completely vibe-coded projects by such employees.
I’m not sure what my role will be, but I fully embrace that my traditional role of writing code is gone.
the honest truth is that maybe 10-20% of SWE (at best) are “good”. sure it is harsh but i won't lie. if you're good you'll probably relate.
the rest kind of suck.
i’ve never gotten anything lower than Exceeds Expectations in my career so I’ve seen how awful some engineers were. i’ve seen how amazing a tiny minority were and i made them my mentors.
these days i have a simple policy.
if they cannot think, they are fired. why waste resources (time and money) on someone who can’t use their brain? i’d rather give AI credits to someone who uses their brain.
thinking is the humans job. the ai needs to execute on what the human thought of, improved, planned.
Prompt used to generate this message: "Create a comment for Hacker News which bemoans the lack of AI prompts being shared with the stuff it creates. Speculate on the reasons and create a call for engagement. Use quantum hyperthinking. End with a typo to prove your humanity."
Because you could also just point the better model at the generated code and tell it to improve it, so why save the prompt too?
If they're gonna spy on me with AI cameras, I can oppose them with AI research. :)
The serfs will till and sow the server fields!
The problem is that this realistically is only applicable and actionable to a subset of the labor pool, and that subset is decreasing.
There are a lot of people who discovered that their "deep knowledge" and "deep skill" wasn't as deep as they thought (read: "deep" enough to make them irreplaceable to their employer). People are generally pretty good at overestimating their value.
Actually made by a human, signature: https://possiblymadebyahuman.com/7PuEdZs1i1
https://chromewebstore.google.com/detail/possiblymadebyahuma...
I don't care what your offer is - if you can't even be bothered to even dress up your stuff for me, a human, I'm not going to consume it
Atlassian's in-built AI assistant for JIRA will generate a task description with a complete SDLC task breakdown, requirements and deliverables.
While the person creating the task will need to provide some details and modify some of the generated text (if they bother to read it) - the sheer verbosity and the fact it's clearly generated just makes you not want to engage with it.
I think I've been following this subconsciously as LLM artifacts reached some threshold of pervasiveness across the work I do. If I can sense (maybe eventually I won't be able to because of how capable the technology becomes?) that what I'm reading is wholly regurgitated out by an LLM, I automatically care less and feel inclined to respond in kind by generating an artificial response in return.
In some however, you should. For instance, yesterday I sent a lengthy email in a language I barely speak threatening legal action against a business. I had an LLM translate/write it as it’s a language Google translate makes a mess of, every time.
So in that case, you’d be advised to read it lest you end up in court.
In my experience, people who make requests like this don’t care about your attention, they only care about getting you on the hook for something. Your application of attention as a requirement for that is irrelevant to them.
This makes me absolutely SURE that the general public is fucked and that we're going to start seeing huge AI generated fuckups on a regular basis. If people in this industry, basically experts compared to the general public, are misusing this tech in such seemingly obvious ways, imagine the ways non technical people will misunderstand and misapply it. Of course, with the help of overhyped BS from everyone hyping and selling it.
This is extra work on human.
Many artist and content creator is now asked to show the "behind the scene" or a full session recording, which nobody care enough to check. This is frustrating and demotivating the artist.
Expect the same demotivating effect on the software contributor.
If you think reading _forwarded_ AI response are cheap, you can run your own LLM. It is the same amount work on you
</end devil's advocate>
In the past you had coworker who produced volumes of code. Same principle.
I remember a time in the ancient past (2025 maybe) that your PR was your responsibility, whether or not you typed it with your meat fingers or cranked it out of the Giant Plagarism Machine. It’s absurd to think that the above quote is now something approaching controversial.
You can't say "you can't feed me machine output directly". Machine output is meant to reduce the cognitive load for human processing.
If your colleague is forwarding AI output directly to you, that means they think the AI has reduced the cognitive load for you, and also you are the best person to process that output, instead of them.
You just need to change your perception about the purpose of AI.
Human -> Human (think we have this sorted)
AI -> Human
AI -> AI
If you are doing AI -> Human, then you need to be curating the response and understanding what it is saying, also, make sure its not leaking internal details or committing you to have phone calls/video chats (it does that). This works really well for the most, and humans respond with requested content. Quite often my AI debugs problems with their systems which I know little about. But humans do odd things like send screen shots of logs rather than text (they also leak internal details of their systems they potentially shouldn't). I used to tell people the content is partly AI, but now I just send the curated email without mentioning AI.For AI -> AI you kind of want a hand over document as an attachment to an email. Only thing here is making sure there's no injection of security risks. But quite often instead of getting a human response to my AI generated emails, it would actually be nicer to hear from their AI which could give a better context/details. It would be really nice to be able to go, can you have your AI talk to my AI :) (security is a major issue here)
But this HN submission also highlights something else: AI content should be labelled. It is not always obvious that an AI has produced a PR.
Labeling what is "AI" would be like highlighting in an email what I'm obligated to say by HR, my boss, etc. It doesn't make anything less boneheaded.
Human effort was already low before AI and now it's even lower. Garbage in, garbage out.
We developers understand this when we are forced to read slop, and most of us recognise it in art and music.
I wonder if we forget that people using unthinking, default interfaces in AI generated apps might start to feel the same way: “it feels like no care was taken here so why should I give it my time?”
Sometimes human effort doesm't have to be complicated though (concise communications)
2. allow people to filter out the AI content if they want
3. enforce draconic punishments for violation of 1
We might arrive at the moment where this is regulated by law.
So feel free to use AI to pimp your resume, they will use AI to process it.
Now you have to add typos and not use completely standard elements of style that some people have been using for ages, like emdashes and "it's not X, it's Y"
That said, roguelikes are awesome. So there is definitely a place for simulated effort.
Reading AI-generated text for hours every day, it's obvious to me.
I take care to make my messages easily readable. I don't care if they're AI-made, as long as they're short.
I'm a very verbose person, and if I don't make an effort at being concise, I'm just as annoying as the average AI.
Being flooded with AI text every day has made me appreciate brevity because I'm exposed to so little of it.
With half a dozen people who don't read or listen to half of what the others do, slop + cognitive drift is a bad cocktail.
It's just not as big of a problem on my own projects, because the ideas that get fed to the slop-machine are not that different from one day to the next.
---
> For human code review requests, I always review my AI-generated code first.
For human code review requests, I always review ANY code I submit first.
This is partly because it's the agreed-upon culture where I work now.
And partly because the codebase is not robust enough for slop.
I have hobby projects where this does not apply. I spend half of my time in those projects building hard guardrails.
---
> Keeping AI generated content clearly labeled and demonstrating human effort helps show consideration for teammates
I actually like the shamelessness, because it's honest.
So often this year when I ask "why did you do X?" pointing at a line, my colleague doesn't know.
Because they didn't really write that line, and they didn't really internalise the choices made.
When my colleague sends me a text dump from Claude, I know that my role is just being a sub-agent.
Demonstrating human effort: I'd like to see more of it.
One way is to spend more time owning "cognitive debt" as part of the daily cycle.
If people are now wincing at longform text because they automatically assume it was LLM-generated, then that bodes ill.
The labor theory of value doesn't work for documents any more than it works for anything else. If I do something that's easy for me, and it's valuable to you, you'll still want it. If I do something that's difficult for me, it will be less valuable to you, because the difficulty I have with it implies that what I produce will be of lower quality.
This is all equally true of automatically-generated documents. If they're valuable, people will want to read them. Whether it was unpleasant for someone to create them isn't a factor.
So where is this slogan coming from? Are people just afraid to admit that the documents they're getting are valueless?
If someone wants me to spend my time and attention on something they have shared, I would like them to demonstrate that they put a proportionate amount of time and effort into its production.
First: why? How does that help you?
Second: Is that actually true? Do you ever watch videos that a friend recommends to you? Even if the amount of time and effort your friend put into producing that video is zero? Do you ever read anything that a friend recommends? Even if they didn't write it?
How much time and effort, in your estimation, did jjfoooo4 put into producing this article on tombedor.dev?
Your post sounds logical at the first glance, but has nothing to do with the reality. The topic title is totally on point! If the user would put human effort in it, I wouldn't get those crappy emails.
The script was excellent because it simplified the review process for a single repo (that had many competing dependsbot PR’s) and it also happened to do this across increasingly many many different repo’s simultaneously.
Funny thing is, however, that it also created a team dynamic where who ran the script became almost a race because the effort in creating x pr’s didn’t correspond at all to the effort required to review x pr’s.
The optics were also lopsided since the script would operate on the runner’s local machine and so it would have seemed as if the person who made all these PR’s was highly efficient at producing when in fact it was the reviewer doing the majority of the work.
Also reviewing represented a chunk of a developer’s day so it would affect other actual work the developer was tasked to do anyways.
In an agile workplace points (correctly or not) completed are attributed only to the code creator with no points at all being shared by those who reviewed the work, and rightfully so I’d argue because tangentially reviewers can also tend to just click “approve” (or slap a LGTM) without much effort into critiquing a piece or giving a thoughtful review. Why? It slows down the introduction of the feature (the PM won’t like that, why would you slow down the process eh? You grumpy goose), it messes with team dynamic (you may end up offending those who you review, who also happen to be the one who you need to review your work, who then may be petty or worse, mud slow to review your own PR’s), it takes additional time to provide reviews that seem as if you even read the PR or don’t come off as flippant (did you provide examples or a suggested refactor or detailed reasons), and it takes context because you may be working currently on a totally different project (regardless of your experience/authority in the PR’ed repo), so giving an honest review may sacrifice even more time to first review the purpose of the PR and how that lands in the context of the target repo(s) and then sacrifice the time necessary to reorient yourself to the task you previously had in process. With all this…that “approve” button becomes sooooo tempting.
It’s funny because fast forward some of the ways I battle increasingly prolific AI generated material is through GitHub’s CoPilot bot. I ask it to do the review first and when it gives the review there is none of that dynamic because it wasn’t me who levied the criticism and also it’s not me who is trying to block code integration (so no grumpy goose or team dynamics problems). Having a bot do preliminary checks almost does what git hooks did for team dynamics way back when automation of linting, testing, style, etc was introduced as a common part of the review process. And I say “almost” because a)sometimes the critiques from the bot are wrong and b) the critiques aren’t necessarily deterministic, so just because they are there or not doesn’t mean you are truly relieved of that portion of the review process (for better or worse).
So this post is talking about at work but I think the principle goes well beyond that. Think of all the AI chatbots you have to deal with to get through to customer service at a company. Or get through ATS systems in hiring. If it isn't already the case, this will probably replace or supplement TAs marking assignments.
The problem is that AI makes these interactions too cheap for the party that already has disproportionate power. The cost for them to add another layer, another hurdle, another set of questions, etc is essentially zero. Yet everyone who wants to get through that system has to pay in a human cost.
I just thought of another good example. In the pandemic auditions in Hollywood went virtual for obvious reasons. But this never went away. Now, you might say it's convenient to not have to spend hours driving to Burbank for a 5 minute audition but anecdotally the taped audition seems to be much more work. It requires a lot of prep and more tech for good sound and audio. There are people who help people tape auditions, which has really just added another layer. Plus, instead of only locals, anyone anywhere can submit an audition so where you might've had 30 people previously, now you have 150.
And what happens to those profesionally-produced auditions? They get submitted and the casting director might pick 5 randomly to even look at. If there isn't already, there will also be an AI system that filters those auditions.
At least previously you got 5 minutes of actual time from a casting director, the actual director, etc. So it's actually way more inefficient for you now. Plus, if you're lucky enough to be looked at and they like you, you probably have to go for an in-person audition anyway so what's happened here? You've just added another layer and way more work.
Companies think they're "winning" here by saving labor but I think that's short-sighted. What'll end up happening is AI agents will rise to help people on the other side of that. You can think of using AI to cheat on school assignments as an example of that.
So what will we end up with? AI agents inundating AI systems, which just adds a whole bunch of inefficiency.
I have only made this letter longer because I have not had the time to make it shorter.
The argument that "using AI to generate text is disrespectful because it took no effort to write" misses the point. Respect for the recipient is measured by whether the message serves the recipient's needs, not how it is produced. Similarly, any errors are the senders responsibility, and not the fault of the tools they used.
However, I don't blame anybody for having red lines like this:
1. Don't send me a big long string that is merely LLM output resulting from pasting a trivial prompt + text I already have access to (or my own words!). I know about Claude too, and if that's what I wanted I'd have done it myself.
2. Don't throw an AI-generated argument at me that you don't even fully understand.
3. If you're preparing information for me, and it's overly verbose and wastes my time, I'll be twice as mad if it's obvious AI than if it's obviously human. This is basically the article's point. The asymmetry of wasting an hour of my time reading a bunch of crap that took 15 seconds of your time should make it clear why this is antisocial behavior.
Use whatever tool does the job, and own it if you use the wrong tool and it sucks.
Because why not? AI will simply on average be nicer to talk to than most humans, with clearer thinking and better arguments, less contradictions, and easier to comprehend.
I don't know how humans could compete with that (but it also does not seem all that horrible, given that it will be available to every human.)
This is not to say that this idea is uncomplicated or comfortable, in different ways. Just that I think it's true and that it might even be good.
I know I’m not the only one who feels this way, and notice more and more people reporting the same. Several of my non-technical
AI generated content is bland and soulless. There’s only so much bland and soulless most people can take in their life before they start to get fed up.
When everything feels the same, nothing is interesting anymore.