-11
Stop Using Pull Requests (a4al6a.substack.com)
submitted 2 days ago* (last edited 2 days ago) by codeinabox@programming.dev to c/programming@programming.dev

TL;DR

  • Pull requests were designed for open source contributions from untrusted strangers. Applying them to trusted teams is a category error.
  • Peer-reviewed research shows code review’s primary value is knowledge transfer, not bug detection. Less than 15% of review comments relate to actual bugs.
  • Async PR workflows mean your code spends 86-99% of its lead time waiting. One organisation spent 130,000 hours in a single year waiting on PRs that received zero comments.
  • DORA research across 36,000+ professionals shows trunk-based development correlates with dramatically higher software delivery performance, and faster code reviews alone improve performance by 50%.
  • The alternative is T*D: Test-Driven Development (build quality in), Trunk-Based Development (integrate continuously), and Team-focused Development (review during creation, not after).
  • The transition is gradual: optimise PRs first, adopt Ship/Show/Ask, then move to pairing and trunk-based development as trust and automation mature.-
top 21 comments
sorted by: hot top controversial new old
[-] Kissaki@programming.dev 2 points 9 hours ago

I would rather not have my 20-60 work commits, possibly shifting solution design twice or three times, in the main project history, spanning days and sometimes weeks, invalidating earlier commits, and a hassle if not impossible to reasonably and efficiently document changes between them. And all those changes intertwined with my other work and my colleagues' changes.

The key insight from Charity Majors is that speed and safety are not trade-offs -- speed IS safety. “Ship a single changeset by a single dev at a time, making it easy to isolate the owner of any problem, preventing the blast radius from expanding, and making it easy to fix while the intended effects of the code are fresh in their mind.”

I really don't get how "develop in feature-flagged trunk" is supposed to come together with "single dev single changeset". Work evolves. Design evolves. Surely, multiple/many "single changesets" must come together to form new features and changes? This claim seems to assume issues are found before it's being changed again, and in a timely manner, even when it is behind a feature flag?

Were pull requests really "created for FOSS"? I feel like, maybe assume, pre-merge reviews have been a thing before that [and unrelated to PRs].

I feel like the article could have been structured a lot better, and made its point without a "it's like this" "but maybe not" digression. Feels like inflammatory bait into relativation. I guess I'll refrain from raising my other points and disagreements that I noted because by the end of the article, it wasn't really claiming it broadly anymore anyway.

Outside of the irritation, I found the arguments interesting. I'll keep it in mind, but I don't see my team implementing it like that or to a higher degree. For various reasons.

Despite the negative vote sum, I think it's an interesting alternative perspective. Even if I found it irritating to read, and even if people hate it, it's a good discussion in the comments. About how we work.

[-] thingsiplay@lemmy.ml 4 points 1 day ago

Stop telling me what to do. You are not my real dad.

[-] belated_frog_pants@beehaw.org 5 points 1 day ago

If PRs arent being reviewed for hours or days thats a management problem. No amount of unit tests are a replacement for another set of eyes.

[-] Senal@programming.dev 2 points 1 day ago* (last edited 20 hours ago)

hmm, i have mixed feelings about this.

If PRs arent being reviewed for hours or days thats a management problem.

This i agree with totally.

Whether or not it's human resource based or policy based, it's usually a failing of process and that's generally a fault with management. in my experience anyway.

No amount of unit tests are a replacement for another set of eyes.

This though, while i wouldn't compare PR's to Unit testing in the first place there is some overlap in quality control.

If you have robust enough testing suites it can reduce the PR burden in a variety of ways, though most of them come down to automating away the need to catch so many logic and regression bugs.

That's not to say reviews aren't needed, they definitely are, it's just automated testing does have an overlap.

Notice that i said testing suites though, that's not just unit testing, that’s the whole CI testing caboodle.

[-] natecox@programming.dev 1 points 9 hours ago

The problem with automated tests is that they only test for the narrow slice of things you actually think to test for. They don't cover the gamut of things you didn't think to test for.

They also only test how you write them to test for, which means if you make a bad assumption somewhere along the way your tests can't help you find it.

Peer reviews cover two very important things:

  1. Knowledge sharing and de-siloing
  2. Logic and assumption checking

A fresh set of eyes and a different perspective is just so important to writing robust, quality code.

[-] Senal@programming.dev 1 points 7 hours ago

The problem with automated tests is that they only test for the narrow slice of things you actually think to test for. They don’t cover the gamut of things you didn’t think to test for.

They also only test how you write them to test for, which means if you make a bad assumption somewhere along the way your tests can’t help you find it.

Indeed, which is why it's an ever evolving suite of tests, as and when you come across problems and things that were missed, you add automated tests for them.

It's not magic, you only get out what you put in, but it is automated, which means that if you do a reasonable job you have a lot less to worry about from that particular issue in the future and now you have a much quicker way of checking for it.

Peer reviews cover two very important things:

  1. Knowledge sharing and de-siloing
  2. Logic and assumption checking

A fresh set of eyes and a different perspective is just so important to writing robust, quality code.

