{"article":{"slug":"speeding-up-code-review-with-small-change","title":"Speeding up code review with `small-change`","subtitle":null,"summary":"Will Larson explains why Imprint, now merging four times as many PRs as two years ago, created small-change: CI-checked eligibility criteria plus an AI review skill that only approves or ignores, which early results suggest covers about 10% of changes, alongside batch PR-cluster reviews.","content_type":"blog_post","language":"en","canonical_url":"https://lethain.com/small-changes/","author":{"name":"Will Larson","url":null,"person_slug":"will-larson-2io3yahbfc9ps","person_url":"https://listedstartups.com/people/will-larson-2io3yahbfc9ps"},"authored_by":"human","publisher":{"name":"Irrational Exuberance","url":"https://lethain.com/","listing_slug":null,"listing":null},"topics":[{"name":"Engineering Management","slug":"engineering-management","url":"https://listedarticles.com/topics/engineering-management"},{"name":"Software Engineering","slug":"software-engineering","url":"https://listedarticles.com/topics/software-engineering"},{"name":"AI","slug":"ai","url":"https://listedarticles.com/topics/ai"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":1614,"reading_minutes":7,"published_at":"2026-10-17T12:00:00.000Z","added_at":"2026-10-22T23:12:53.870Z","updated_at":"2026-10-22T23:12:53.870Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/speeding-up-code-review-with-small-change","markdown_url":"https://listedarticles.com/articles/speeding-up-code-review-with-small-change.md","example":false,"citation":"Will Larson, Irrational Exuberance. \"Speeding up code review with `small-change`.\" 17 Oct 2026. https://lethain.com/small-changes/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://lethain.com/small-changes/"},"body_markdown":"# Speeding up code review with `small-change`\n\nPublished on October 17, 2026.\n[management (222)](https://lethain.com/tags/management)\n\nImprint’s average engineer is merging 4x more PRs than 2 years ago. Yay.\nAggregated behind the average is something even more interesting:\nwe have two teams that are merging 10x their PRs over that period.\nOne engineer is merging 25x the PRs per week of our average engineer two years ago,\nand a number of others are closing in on that number.\nThat’s pretty neat, and the slope of the line suggests our average in a year is going to look much closer to\ntoday’s p90 than today’s p50.\nEven more importantly, we aren’t just shipping more, our quality has improved:\nincidents are down 42% half-over-half, and critical incidents are down 78% half-over-half.\nI think we’ve always known the quality/velocity tradeoff wasn’t a particularly useful\nconstruct, but that’s undeniable today.\n\nAs we’ve walked this path, we–[like everyone else](https://claude.dev/blog/solving-code-review-at-anthropic/)\nprogressing down it–have run into the problem of pull request review. The p50 pull request review took about 33 minutes to complete\n2 years ago, but now takes us about 77 minutes. The slope here correlates tightly with the number of\npull requests getting merged. Tightly enough that addressing it became one of my priorities for the week.\n\nWe solved it! Just kidding, we’ve absolutely not solved it, but I think our current\napproach is an interesting one, which we call the `small-change`.\n\n---\n\n*The work discussed here was shaped and done by many folks at Imprint including Dan, Joy, Daniel, Lenny, Taylor, Ted, and Annie, among many others.*\n\n## Why review pull requests?\n\nThere are four reasons we review pull requests:\n\n1. **Knowledge sharing between author and reviewer** – software engineering is generally learned via\n   apprenticeship, and reviews are a primary mechanism of experienced engineers teaching others what\n   good software looks like. We believe the current volume means that this knowledge sharing\n   will have to move towards operating on clusters of pull requests, rather than individual pull requests\n2. **Preventing errors** – review has always been an expensive time to catch errors,\n   and we believe that effective CICD along with harness verification techniques like poteto’s\n   [pstack](https://github.com/cursor/plugins/tree/main/pstack) are more effective mechanisms\n   for preventing errors than review\n3. **Preventing malicious behavior** – my experience is that even careful code review will generally\n   miss *competent* malicious behavior, although fortunately most malicious behavior is incompetent.\n   We believe both sorts of behavior are best identified using a combination of fixed rules (modifying\n   these specific objects/classes/files requires review), anti-abuse mechanisms that we’ve refined in\n   our LLM-based member support experiences, auditing, and audit log inspection\n4. **Compliance obligations in our documented controls** – these can be changed, but today they require that\n   an independent human reviews changes in a subset of our repositories\n\nIn the modern development paradigm, we think there is a better solution for each of these problems.\nBut, we also want to make these changes very cautiously.\n\n## Small steps with `small-change`\n\nWe believe we move fast by finding narrow, contained ways to validate new practices,\nso to iterate our way into an effective solution, we’ve developed the concept of a\n`small-change`. Here’s how it works:\n\n1. When a pull request is marked ready, CICD determines whether it is eligible to be a `small-change`.\n   This is represented as a passing Github check. There is *also* a label for visibility,\n   but it is the check itself, managed by the build and not human modifiable, that determines eligibility.\n   (The label is used for initial filtering, but the check is still independently verified.)\n2. Something is a `small-change` if it meets all of these criteria:\n   1. It is less than 1,000 lines of code\n   2. There are no p1 or p2 findings from our `ai-code-review` automated review bot\n   3. The author has “experience” in the service or application, defined as 10+ prior merged pull requests\n      into that service or application’s directories.\n      For changes working across multiple services or applications, the author must have experience in all of them to qualify\n   4. Impacts fewer than `N` distinct services or applications. `N` is 1 on our frontend monorepo,\n      and `N` is 3 in our backend monorepo, where typical changes will modify both a gRPC service and a common HTTP gateway\n   5. Shared libraries and utilities files are not eligible for `small-change`\n   6. Each repository has a `.small_change` file which allows per-path customization while we continue to tune the behaviors.\n      For example, a service dealing with money movement can be excluded\n3. Our Slack automation tags every reference to a pull request with reacji labeling the state of that pull request,\n   for example if it has failing tests, if it has been approved but tests are still running, or if it is ready to merge.\n   We added a `small-change` reacji that indicates which of those pull requests meet the `small-change` criteria\n4. In our internal skills repository, we created two skills that have been distributed across harnesses:\n   1. `review-small-change` which takes a list of repositories and reviews all open, non-draft, small-changes,\n      including providing approval if they meet the review’s criteria (all checks pass including `small-change` check,\n      and not touching on sensitive topics such as payments and security).\n\n      Importantly, this skill has only two options: approve or ignore. It *never* comments on the PR to avoid\n      the proliferation of “[meat proxy](https://simonwillison.net/2026/Aug/3/dont-be-a-meat-proxy/) review”\n      which has become a bottleneck-pretending-to-be-a-solution on some teams\n   2. `review-pr-cluster` which reviews batches of pull requests to identify common themes that came up, and suggest opportunities\n      for discussion and adding verifications\n5. We set the social expectation that any error caused by a `small-change` is a failure in our system,\n   and has to be solved at the system level: improvements to `ai-code-review`, to our verification mechanisms,\n   to our CICD, to our harness, etc.\n\nThis took about two days of infrequent attention to implement and rollout,\nalthough I imagine we will be tuning the knobs here for a long time. Maybe forever.\n\n## Meat proxy review\n\nI mentioned this in `4.1` above, but [meat proxy](https://simonwillison.net/2026/Aug/3/dont-be-a-meat-proxy/) review has become\nan interesting bottleneck for many teams. It’s a particularly difficult bottleneck because it initially *looks like* a solution,\nbut it makes things worse. The pattern is roughly:\n\n1. Team is overwhelmed with reviews\n2. Team decides to review pull requests with their local harness\n3. Pull requests get a large number of comments, some of which make sense, and some of which don’t.\n   It’s unclear which is which without study, and you don’t know which comments reflect the reviewer’s\n   point of view. So you end up having to do substantial work to disprove comments that the reviewer may\n   not even agree with\n4. Those teams then start using harnesses to respond to the harness-generated comments,\n   making the entire review process an illusion that doesn’t facilitate learning,\n   and most importantly could be done without the involvement of the other team members\n\nIn every case that meat proxy review is performed, the team would get better outcomes by\ninvesting into the centralized review mechanism, the harness’ loop for addressing the centralized review’s feedback,\nand simply stamping approval.\n\n## `fleet`: centrally orchestrated harness\n\nI’ll briefly mention our other approach to reducing code review\nvolume, which anchors on our centrally-orchestrated harness, `fleet`.\n(Which is similar to [Stripe’s Minions](https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents)\nalthough not following the one-shot approach in particular).\nWe rely on `fleet`\nto implement and verify software in a highly controlled harness running in the cloud, with independent\nevaluation mechanisms to identify the correct number of independent reviewers for\nany given change. That number can be as low as one (e.g. `fleet` writes, one human reviews)\nfor changes evaluated as safe.\n\n## Results / next steps / reception\n\nI’ll be honest, it’s too early to give a useful result here.\nFrom early results, about 10% of changes qualify as a `small-change`.\nThose are now eligible for very fast approval, and generally get it unless\nthey trip a flag, generally due to touching a security or money adjacent topic.\n\nWhile 10% is a small percentage, the core concept here is working,\nand ultimately will succeed or fail based on our ability to expand\nthat percentage over the next few months in tandem with expanding\nour verification mechanisms to be increasingly comprehensive.\nThis is ultimately going to fail or succeed depending on our ability\nto improve our verifications, which does require more difficult sorts of techniques\nto accomplish in [low scale-complexity, high domain-complexity](https://lethain.com/quality/) software\nthan in the high scale-complexity, low domain-complexity products where many techniques\nlike incremental rollouts are exceptionally effective. (Don’t get me wrong,\nthey still work, they just provide less coverage when most users have different configuration and behavior.)\n\nFolks have not been uniformly excited about this,\nit’s a substantial change from how we’ve learned to be good engineers,\nand it’s uncomfortable to reevaluate whether a long-held best practice has become merely dogma.\nThe most energizing part of the current cycle is that we get to reevaluate these\npractices we grew up on every week; the most painful part of the current cycle is that\nwe’re likely to fall behind if we ever stop reevaluating them.\n\nHi folks. I'm [Will Larson](https://lethain.com/about).\n\nIf you're looking to reach out to me, here are [ways I help](https://lethain.com/ways-i-help/).\n\nBooks\n\nI wrote\n[An Elegant Puzzle](https://www.amazon.com/Elegant-Puzzle-Systems-Engineering-Management/dp/1732265186),\n[Staff Engineer](https://staffeng.com/book),\n[The Engineering Executive's Primer](https://www.amazon.com/Engineering-Executives-Primer-Impactful-Leadership/dp/1098149483/), and\n[Crafting Engineering Strategy](https://craftingengstrategy.com/).\n\n[![](https://lethain.com/static/blog/2019/aep-small-lq.jpg)](https://www.amazon.com/Elegant-Puzzle-Systems-Engineering-Management/dp/1732265186)\n\n[![](https://lethain.com/static/blog/staffeng/StaffEngBookMed.jpg)](https://staffeng.com/book)\n\n[![](https://lethain.com/static/blog/2023/primer-cover-small.jpg)](https://www.amazon.com/Engineering-Executives-Primer-Impactful-Leadership/dp/1098149483/)\n\n[![](https://lethain.com/static/ces_cover_small.png)](https://craftingengstrategy.com/)\n\nNewsletter\n\nIf you'd like to get updates, [subscribe](https://lethain.com/newsletter/) for weekly emails, or follow my [RSS feed](https://lethain.com/feeds.xml).\n\nPopular\n\n- [Building internal agents](https://lethain.com/agents-series/)\n- [\"Good engineering management\" is a fad](https://lethain.com/good-eng-mgmt-is-a-fad/)\n- [Moving from an orchestration-heavy to leadership-heavy management role.](https://lethain.com/orchestration-heavy-leadership-heavy/)\n- [Eng org seniority-mix model.](https://lethain.com/engineering-cost-model/)\n- [How to create software quality.](https://lethain.com/quality/)\n\nRecent\n\n- [Speeding up code review with `small-change`](https://lethain.com/small-changes/)\n- [Trying the Software Factory pattern.](https://lethain.com/software-factory-experiment/)\n- [Roadmap decisions rather than dates.](https://lethain.com/decisions-not-dates/)\n- [Middle management roles are also a trap.](https://lethain.com/middle-management-roles-were-also-a-trap/)\n- [Generated and suppressed demand.](https://lethain.com/generated-demand/)\n\nRelated\n\n- [Trying the Software Factory pattern.](https://lethain.com/software-factory-experiment/)\n- [Roadmap decisions rather than dates.](https://lethain.com/decisions-not-dates/)\n- [Middle management roles are also a trap.](https://lethain.com/middle-management-roles-were-also-a-trap/)\n- [Generated and suppressed demand.](https://lethain.com/generated-demand/)\n- [Make no assumptions.](https://lethain.com/make-no-assumptions/)\n","body_html":"<h1 id=\"speeding-up-code-review-with-small-change\">Speeding up code review with <code>small-change</code></h1>\n<p>Published on October 17, 2026.\n<a href=\"https://lethain.com/tags/management\" rel=\"nofollow ugc noopener\">management (222)</a></p>\n<p>Imprint’s average engineer is merging 4x more PRs than 2 years ago. Yay.\nAggregated behind the average is something even more interesting:\nwe have two teams that are merging 10x their PRs over that period.\nOne engineer is merging 25x the PRs per week of our average engineer two years ago,\nand a number of others are closing in on that number.\nThat’s pretty neat, and the slope of the line suggests our average in a year is going to look much closer to\ntoday’s p90 than today’s p50.\nEven more importantly, we aren’t just shipping more, our quality has improved:\nincidents are down 42% half-over-half, and critical incidents are down 78% half-over-half.\nI think we’ve always known the quality/velocity tradeoff wasn’t a particularly useful\nconstruct, but that’s undeniable today.</p>\n<p>As we’ve walked this path, we–<a href=\"https://claude.dev/blog/solving-code-review-at-anthropic/\" rel=\"nofollow ugc noopener\">like everyone else</a>\nprogressing down it–have run into the problem of pull request review. The p50 pull request review took about 33 minutes to complete\n2 years ago, but now takes us about 77 minutes. The slope here correlates tightly with the number of\npull requests getting merged. Tightly enough that addressing it became one of my priorities for the week.</p>\n<p>We solved it! Just kidding, we’ve absolutely not solved it, but I think our current\napproach is an interesting one, which we call the <code>small-change</code>.</p>\n<hr />\n<p><em>The work discussed here was shaped and done by many folks at Imprint including Dan, Joy, Daniel, Lenny, Taylor, Ted, and Annie, among many others.</em></p>\n<h2 id=\"why-review-pull-requests\">Why review pull requests?</h2>\n<p>There are four reasons we review pull requests:</p>\n<ol><li><p><strong>Knowledge sharing between author and reviewer</strong> – software engineering is generally learned via</p><p> apprenticeship, and reviews are a primary mechanism of experienced engineers teaching others what\n good software looks like. We believe the current volume means that this knowledge sharing\n will have to move towards operating on clusters of pull requests, rather than individual pull requests</p></li><li><p><strong>Preventing errors</strong> – review has always been an expensive time to catch errors,</p><p> and we believe that effective CICD along with harness verification techniques like poteto’s\n <a href=\"https://github.com/cursor/plugins/tree/main/pstack\" rel=\"nofollow ugc noopener\">pstack</a> are more effective mechanisms\n for preventing errors than review</p></li><li><p><strong>Preventing malicious behavior</strong> – my experience is that even careful code review will generally</p><p> miss <em>competent</em> malicious behavior, although fortunately most malicious behavior is incompetent.\n We believe both sorts of behavior are best identified using a combination of fixed rules (modifying\n these specific objects/classes/files requires review), anti-abuse mechanisms that we’ve refined in\n our LLM-based member support experiences, auditing, and audit log inspection</p></li><li><p><strong>Compliance obligations in our documented controls</strong> – these can be changed, but today they require that</p><p> an independent human reviews changes in a subset of our repositories</p></li></ol>\n<p>In the modern development paradigm, we think there is a better solution for each of these problems.\nBut, we also want to make these changes very cautiously.</p>\n<h2 id=\"small-steps-with-small-change\">Small steps with <code>small-change</code></h2>\n<p>We believe we move fast by finding narrow, contained ways to validate new practices,\nso to iterate our way into an effective solution, we’ve developed the concept of a\n<code>small-change</code>. Here’s how it works:</p>\n<ol><li><p>When a pull request is marked ready, CICD determines whether it is eligible to be a <code>small-change</code>.</p><p> This is represented as a passing Github check. There is <em>also</em> a label for visibility,\n but it is the check itself, managed by the build and not human modifiable, that determines eligibility.\n (The label is used for initial filtering, but the check is still independently verified.)</p></li><li>Something is a <code>small-change</code> if it meets all of these criteria:<ol><li>It is less than 1,000 lines of code</li><li>There are no p1 or p2 findings from our <code>ai-code-review</code> automated review bot</li><li><p>The author has “experience” in the service or application, defined as 10+ prior merged pull requests</p><p> into that service or application’s directories.\n For changes working across multiple services or applications, the author must have experience in all of them to qualify</p></li><li><p>Impacts fewer than <code>N</code> distinct services or applications. <code>N</code> is 1 on our frontend monorepo,</p><p> and <code>N</code> is 3 in our backend monorepo, where typical changes will modify both a gRPC service and a common HTTP gateway</p></li><li>Shared libraries and utilities files are not eligible for <code>small-change</code></li><li><p>Each repository has a <code>.small_change</code> file which allows per-path customization while we continue to tune the behaviors.</p><p> For example, a service dealing with money movement can be excluded</p></li></ol></li><li><p>Our Slack automation tags every reference to a pull request with reacji labeling the state of that pull request,</p><p> for example if it has failing tests, if it has been approved but tests are still running, or if it is ready to merge.\n We added a <code>small-change</code> reacji that indicates which of those pull requests meet the <code>small-change</code> criteria</p></li><li>In our internal skills repository, we created two skills that have been distributed across harnesses:<ol><li><p><code>review-small-change</code> which takes a list of repositories and reviews all open, non-draft, small-changes,</p><p> including providing approval if they meet the review’s criteria (all checks pass including <code>small-change</code> check,\n and not touching on sensitive topics such as payments and security).</p>\n<p> Importantly, this skill has only two options: approve or ignore. It <em>never</em> comments on the PR to avoid\n the proliferation of “<a href=\"https://simonwillison.net/2026/Aug/3/dont-be-a-meat-proxy/\" rel=\"nofollow ugc noopener\">meat proxy</a> review”\n which has become a bottleneck-pretending-to-be-a-solution on some teams</p></li><li><p><code>review-pr-cluster</code> which reviews batches of pull requests to identify common themes that came up, and suggest opportunities</p><p> for discussion and adding verifications</p></li></ol></li><li><p>We set the social expectation that any error caused by a <code>small-change</code> is a failure in our system,</p><p> and has to be solved at the system level: improvements to <code>ai-code-review</code>, to our verification mechanisms,\n to our CICD, to our harness, etc.</p></li></ol>\n<p>This took about two days of infrequent attention to implement and rollout,\nalthough I imagine we will be tuning the knobs here for a long time. Maybe forever.</p>\n<h2 id=\"meat-proxy-review\">Meat proxy review</h2>\n<p>I mentioned this in <code>4.1</code> above, but <a href=\"https://simonwillison.net/2026/Aug/3/dont-be-a-meat-proxy/\" rel=\"nofollow ugc noopener\">meat proxy</a> review has become\nan interesting bottleneck for many teams. It’s a particularly difficult bottleneck because it initially <em>looks like</em> a solution,\nbut it makes things worse. The pattern is roughly:</p>\n<ol><li>Team is overwhelmed with reviews</li><li>Team decides to review pull requests with their local harness</li><li><p>Pull requests get a large number of comments, some of which make sense, and some of which don’t.</p><p> It’s unclear which is which without study, and you don’t know which comments reflect the reviewer’s\n point of view. So you end up having to do substantial work to disprove comments that the reviewer may\n not even agree with</p></li><li><p>Those teams then start using harnesses to respond to the harness-generated comments,</p><p> making the entire review process an illusion that doesn’t facilitate learning,\n and most importantly could be done without the involvement of the other team members</p></li></ol>\n<p>In every case that meat proxy review is performed, the team would get better outcomes by\ninvesting into the centralized review mechanism, the harness’ loop for addressing the centralized review’s feedback,\nand simply stamping approval.</p>\n<h2 id=\"fleet-centrally-orchestrated-harness\"><code>fleet</code>: centrally orchestrated harness</h2>\n<p>I’ll briefly mention our other approach to reducing code review\nvolume, which anchors on our centrally-orchestrated harness, <code>fleet</code>.\n(Which is similar to <a href=\"https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents\" rel=\"nofollow ugc noopener\">Stripe’s Minions</a>\nalthough not following the one-shot approach in particular).\nWe rely on <code>fleet</code>\nto implement and verify software in a highly controlled harness running in the cloud, with independent\nevaluation mechanisms to identify the correct number of independent reviewers for\nany given change. That number can be as low as one (e.g. <code>fleet</code> writes, one human reviews)\nfor changes evaluated as safe.</p>\n<h2 id=\"results-next-steps-reception\">Results / next steps / reception</h2>\n<p>I’ll be honest, it’s too early to give a useful result here.\nFrom early results, about 10% of changes qualify as a <code>small-change</code>.\nThose are now eligible for very fast approval, and generally get it unless\nthey trip a flag, generally due to touching a security or money adjacent topic.</p>\n<p>While 10% is a small percentage, the core concept here is working,\nand ultimately will succeed or fail based on our ability to expand\nthat percentage over the next few months in tandem with expanding\nour verification mechanisms to be increasingly comprehensive.\nThis is ultimately going to fail or succeed depending on our ability\nto improve our verifications, which does require more difficult sorts of techniques\nto accomplish in <a href=\"https://lethain.com/quality/\" rel=\"nofollow ugc noopener\">low scale-complexity, high domain-complexity</a> software\nthan in the high scale-complexity, low domain-complexity products where many techniques\nlike incremental rollouts are exceptionally effective. (Don’t get me wrong,\nthey still work, they just provide less coverage when most users have different configuration and behavior.)</p>\n<p>Folks have not been uniformly excited about this,\nit’s a substantial change from how we’ve learned to be good engineers,\nand it’s uncomfortable to reevaluate whether a long-held best practice has become merely dogma.\nThe most energizing part of the current cycle is that we get to reevaluate these\npractices we grew up on every week; the most painful part of the current cycle is that\nwe’re likely to fall behind if we ever stop reevaluating them.</p>\n<p>Hi folks. I&#39;m <a href=\"https://lethain.com/about\" rel=\"nofollow ugc noopener\">Will Larson</a>.</p>\n<p>If you&#39;re looking to reach out to me, here are <a href=\"https://lethain.com/ways-i-help/\" rel=\"nofollow ugc noopener\">ways I help</a>.</p>\n<p>Books</p>\n<p>I wrote\n<a href=\"https://www.amazon.com/Elegant-Puzzle-Systems-Engineering-Management/dp/1732265186\" rel=\"nofollow ugc noopener\">An Elegant Puzzle</a>,\n<a href=\"https://staffeng.com/book\" rel=\"nofollow ugc noopener\">Staff Engineer</a>,\n<a href=\"https://www.amazon.com/Engineering-Executives-Primer-Impactful-Leadership/dp/1098149483/\" rel=\"nofollow ugc noopener\">The Engineering Executive&#39;s Primer</a>, and\n<a href=\"https://craftingengstrategy.com/\" rel=\"nofollow ugc noopener\">Crafting Engineering Strategy</a>.</p>\n<p><a href=\"https://www.amazon.com/Elegant-Puzzle-Systems-Engineering-Management/dp/1732265186\" rel=\"nofollow ugc noopener\"><img src=\"https://lethain.com/static/blog/2019/aep-small-lq.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" referrerpolicy=\"no-referrer\" /></a></p>\n<p><a href=\"https://staffeng.com/book\" rel=\"nofollow ugc noopener\"><img src=\"https://lethain.com/static/blog/staffeng/StaffEngBookMed.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" referrerpolicy=\"no-referrer\" /></a></p>\n<p><a href=\"https://www.amazon.com/Engineering-Executives-Primer-Impactful-Leadership/dp/1098149483/\" rel=\"nofollow ugc noopener\"><img src=\"https://lethain.com/static/blog/2023/primer-cover-small.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" referrerpolicy=\"no-referrer\" /></a></p>\n<p><a href=\"https://craftingengstrategy.com/\" rel=\"nofollow ugc noopener\"><img src=\"https://lethain.com/static/ces_cover_small.png\" alt=\"\" loading=\"lazy\" decoding=\"async\" referrerpolicy=\"no-referrer\" /></a></p>\n<p>Newsletter</p>\n<p>If you&#39;d like to get updates, <a href=\"https://lethain.com/newsletter/\" rel=\"nofollow ugc noopener\">subscribe</a> for weekly emails, or follow my <a href=\"https://lethain.com/feeds.xml\" rel=\"nofollow ugc noopener\">RSS feed</a>.</p>\n<p>Popular</p>\n<ul><li><a href=\"https://lethain.com/agents-series/\" rel=\"nofollow ugc noopener\">Building internal agents</a></li><li><a href=\"https://lethain.com/good-eng-mgmt-is-a-fad/\" rel=\"nofollow ugc noopener\">&quot;Good engineering management&quot; is a fad</a></li><li><a href=\"https://lethain.com/orchestration-heavy-leadership-heavy/\" rel=\"nofollow ugc noopener\">Moving from an orchestration-heavy to leadership-heavy management role.</a></li><li><a href=\"https://lethain.com/engineering-cost-model/\" rel=\"nofollow ugc noopener\">Eng org seniority-mix model.</a></li><li><a href=\"https://lethain.com/quality/\" rel=\"nofollow ugc noopener\">How to create software quality.</a></li></ul>\n<p>Recent</p>\n<ul><li><a href=\"https://lethain.com/small-changes/\" rel=\"nofollow ugc noopener\">Speeding up code review with <code>small-change</code></a></li><li><a href=\"https://lethain.com/software-factory-experiment/\" rel=\"nofollow ugc noopener\">Trying the Software Factory pattern.</a></li><li><a href=\"https://lethain.com/decisions-not-dates/\" rel=\"nofollow ugc noopener\">Roadmap decisions rather than dates.</a></li><li><a href=\"https://lethain.com/middle-management-roles-were-also-a-trap/\" rel=\"nofollow ugc noopener\">Middle management roles are also a trap.</a></li><li><a href=\"https://lethain.com/generated-demand/\" rel=\"nofollow ugc noopener\">Generated and suppressed demand.</a></li></ul>\n<p>Related</p>\n<ul><li><a href=\"https://lethain.com/software-factory-experiment/\" rel=\"nofollow ugc noopener\">Trying the Software Factory pattern.</a></li><li><a href=\"https://lethain.com/decisions-not-dates/\" rel=\"nofollow ugc noopener\">Roadmap decisions rather than dates.</a></li><li><a href=\"https://lethain.com/middle-management-roles-were-also-a-trap/\" rel=\"nofollow ugc noopener\">Middle management roles are also a trap.</a></li><li><a href=\"https://lethain.com/generated-demand/\" rel=\"nofollow ugc noopener\">Generated and suppressed demand.</a></li><li><a href=\"https://lethain.com/make-no-assumptions/\" rel=\"nofollow ugc noopener\">Make no assumptions.</a></li></ul>","headings":[{"level":1,"text":"Speeding up code review with small-change","id":"speeding-up-code-review-with-small-change"},{"level":2,"text":"Why review pull requests?","id":"why-review-pull-requests"},{"level":2,"text":"Small steps with small-change","id":"small-steps-with-small-change"},{"level":2,"text":"Meat proxy review","id":"meat-proxy-review"},{"level":2,"text":"fleet: centrally orchestrated harness","id":"fleet-centrally-orchestrated-harness"},{"level":2,"text":"Results / next steps / reception","id":"results-next-steps-reception"}]}}