惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
N
Netflix TechBlog - Medium
D
Docker
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
U
Unit 42
Recorded Future
Recorded Future
G
Google Developers Blog
T
Threatpost
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
The Blog of Author Tim Ferriss
C
Cyber Attacks, Cyber Crime and Cyber Security
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
WordPress大学
WordPress大学
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
M
MIT News - Artificial intelligence
月光博客
月光博客
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
K
Kaspersky official blog
Simon Willison's Weblog
Simon Willison's Weblog
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
I
Intezer
Y
Y Combinator Blog
P
Proofpoint News Feed
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
Schneier on Security
Schneier on Security
B
Blog
Jina AI
Jina AI
V2EX - 技术
V2EX - 技术
雷峰网
雷峰网
Last Week in AI
Last Week in AI
V
V2EX
Martin Fowler
Martin Fowler
P
Palo Alto Networks Blog
Latest news
Latest news
Google DeepMind News
Google DeepMind News
L
Lohrmann on Cybersecurity
The Last Watchdog
The Last Watchdog

Graphite blog

Introducing Code Tours: a new way to review Introducing Cursor Cloud Agents in Graphite Building the future of software development with Cursor Reimagining the PR Page: Designing for speed and focus Graphite changelog [11-20-2025] Graphite changelog [11-04-2025] Graphite changelog [10-16-2025] The future of engineering is collaborative (and already here) Meet Graphite Agent: the next evolution of AI code review Introducing frozen branches: A safer way to build on your teammates’ work Graphite changelog [09-17-2025] How we sped up code search for Graphite Chat Introducing Graphite Chat AI is writing code—here's why it also needs to review that code How I got Claude to write code I could actually ship How we built the first stack-aware merge queue (and why it matters) How we organize our monorepo to ship fast Graphite brings stacking to Tower Code review tooling: Should you build or buy? Making AI code review available to everyone Introducing: The new Graphite + Linear integration Graphite raises $52M and launches Diamond to reimagine code review for the age of AI Why AI will never replace human code review How stacked PRs unblock distributed development teams Graphite is going to Developer Week 2025 Beating the end of year code freeze How Graphite’s eng team ships code remarkably fast Why we chose Anthropic's Claude to power Graphite Reviewer AI code generation will remain fragmented How we redesigned Graphite's landing page in-house Introducing Graphite Reviewer: your AI code review companion How AI code review reduces review cycles to improve developer productivity What if you could get instant feedback on your code? The new developer toolchain Not Rocket Science - How Bors and Google’s TAP inspired modern merge queues How Google migrated billions of lines of code from Perforce to Piper Going from 0 to 1: How to write better unit tests when there are none Speed up your merges: Parallel CI is now generally available for teams using Graphite’s merge queue Down for less than four minutes a month: how AWS deploys code BitKeeper, Linux, and licensing disputes: How Linus wrote Git in 14 days Graphite is now free for startups and open source projects Launch week wrap-up (May 2024) Reduce CI costs for Buildkite and GitHub Actions Cheaper CI & faster merging with batching How Google does code review The technical learning curve at a startup is gentler than you might think Graphite will now automatically rebase your partially-merged stacks Multiple engineers can now seamlessly collaborate on the same stack of PRs Do you ever outgrow GitHub? From the 80's to 2024 - how CI tests were invented and optimized Graphite changelog [4/10/2024] 🎺 Graphite changelog [4/25/2024] 🐸 How Stack Overflow replaced Experts Exchange How GitHub monopolized code hosting Graphite changelog [3/27/2024] 🤝 The core principles of building a good AI feature Onboarding roulette: deleting our employee accounts daily Graphite changelog [3/13/2024] 🚁 Why Facebook doesn’t use Git How to recreate the Phabricator code review workflow Types of code reviews: Improve performance, velocity, and quality What's the best GitHub pull request merge strategy? Phabricator vs GitHub vs Graphite: How do they stack up? Improving team velocity through better pull request practices Moving fast breaks things: the importance of a staging environment Building trust as a software engineer Keeping code simple: moving fast by avoiding over-engineering What's better than GitHub pull request filters? The Graphite pull request inbox 7 Best Phabricator alternatives for PR stacking + code review [2024] Accurate eng estimations: predicting and negotiating the future Tracking and understanding GitHub PR stats: A step-by-step guide 8 pull request best practices for optimal engineering What’s next for Graphite Graphite Q1 Launch week: Stacking with the tools you love Graphite Q1 Launch week: Making stacking seamless Accelerating code review The Mom Test How to use stacked PRs to unblock your entire team Graphite Q1 launch week 2024 The practical and philosophical problems with AI code review Empirically sup code review best practices Call site attribution: how to pinpoint rogue SQL queries throttling your performance Every engineer should understand git reflog Post mortem: we took 124 seconds from you, here's 378 back Your GitHub pull request workflow is slowing everyone down Optimizing CI/CD workflows for trunk-based development Why we use AWS instead of Vercel to host our Next.js app How large pull requests slow down development 3 key lessons in application server optimization Trunk-based development: why you should stop using feature branches Git was built in 5 days Why large companies and fast-moving startups are banning merge commits How long should your CI take? Experimenting with AI code review CRA to AppRouter in 5 Steps: A case study with Graphite Graphite Changelog [10/18/2023] The comprehensive guide to writing the best PR title of all time How 10,000 Developers All Contribute to the same Repo
Graphite's State of code review 2024
Team Graphit · 2024-07-18 · via Graphite blog

