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

推荐订阅源

Cyberwarzone
Cyberwarzone
Vercel News
Vercel News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
腾讯CDC
S
SegmentFault 最新的问题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Hacker News
The Hacker News
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
B
Blog
IT之家
IT之家
Spread Privacy
Spread Privacy
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cisco Blogs
Recent Announcements
Recent Announcements
H
Hacker News: Front Page
AI
AI
I
InfoQ
H
Heimdal Security Blog
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
W
WeLiveSecurity
SecWiki News
SecWiki News
MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
云风的 BLOG
云风的 BLOG
T
Threat Research - Cisco Blogs
V2EX - 技术
V2EX - 技术
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
O
OpenAI News
阮一峰的网络日志
阮一峰的网络日志
T
Troy Hunt's Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网
T
Tor Project blog
有赞技术团队
有赞技术团队
Schneier on Security
Schneier on Security
Last Week in AI
Last Week in AI

jola.dev

Elixir Cluster 101 | jola.dev How to stop Claude from saying load-bearing | jola.dev Let libraries be libraries | jola.dev CI workflows on Tangled for Elixir | jola.dev Automatically syncing your blog to atproto and standard.site | jola.dev Appreciation for the small web | jola.dev Treating LLMs as programming books Publishing your blog to standard.site in Elixir Generating OG images in Elixir The social contract of writing Highest Random Weight in Elixir bunnyx: a bunny.net Elixir client library Building for the joy of building Running local models on an M4 with 24GB memory How to hit your Claude weekly limit so you can go outside and touch grass Dropping Cloudflare for bunny.net Building a blog with Elixir and Phoenix Stay in the Loop: How I Actually Use Claude Code Ruthless Prioritization: The Path to Delivery Estimates Are More Valuable Than You Think When Software Engineers Think They Need More Focus Time If the Goal is Resiliency, Defensive Programming is Your Enemy Building a Distributed Rate Limiter in Elixir with HashRing Announcing Hex Diff Building Hex Diff Push-based GenStage The Erlang :queue module in Elixir Patterns for managing ETS tables Health checks for Plug and Phoenix The new `Registry.select/2` and what match specs are Elixir String Processing Optimization
The Magic of Daily Pull Requests: Why Smaller is Better
Johanna Larsson · 2025-07-19 · via jola.dev

Disclaimer: This blog post was written in 2025 during a time when I experimented with LLM-assisted writing.

There's something deeply satisfying about clicking that merge button. That moment when your code goes from "work in progress" to "shipped" never gets old. But here's what I've learned after years of building software: if you're not merging at least one pull request a day, you're probably making your life harder than it needs to be.

The Miscommunication Problem

I recently had several eye-opening conversations with teammates that revealed a fundamental disconnect in how we think about development velocity. When I suggested aiming for a PR a day, the reaction was immediate and negative. "You want me to work faster?" "I can't put in more hours!" "This pace is unsustainable!"

But here's the thing: I wasn't asking them to work harder or longer. I was asking them to work differently.

The problem wasn't their work ethic or skill level. It was that we were speaking completely different languages. When I said "merge a PR daily," they heard "produce more output in less time." What I actually meant was "radically rethink how you structure your work."

What Daily PRs Actually Mean

Let me be crystal clear: a PR a day doesn't mean cramming 16 hours of work into 8. It doesn't mean rushing through code reviews or cutting corners on quality. It means becoming ruthless about scope.

Instead of tackling that massive feature in one heroic effort, you break it down. You find the smallest possible piece that provides value and ship it. Then you find the next smallest piece. And the next.

This isn't easy. In fact, it's one of the hardest skills to develop as an engineer. Our natural instinct is to want to ship "complete" features. We want to show the full vision, the perfect implementation. But perfection is the enemy of progress.

The Compound Benefits of Small, Frequent Merges

When you master the art of daily PRs, something magical happens. The benefits compound in ways you might not expect:

Code reviews become a joy instead of a chore. When a PR is 50 lines instead of 500, reviewers can actually understand what's happening. They provide better feedback. They catch more issues. The whole process becomes collaborative rather than adversarial.

Collaboration accelerates dramatically. When you're merging daily, other developers can build on your work immediately. No more waiting a week for that critical interface to land. No more merge conflicts that take hours to resolve.

You feel more successful, which makes you more successful. This might sound like pop psychology, but it's real. The psychological impact of daily wins cannot be overstated. Each merge is a small victory. These victories build momentum. Momentum builds confidence. Confidence builds better software.

Stakeholders get actual visibility. No more weekly standups where you say "still working on the user authentication system" for the third week in a row. Instead, you can point to concrete progress: "Monday I shipped the password validation. Tuesday I added the email verification flow. Wednesday I integrated with the notification service."

The Art of Scope Cutting

So how do you actually achieve this? How do you take a feature that seems like it needs a week and ship part of it today?

Start by questioning every assumption. That new dashboard feature? Maybe you don't need all five widgets on day one. Ship one widget. That API integration? Perhaps you can start with read-only access before implementing writes.

Look for natural boundaries in your work. Can you ship the data model separately from the UI? Can you implement the happy path before handling edge cases? Can you deploy behind a feature flag so the code is merged even if the feature isn't live?

The key is to always be asking: "What's the smallest thing I can ship that moves us forward?"

The Daily PR Challenge

I'll admit it: hitting a PR every single day is ambitious. Some days you're in meetings. Some days you're debugging production issues. Some days you're doing research or design work.

But even if you can't hit it every day, the mindset shift is what matters. A PR every other day beats one every week. A PR every three days beats one every two weeks. The exact frequency matters less than the commitment to keeping changes small and shipping frequently.

The real transformation happens when you internalize this approach. When you automatically think in terms of small, shippable increments. When you instinctively look for ways to break down work rather than batch it up.

Making It Happen

If you're convinced and want to try this approach, start small (how fitting). Pick your next feature or bug fix and ask yourself: "How can I ship part of this today?"

Don't aim for perfection. Aim for progress. Ship something small. Then ship something else small tomorrow. Before you know it, you'll have shipped more in a week than you used to ship in a month.

The path to shipping great software isn't through heroic efforts and massive PRs. It's through consistent, incremental progress. One small PR at a time.

Can you merge a PR today?

Written by Johanna Larsson. Thoughts on this post? Find me on Bluesky at @jola.dev or why not give it a vote on Bubbles.