If It’s Not Documented, It Didn’t Happen – How to Make Every PR Count


Chapter 1 – Introduction: What’s This About, and Who’s It For?
A phrase every engineer has heard — and ignored — at least once.
Code without context is like a meme without a caption.
Something’s happening, but nobody knows what or why.
Picture this:
It’s 2AM. You push a change.
PR title: “Quick fix.”
You think: “I’ll clean it up later.”
Spoiler: you won’t.
And you’ve been on the other side too — staring at a mystery-meat PR after 5pm, trying to reverse-engineer what the hell happened.
This isn’t about shaming.
It’s about elevating how we work — together.
Great PRs don’t come from “being more senior.”
They come from caring about the person reading them.
In this post, we’ll cover how to write PRs that:
Reviewers actually want to review
Document intent, not just code
Build trust and clarity in every change
Because one day, future you will look at this code and whisper:
“Who the hell wrote this?”
Spoiler: you.
Chapter 2 – Why Write Better PRs?
Ever joined a project and thought:
“Where the hell am I?”
You open the company wiki.
There’s something — a few bullet points, some acronyms, maybe a diagram from 2019.
You keep digging — maybe there’s a README, a Confluence page, a doc last touched by someone who left two years ago.
But let’s be honest — you already feel it: it’s not enough.
The codebase is massive.
The logic? Obscure.
You? On your own.
Now here’s the twist:
💡 Every project you’ve ever worked on already had detailed documentation — line by line, change by change — from day one.
Sounds impossible? It’s not. You just weren’t looking in the right place.
Here’s the hidden truth:
Pull requests are documentation.
Every PR is a snapshot of intent. A changelog with context. A mini-story of why the code changed — how, and what for.
The real questions are:
How good is that documentation?
Do the PRs explain — or just exist?
Are they bridges… or just bricks?
A well-written PR shows:
What was broken
Why the fix matters
How it was approached
What might break next
What to keep an eye on
It’s the cheapest, fastest, and most scalable form of documentation you’ll ever produce.
And you’re already doing it — whether you mean to or not. Let’s just make it intentional.
Pull requests are like pizza deliveries.
You don’t just drop the box and leave.
You make sure it’s hot, the order’s right — and you smile on the way out.
Because people don’t remember the code.
They remember the experience.
Chapter 3 – Anatomy of a Great Pull Request
A great pull request doesn’t just show what changed.
It shows why it matters.
It guides the reviewer, respects their time, and leaves a breadcrumb trail for the future developer — who might be you in six months.
What makes a PR great?
1. A Clear, Concise Title
No poetry. No mystery. Just what this PR does — in plain language.
❌ Bad: Fix stuff
⚠️ Better: Fix missing validation in EmployeeForm
✅ Great: Add required-field validation to EmployeeForm + improve error messaging UX
2. A Structured Description
A good PR answers:
What is being changed?
Why was it necessary?
How was it done?
Structure it like you care:
### What’s Changed
Short summary of the change.
### Why
Reason behind it. Link tickets/issues.
### How
Quick overview of the approach.
### Screenshots / Demos
[Insert GIFs, screenshots, or links]
### Test Plan
How was this tested?
### Impact / Rollback Plan
Risks and how to revert.
Links to Tasks or Specs
Link to Jira, Linear, Notion — anything that lets reviewers trace the problem from symptom to solution.
A Test Plan
Even if it’s small, list what you tested, areas affected, and why something wasn’t tested if applicable.
Your Reviewer is Your Safety Net
Treat them as your last defense before QA or production. The better you explain your PR, the more effective they can be.
Visual Proof (for UI changes)
Screenshots are good. GIFs are better. Loom videos are god-tier.
Learn how to write clear, documented pull requests that speed up reviews, build trust, and make future maintenance easier.Rollback Plan or Risk Notes
Flag any risks and how to mitigate them.
A great PR passes more than CI — it passes understanding.
Chapter 4 – Commits: The DNA of Your PR
If a PR is the story, commits are the sentences.
Get them right, and the story flows.
One commit = one meaningful change
Order them like a story: setup → change → cleanup
Keep them atomic and revertible
Write messages that make sense a year later
Format:
<Short summary in imperative mood>
<Optional longer explanation:
- Why?
- What does it affect?
- Gotchas?>
Small commits = clarity, not clutter.
Squash with intention — kill WIP noise, keep valuable history.
Chapter 5 – Treat Your PR Like the Only Documentation That Will Survive
Wikis fade. Internal docs rot.
PRs live forever.
Think like an archaeologist:
Why was this change made?
What was broken?
What was tried before?
Include lost context: meeting notes, Slack threads.
Make it navigable.
Link, but never rely solely on links.
One day, future you will thank present you.
Chapter 6 – Pull Request Anti-Patterns
Hall of shame:
“Fix stuff” title
Empty description
Mega commit monster
Sneaking unrelated changes
No visuals for UI changes
Dead link with no summary
“Works on my machine” test plan
Reviewer hostage situation
Misleading titles
No-context merges
Pro tip: Write for someone with zero context.
One day, that’s you.
Chapter 7 – PR as a Step in the Process, Not the End
Too many devs treat a PR like the finish line.
A great PR is the start of a conversation.
Be Open to Feedback – it’s about the code, not your worth.
Respond to Comments – silence is never the answer.
Merge Isn’t Always the Goal – pause if needed.
The Feedback Safety Net – reviewers are your second chance.
PR as Team Growth – discussions improve everyone.
Chapter 8 – The Pull Request Playbook
A quick checklist:
✅ Small, atomic changes
✅ Title like a headline
✅ “What / Why / How” in description
✅ Call out non-obvious changes
✅ Visual proof
✅ Test before you brag
✅ Use draft PRs when needed
✅ Respect reviewer’s time
✅ Separate yourself from the code
Chapter 9 – The Long Game
A good PR isn’t a luxury.
It’s survival.
Code changes. People leave. Context disappears.
But a great PR speeds up onboarding, reduces bugs, and builds trust.
Programming is a team sport.
Your PR is a brick in the skyscraper — with a note explaining why it’s there.
Final thought:
Every PR you write is either a speed bump or a speed boost.
You decide which one it is.
Write PRs that tell a story, answer questions before they’re asked, and make the next change easier.
Because in the long run, teams that win aren’t the ones who ship fastest — they’re the ones who keep shipping without breaking everything along the way.
Subscribe to my newsletter
Read articles from Marcin Pypeć directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