Reviewing code is one of the most important tasks for millions of software engineers every day, and the practice itself dates back decades.

Today, however, software engineering is changing. More developers than ever are becoming more productive thanks to AI coding assistants like ChatGPT and GitHub Copilot. New tools can generate whole apps and websites. With the higher volume of human and AI-authored code to review, traditional code review practices need to change.

In this report, we analyze more than 5 million pull requests from over 35,000 engineers to examine the current state of code review. Here’s what we found:

1. Small companies ship code 3x faster than larger orgs, and the reason is code review

The median engineer at a small company (≤20 engineers) takes about 4 hours to merge an open pull request. In contrast, developers at larger companies (50+ engineers) take around 13 hours, meaning they move 3x slower.

This is despite the fact that, by most conventional standards, larger companies are better at code review.[1] So what’s going on?

It turns out that small companies are 4.5x more likely to skip code review altogether—meaning they skip what is often the longest part of the PR lifecycle. Large companies have more stringent code review processes, with each additional round of review contributing to a longer total time to merge.


[1]Engineers at larger companies are 12% more likely to follow best practices regarding PR size, keeping them under 50 lines of code, and 45% more likely to have these PRs reviewed within 90 minutes.

2. At startups: TypeScript is the new JavaScript

TypeScript’s popularity has grown in all but the largest companies, while JavaScript usage has declined. In the last two years, TypeScript usage has increased 21% at companies with ≤50 engineers, while its prevalence at companies with 100+ engineers has actually declined by 14%.

As a general rule, larger companies tend to merge more code written in traditionally established languages like Java and Python. They also merge more PRs modifying config files and IaC (infrastructure as code)—reflecting increased backend complexity as companies scale.

Code review time trends differently depending on what language the PR is written in: Bazel, Java, and JavaScript code takes roughly 35% longer to go through code review than TypeScript, Python, or Ruby.

3. Companies that use monorepos take 64% longer to merge their PRs—taking up to 18,000 additional hours each year

That’s six years’ worth of engineering time, giving credence to concerns around long build and merge times when employing monorepos. Last year, the median developer waited 64% longer to merge their code at monorepo companies compared to their peers working across many repos (16.4 hours versus 10 hours). This difference held, even when normalizing for pull request and company size.

Is this a resounding blow for the Googles and Microsofts of the world? Likely not. The primary motivations behind adopting a monorepo aren’t usually tied to speed of individual merges; instead, it’s about “strategically organizing code across several large repositories that each address a set of diverse (yet somewhat related) concerns.” May the lively Hacker News discussions live on.

4. The ideal PR is 50 lines or smaller

We often hear smaller PRs are better, but just how small should a PR be? If you’re optimizing for speed, the golden number converges to around 50 lines—the typical reviewed PR of this size takes about 100 minutes to go from publish to merge. Compare that to the median reviewed PR over 50 lines, which takes 19 hours to merge!

