Self-evaluation examples

Software Engineer Self-Evaluation Examples

Most engineers I've worked with under-sell themselves on self-evaluations. Some hate the format, some default to a kind of false modesty, and some just genuinely don't remember what they shipped six months ago. This is what to do about that.

8 min read·Updated 12 May 2026

Self-evaluations are the part of the review cycle most engineers I know dread. The form prompts ask you to describe your impact, your growth, your weaknesses. There’s a strong instinct to write something that sounds humble and proportional and end up with three bullet points that under-state everything you did. Then your manager writes a review based partly on what you wrote, and you wonder why nobody seemed to notice the hardest thing you shipped.

That pattern is fixable. The fix is not to write yourself up with more adjectives; it’s to write yourself up with more specifics. This piece is the engineer-side counterpart to the manager-side worked examples in performance review examples for software engineers. The principles are the same; the voice is different.

The prep step that makes everything else easier

Before you write a word, spend 45 minutes building an evidence inventory. Open a blank doc. Skim:

  • Your closed PRs from the review period. Group them by feature or project, not by date. The headline number (how many you shipped) is less interesting than the cluster (what they added up to).
  • Code review comments you wrote on other people’s PRs. Particularly the ones where you caught something real, or where you helped a junior unblock themselves.
  • Design docs and RFCs you authored or pushed back on. The ones you authored are obvious; the ones you pushed back on are sometimes the more important contribution.
  • Incidents you ran or contributed to fixing. On-call rotations included.
  • Times you said no.Cuts to scope, pushbacks on deadlines, things you flagged as bad ideas before they got built. These are unusually high-signal evidence of judgement and they’re the ones most engineers forget to mention.

The output of this 45 minutes is a list of 15 to 25 specific things you did. Now you have raw material. The self-eval prompts below all become much easier with a list like that in front of you.

Example responses to common self-eval prompts

“What was your biggest impact this period?”

Bad version: “I shipped the new dashboard and helped with the migration project.”

Better version:

The piece of work I’m most proud of this half was leading the API rate-limit redesign. The previous implementation was a single fixed bucket per customer, which had been the cause of three production incidents in Q1. I scoped the rebuild to use a sliding-window approach with per-endpoint quotas, wrote the design doc, ran it through two rounds of review with the platform team, and shipped it in six weeks. Since the cutover we have not had a rate-limit incident, and the team that owns the public API has stopped paging on those alerts entirely.

Note what this does. It names the project, names the previous state (three incidents), names the design choice (sliding-window, per-endpoint quotas), names the outcome (zero incidents post- cutover). A reader who skims it knows exactly what you did. A reader who reads it carefully knows your judgement was good.

“What didn’t go well? Where did you fall short?”

This is the prompt engineers blow most often. The two failure modes are over-honest (volunteering criticism the manager wasn’t going to raise) and dishonest (claiming a development area that isn’t real, like “I sometimes work too hard”).

Better version:

The biggest miss was on the notifications cleanup project. I estimated three weeks of work for what turned into seven. I under-scoped the migration from the legacy template system, which was deeper into the codebase than I’d realised, and I didn’t flag the slip early enough. The project shipped, but it crowded out two smaller things on the roadmap that bumped to next half. What I’d do differently: write a rough plan and timeline before committing to an estimate, even a one-pager, and raise the slip the week I noticed it rather than the week it became unavoidable.

Note what this does. It names the project. It names what went wrong (under-scoped a specific part). It names the second-order cost (the bumped work). And it names the concrete change you would make. That’s a self-evaluation that builds trust; it’s also one that strengthens the case for senior-level judgement, which is counter-intuitive but true.

“What did you learn this period?”

The instinct here is to write something generic about “ improving communication” or “getting better at collaboration.” Those phrases are evidence of nothing.

Better version:

Two things stand out. First, working through the rate-limit redesign with the platform team forced me to learn the distributed-systems trade-offs around clock skew and sliding windows. I’d read about both before; this was the first time I’d made non-trivial decisions about them in production code, and I came out understanding why most production rate limiters are a hybrid of token-bucket and sliding-window approaches. Second, mentoring Sam through their first ramp project changed how I write code review comments. I used to skip the “here’s why” on small suggestions; I now include it by default, and the cycle time on PRs from juniors has dropped noticeably.

“What are your goals for the next period?”

The framing trap here is goals that are activity, not outcome (“write more design docs”) or goals that are too vague to fail (“continue growing”). The good goal is specific, measurable in some loose sense, and connected to the level above where you currently operate.

Better version:

Three goals for the next half:
1. Own one cross-team initiative end-to-end. The candidate I have in mind is the unification of the two notification pipelines, which currently both report to my team but interact with growth and trust & safety. This would force me to operate the way I currently see senior engineers on this team operate.
2. Take on regular design-doc review for the broader platform group, not just for my immediate team. I’ve done this ad-hoc this half; I’d like to make it part of the role.
3. Mentor one additional junior. Sam has ramped well and is moving toward self-direction; I have capacity to take on another first-six-months engineer, and I think mentorship is now a strength I should keep practising rather than a thing I do occasionally.

The point of writing goals this specific is that they double as the calibration story for the promotion conversation in a year. Vague goals don’t do that.

Adjusting tone by level

The principles are the same across levels, but the specifics shift.

Junior engineers should focus on demonstrating learning velocity and reliability. The evidence is in PR throughput, ramp speed, and the questions you asked (good questions, asked early, are themselves a strength).

Mid-level engineers should focus on independent ownership and judgement. The evidence is in projects you scoped yourself, design docs you authored, and the cases where you pushed back on bad ideas.

Senior and staff engineers should focus on force-multiplier work and judgement that shows up across teams. The evidence is in design docs that other teams reference, promotion cases you supported, and the strategic calls you made about what not to build.

Across all levels, the move is the same: replace adjectives with specifics.

The one-page template

If I had to summarise the whole thing into a fill-in-the-blank template, it would look like this:

  • One sentence on the headline: the one thing you want a reader to remember.
  • Three specific things you shipped or owned: each named, with its outcome.
  • One honest miss:what happened, what it cost, what you’d do differently.
  • One thing you learned that actually changed how you work: not a vague competency, a real shift.
  • Three specific goals for next period: conditional on what level you’re aiming for.

Five points, each anchored to specifics. If you can write that, you’ll be in the top quarter of self-evals your manager reads this cycle. For the manager-side framework (the four buckets they’re evaluating you against) see how to write a performance review for a software engineer. For tactics on both sides, see performance review tips for software engineers.

Frequently asked questions

How long should a software engineer self-evaluation be?

About 300 to 500 words for the substantive content, plus whatever bullets the form requires. Long enough to cite three specific projects with outcomes and to handle the harder prompts (what didn't go well, what's next) with real specifics. Anything over a thousand words usually means the writer is hedging by saying everything twice.

Should I mention things my manager already knows about?

Yes. Self-evals are read in two situations: by your manager (who already knows most of it) and by anyone calibrating your case (who doesn't). The second audience matters more than people think, particularly for promotion decisions. Don't assume the reader has context. State the headline, then give the supporting detail.

What if I genuinely had a quiet half and don't have much to write?

Be honest. A self-eval that names a quiet period and explains what you'd do next is more credible than one that pads three small things into the language of a senior contributor. If the quiet period was deliberate (ramp, recovery from a previous high-output stretch, a side initiative that didn't get traction), name that context. If it wasn't deliberate, name what you'd change.

How honest should I be about my weaknesses in a self-evaluation?

Honest about specifics, careful with framing. Naming a real miss with what you'd do differently builds trust and usually strengthens your case. Volunteering a vague character flaw doesn't. It just hands the calibration room a question they didn't have. The rule: every weakness you list should come with the change you're already making about it.

Draft your next Software Engineer — Mid-level review with Crestento

Bullet points in, polished draft out. Two free reviews, no card required. The free tier IS the trial.