← all posts

How to write a self-review as a software engineer (with examples)

Your best engineering work — the mentoring, the on-call saves, the bugs you caught before they shipped — rarely lands in a ticket. Here's how to make it count.

Engineers have a specific self-review problem: the system of record flatters the wrong work. Your commit history shows what you shipped, your Jira board shows what you closed, and both quietly erase the judgment that actually separated you from a junior. The review template asks for impact, and you stare at a list of merged PRs that don't add up to a story.

The fix is to stop describing engineering activity and start describing engineering outcomes. Every line in your review should survive the question "so what?" A merged PR is not an accomplishment; what the PR prevented, unblocked, or sped up is. Your manager already assumes you write code. What they're deciding is whether you operate above your current level — and that decision is made on outcomes, not output.

Here is the translation in practice. "Refactored the auth module" becomes "Refactored the auth module, cutting login latency 60% and closing a class of session bugs we'd chased for two quarters." "Did code reviews" becomes "Caught a race condition in the payment retry logic during review, before it reached production." "Helped the team" becomes "Unblocked four engineers for two days by fixing the broken staging environment." Same work, but now each one is a claim a manager can take upstairs.

The work engineers under-report is the work that doesn't leave an artifact. Mentoring a struggling teammate. The on-call night where your judgment kept a fragile deploy from becoming an outage. The design-review comment that steered the team away from a migration that would have cost a month. The bad decision you talked the team out of. None of this shows up in a ticket, which is exactly why you have to capture it yourself — it is also the work that most clearly demonstrates seniority.

Quantify where you honestly can, and mark the rest as an estimate. "Cut deploy time 40%" backed by a dashboard is strong; "probably saved the team a few hours a week" is still worth including, as long as you flag it as inference rather than measurement. Distinguishing what you measured from what you're estimating is what makes the rest of your review credible — a reviewer who catches you overclaiming once discounts everything else you wrote.

Before you write, read your company's leveling rubric. Every level has behaviors it rewards — scope of influence, ambiguity handled, systems owned. Your job is not to summarize your year; it's to show evidence against those specific behaviors. Map your strongest entries to the rubric line they prove, and drop the ones that don't ladder up to anything.

The reason most of this is hard is memory. You can't reconstruct the on-call save or the design-review judgment six months later — the detail is already gone. Capture it in the moment: a sentence at the end of a hard day costs thirty seconds and beats an hour of reconstruction. Meritbook is built for exactly this — a private log where you capture as you go and generate a review when you need one, with every generated bullet traceable to a real entry. But a plain text file you actually keep beats the best tool you don't. The discipline is the point.

More from Meritbook