Not only that, but you might already be writing smaller PRs than you thought you were. Half of all PRs written today are already under 50 lines (excluding bots of course). Time for a pat on the back!

5. CI run time takes twice as long at large companies compared to small companies

If you’re a software developer, you’ve probably had the experience of waiting for CI to finish running before carrying on with your work. If you’re a software developer in an engineering org of 50+, you may be nearly twice as familiar with this experience as your peers at smaller companies (≤50 engineers).

The median pull request triggers a respectable 22 minutes of CI run time. But the picture isn’t as rosy as it seems. The top quartile of CI runs still take 76 minutes or more at small orgs, and nearly doubles to 130 minutes at large orgs.

One explanation may be that larger companies have more comprehensive review and testing practices (triggering longer, more numerous CI runs)—something to keep in mind for developer experience teams.

6. Larger companies are more than twice as likely to employ a merge queue

Merge queues automate the merging process, keeping developers unblocked and the main branch green. Not every repo uses one; traditionally, there’s a real tradeoff between speed (being able to merge your pull request the moment you are ready) and integrity (preventing semantic conflicts that can break main).

The conventional wisdom is that until your repo is seeing a certain level of merge activity, the risk of slower releases is not worth the integrity guarantee. Among companies with ≤100 contributors, only 21% have a merge queue enabled. But as companies grow to 100+ engineers, the scale tips, and merge queue usage more than doubles to 50%.

For those who dread the tradeoff, there is good news; advancements like parallel processing and smarter CI runs allow companies to turn on merge queues at earlier stages.

Download this report

💾 Click here to download the report in PDF format.


Methodology

Our analysis considered a total of ~6 million pull requests merged on GitHub in the last year. “Qualified” pull requests are defined as pull requests that:

  • Were merged on GitHub between July 1, 2023 and June 30, 2024

  • Were authored by “active committers” (1 median PR merged per week)

  • Belong to a GitHub organization with at least 2 active committers

  • Belong to a GitHub organization for which we have synced pull request metadata

We proxied companies by GitHub organization. Company size (i.e., number of developers) was proxied by the number of distinct contributors across all repositories in the company’s GitHub organization during the same period.

1) Small companies ship code 3x faster than larger orgs, and the reason is code review

Metrics (e.g., time to merge, percent of pull requests under 50 lines, percent of pull requests reviewed within 90 minutes) were first aggregated as a per-developer median, then grouped by the size of the engineering org (≤20 or 50+).

2) At startups: TypeScript is the new JavaScript

We expanded the time window to consider pull requests merged on GitHub between January 1, 2022 and June 30, 2024. Companies for which we do not have at least 2 years of synced pull request metadata starting from January 1, 2022 were excluded.

Files were labeled by language based on their file extensions. We calculated the popularity of a language by measuring the percentage of pull requests that modified each language’s file extensions.

3) Companies that use monorepos take 64% longer to merge their PRs—taking up to 18,000 additional hours each year

We categorized companies as “monorepo” or “polyrepo” based on the percentage of qualified pull requests merged in a single repo. We define “monorepo” companies as companies that merge ≥80% of all qualified pull requests into one repo.

To calculate time to merge, we first aggregated the per-developer median time from publish to merge for the developer’s pull requests. Then we aggregated the median time to merge across developers.

4) The ideal PR is 50 lines or smaller

Across qualified pull requests, we calculated the median time from when a pull request was published to when it was merged. Pull request size is based on the number of lines modified in the pull request (i.e., sum of lines added and lines deleted).

5) CI run time takes twice as long at large companies compared to small companies

We define CI run time per PR as the aggregate total time spent running CI across all CI runs and status checks. (For example, if a single PR triggers 2 distinct checks, both from 12:00pm to 12:20pm, then we count 40 minutes of CI run time for that PR.)

We considered PRs merged in the last 5 months.

6) Larger companies are more than twice as likely to employ a merge queue

We included companies that have enabled the Graphite merge queue, GitHub merge queue, or a third-party merge queue app.