The Theatre of Pull Requests and Code Review
Small vs Large PRs and Stacked Changes
- Strong disagreement over “300 LOC / 5–10 minute” PRs and stacked PRs.
- Pro‑small‑PR side: finer changes are easier to reason about, review faster, build shared context, support trunk-based development and feature flags, and make bisecting / rollback safer.
- Anti‑small‑PR / stacked side: many small, interdependent PRs hide how changes interact, increase context switching and queue times, and create rebase/branch-management overhead. Some reviewers prefer one coherent feature-level PR over many fragments.
- Several say tooling (GitHub, Perforce, etc.) is hostile to stacked workflows; others point to tools like jj, Graphite, Sapling, git-branchless, git-p4 as partial fixes.
What Code Review Is For
- Different teams optimize for different goals:
- sanity/QA and catching bugs earlier,
- spreading context and ensuring more than one person understands the change,
- enforcing security/compliance (SOX, healthcare, finance),
- or mostly box‑ticking and velocity metrics.
- Some argue PRs should be optional for trivial changes; others want “an extra pair of eyes” even on one-liners.
- There’s emphasis that reviewing is itself work and should be scheduled and reported as such, not treated as “free overhead.”
Commit Style, History, and “Storytelling”
- Big split on “story-telling commits”:
- Supporters: a clean series of atomic commits makes the change easier to understand, review incrementally, bisect, and debug later. Commit messages are seen as crucial for explaining “why.”
- Skeptics: reviewers mostly look at the final diff and PR description; intermediate commits are personal checkpoints and often noisy (“fix”, “wip”). Many prefer squash‑and‑merge with a single good PR-level narrative.
- Some insist every commit (at least on main) must compile and pass tests; others call that overzealous except for mainline.
Process, Communication, and Culture
- Many complaints about performative “LGTM theatre,” review-as-gatekeeping, and KPIs around number of PRs.
- Repeated advice:
- provide clear PR descriptions (goal, approach, risks, tests),
- do self-review and annotate tricky parts,
- push draft PRs early and involve reviewers before coding heavy features,
- reject PRs you don’t understand instead of rubber-stamping.
- Some prefer pairing/mobbing and design discussions up front; PRs then become a final sanity check rather than the main review venue.
AI and Tooling
- Several suggest using LLMs for “semantic linting” and shallow pattern/style checks, reserving human attention for design and logic.
- Others worry heavy AI-generated code plus weak review is a fast path to tech-debt hell.