Also agreed, and automated testing is a way to partially formalise that knowledge into something that can be checked quickly and deterministically (if you are doing it right).

As i said before it's not magic and it's not a replacement, it's more of an augmentation to relieve some of the cognitive burden.

As with any other approach, it also has it's downsides, there are ways to go about it that can be actively detrimental.

In my experience a well done (and maintained) automated suite is a boon to ongoing development.

[-] ISO@lemmy.zip 15 points 2 days ago

Pull requests were designed for open source contributions from untrusted strangers. Applying them to trusted teams is a category error.

wrong
didn't bother reading further

[-] codeinabox@programming.dev -2 points 1 day ago

Could you elaborate on this?

[-] ISO@lemmy.zip 12 points 1 day ago* (last edited 1 day ago)

How many layers should I go through?

Here is a few:

  • PR's replaced patch sets. Patch sets have nothing to do with "strangers". Both are the medium where review for a logical grouping of code changes takes place. There is no separate categories here.
  • In most open-source projects, everyone involved is a "stranger" to others anyway, including co-developers if any.
  • PR's/patchsets are orthogonal to T*D/Trunk-Based/Team-focused development. How can this be missed is hard to imagine. I would have assumed everyone is aware of draft/wip/rfc PR's, or dev/trunk branches. And tests need development alongside functional modifications anyway.
[-] FizzyOrange@programming.dev 19 points 2 days ago

Yeah if you saw the quality of my coworkers' code you would not be saying this.

[-] TehPers@beehaw.org 6 points 2 days ago

This. I can't get them to run lints or tests on their own, and I can't get the person in charge of the repo to let us run the CI automatically on PR. Combine that with the rampant slop, and a good number of the PRs are just plain unreviewable.

Then you run into the other issue: the PRs get merged too fast to review them properly. How someone approves 50 changed files in a PR with +30000 and -150 lines changed in under an hour is beyond me, to be honest.

[-] FizzyOrange@programming.dev 4 points 2 days ago

I can’t get the person in charge of the repo to let us run the CI automatically on PR

Ouch. Time for a new job. (I'm not even joking - I'd quit if it was that bad.)

[-] TehPers@beehaw.org 4 points 2 days ago

In this case, it's a customer's environment, so it's actually not one of my direct coworkers that's blocking this. Otherwise I'd agree.

[-] NotSteve_@lemmy.ca 15 points 2 days ago

I hate having to harass people to review my PRs too but getting rid of them entirely seems insane to me. Most of the issues with pull requests can be sourced more to the size of changes rather than their existence. If you can keep your PRs small enough that someone can review it in 5-10min then things get a lot easier for everyone but deleting the step entirely means nobody is watching what's being submitted

Like, you might have someone working on something in a new codebase but misunderstanding the architecture or just going in the wrong direction in general and a review is the best way to correct course before getting too far in

[-] Tamo240@programming.dev 2 points 10 hours ago

Like, you might have someone working on something in a new codebase but misunderstanding the architecture or just going in the wrong direction in general and a review is the best way to correct course before getting too far in

I think the article is suggesting this person should be pair programmed with until they understand the architecture and can be trusted to contribute correctly, and I actually kind of agree - it always feels terrible to tell someone a PR they've worked on possibly for days is completely the wrong direction, and arguably this is already 'too far in' if they're going to need to essentially start again.

Intervening earlier in the process should lead to less wasted effort overall, but people often seem to treat pair programming like its two people at 50% efficiency, when it actually saves a lot of cycle time on reviewing code.

[-] FizzyOrange@programming.dev 5 points 2 days ago

I agree. What we need is better PR workflows, not getting rid of review entirely. That's dumb.

[-] karlhungus@lemmy.ca 19 points 2 days ago

disagree, pr's catch tonnes of shit, knowledge transfer is useful even in trusted teams. they also don't prevent any test driven development or continuous integration.

team focused development pairing are also pulling studies from 2005 before pr's were meaningfully a thing.j Also as someone who's done a significant amount of pairing, it's not that easy. I can't imagine mob programming.

[-] felsiq@piefed.zip 17 points 2 days ago

For anyone else who might get clickbaited by the headline: this is not meant for open source, they’re only talking about small corporate teams

[-] codeinabox@programming.dev 6 points 2 days ago

Thank you! I've updated the post with the TL;DR from the article.

[-] sobchak@programming.dev 5 points 2 days ago

I did most of this a long time ago when the team was 2-4 programmers. Moved to PRs when we started bringing on interns. No way the business owners would've allowed pair programming. Pair programming may be better and more productive, but the decision makers are often more ideological than rational.

[-] qprimed@lemmy.ml 5 points 2 days ago* (last edited 2 days ago)

not a professional programmer, by any means - but PR's (for me) slow development down to a point where code matches the philosophical/algorithmical goal. when code development is at the proper pace, it dramatically reduces the need for refactoring.

edit: upvoing this post, because the comments are particularly interesting - as with any "good" post :-)

this post was submitted on 22 May 2026
-11 points (39.2% liked)

Programming

27035 readers
305 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 3 years ago
MODERATORS