Software Engineer Self Review Examples: What I Actually Want to Read as a CTO

    Matt Watson
    By Matt Watson · CEO of Full Scale, 4x Founder, Author of Product Driven
    13 min read

    QUICK ANSWER

    A good software engineer self review trades activity for impact. Instead of listing the tickets you closed, it shows what changed because you did the work, with real numbers, and it names one or two things you’d do better. That is the version a manager can quote in a promotion discussion you’re not in the room for.

    I’ve read a lot of self reviews. As a CTO and now running Full Scale, I’ve sat on the other side of the table for hundreds of them. I read them at VinSolutions and Stackify before this, too.

    Most of them are forgettable. Not because the engineers were bad, but because the writing buried the good work under a pile of “worked on” and “helped with.”

    Here’s the thing nobody tells you about your self review.

    It’s the document your manager uses to argue for you in a room you’ll never see.

    Promotions and raises get argued out in a room you’re not in. At a big company that’s a formal calibration meeting where your manager is one voice among several. At a startup it’s your manager making your case to the founder over lunch. Either way, someone is defending you with whatever you handed them. If your self review is vague, they have nothing to fight with. If it’s specific, they can read your own line out loud and let it do the work.

    So write it for that room. Below are the patterns I look for, the ones I skip past, and concrete software engineer self review examples you can adapt to your own half.

    Activity is not impact, and most self reviews confuse the two

    The single most common mistake is writing a list of what you did instead of what changed.

    “Worked on the payments service.” “Fixed a bunch of bugs.” “Helped with the migration.” I read those and I learn nothing. Every engineer on the team did things. The question I’m actually asking is whether the things you did mattered.

    Done isn’t when the code ships. It’s when the customer sees value.

    That line is how I think about my own work, and it’s the bar I read self reviews against. Tie what you built to an outcome the team can measure. Revenue, reliability, time saved, a number that moved, a teammate you unblocked. If you can’t connect the work to a result, that’s worth knowing too, because it might mean you spent a half on something that didn’t matter.

    The difference shows up fast.

    Weak (activity)Strong (impact)
    “Worked on the payments service and fixed several bugs.”“Rebuilt the payment retry logic. Failed charges dropped from about 4% to under 1%, which recovered roughly $40K a month we were quietly losing.”
    “Helped improve site performance.”“Cut the dashboard’s first load from 6 seconds to 1.8 by fixing how we fetched data. Support stopped getting ‘the app is slow’ tickets.”
    “Did a lot of code reviews.”“Reviewed around 200 PRs this half and caught three security issues before they hit production. I also wrote the review checklist the team now uses.”

    Notice what the strong column does. It gets specific: numbers, a before and after, and the thing that got better for someone other than you.

    The numbers don’t have to be perfect, they have to be there

    Engineers freeze on this part because they want the metric to be exact. It doesn’t need to be. “Roughly,” “about,” and “ballpark” are fine. A rough number beats no number every time.

    Pull from three buckets when you’re stuck:

    • Code and systems. Services you owned, the size of a migration, latency or error rates before and after, test coverage you added, incidents you prevented or resolved.
    • People. Engineers you mentored, teams you coordinated with, the reviewer you became for a tricky part of the codebase, onboarding you ran.
    • Business. Revenue touched, costs cut, a deadline you saved, churn you reduced, a customer escalation you defused.

    You won’t have all three for every project. You don’t need them. One concrete number per accomplishment is enough to make the whole review feel real.

    Set the stage before you list the wins

    Strong self reviews start by naming what you were supposed to do, then show how you did against it.

    If you set out to “own the notifications rewrite and ship it by Q2,” say that first. Then the reader can see you hit it, beat it, or missed it and why. A list of accomplishments with no goalposts reads like you’re hoping volume will be mistaken for impact.

    This is also where you reframe a miss. Maybe the rewrite slipped because priorities changed mid-quarter. Saying so, in one honest sentence, reads as ownership. Hiding it reads as either denial or a bad memory, and managers notice both.

    Engineers who think like owners outperform those who wait for tickets.

    A self review that frames the half around the goals you set, the way an owner would, is the clearest signal of that mindset you can put on paper.

    Self review examples by category

    Strong looks like this across the four sections most reviews ask for. Steal the structure, not the generic self-appraisal comments you’d copy off a phrase list, and swap in your own work.

    Accomplishments and impact

    Weak: “I contributed to several projects and completed my assigned work on time.”

    Strong: “I owned the search rewrite end to end, from the RFC through rollout. Search latency dropped from 800ms to 120ms, and the support team told me ‘no results’ complaints basically stopped. Two other teams have since copied the indexing approach I documented.”

    The strong version names scope (end to end), a measurable result (latency, complaints), and influence beyond your own desk (two teams copied it). That last part is what separates a senior signal from a mid-level one.

    Technical skills and growth

    Weak: “I improved my React and backend skills this period.”

    Strong: “I migrated 60-plus components from class components to hooks with no production regressions, and I started reviewing the frontend PRs the rest of the team wasn’t sure about. I’m now the person they tag when a tricky rendering bug shows up.”

    Skills claims are empty without proof. “I got better at X” means nothing. “I became the person the team relies on for X” means everything, because it’s checkable.

    Collaboration and communication

    Weak: “I’m a strong team player and communicate well.”

    Strong: “I wrote the RFC for the billing rewrite that three engineers built against, and when QA was underwater the week before launch, I paired with them for two days instead of picking up my next ticket. The release went out clean.”

    Everybody calls themselves a good communicator. Nobody believes the claim. Show the artifact (the RFC) and the choice (helping QA over starting new work). Communication is most of the job once the code is no longer the hard part, so this section matters more than engineers think.

    Building a development team?

    See how Full Scale can help you hire senior engineers in days, not months.

    Areas for improvement

    This is the section engineers either skip or fill with a fake weakness. Both are mistakes.

    Weak: “I sometimes work too hard and need to improve my work-life balance.”

    Strong: “My design docs run too long and people stop reading them halfway. I’ve switched to a one-page format that leads with the decision and keeps trade-offs in a table. My last two docs got approved without a follow-up meeting.”

    The strong version names a real weakness, shows what you changed, and proves it worked. That is the most senior thing you can put in a review, and it’s the part I read most closely.

    I’ll tell you why I trust it so much.

    Years ago at Stackify, my COO Craig sat me down and told me I was the bottleneck. The whole company slowed down because every decision ran through me. He handed me a book called Rocket Fuel by Gino Wickman and basically told me to get out of my own way. It stung, and he was right. The engineers who can see that about themselves and write it down, before someone has to tell them, are the ones I bet on.

    What “strong” looks like changes with your level

    The same accomplishment reads differently depending on your level. The thing our engineering competency matrix really measures isn’t how many features you shipped. It’s how you handle ambiguity.

    The question a self review quietly answers is whether you solved the problem you were handed or thought about the problem itself.

    • Junior. You take a well-defined task and ship it well. A strong junior self review shows you can own a piece of work end to end without someone checking every step. “I built the notifications feature to spec, on time, with tests, and handled the edge cases QA usually finds” is a strong junior line.
    • Senior. You handle ambiguity. The work shows up half-defined and you figure out the shape of the problem, not just the code. A strong senior line names a place the requirements were fuzzy and you made the call: “The spec didn’t say what happens when a payment half-fails, so I designed the retry-and-reconcile model, wrote it up, and got the team to agree before I built anything.”
    • Staff and above. You question whether we should be solving the problem at all. The most valuable thing you did this half might be talking the team out of building something. “I pushed back on the analytics rebuild, showed it would eat a quarter to serve maybe 2% of accounts, and we shipped the billing fix that was actually losing us money instead” is a staff line a junior could never write.

    That top kind of work, the problem you talked everyone out of, almost never has a clean number on it. That’s fine. Don’t invent one. Name the counterfactual instead: the quarter you saved, the incident that never happened, the engineer who’s self-sufficient now because of how you spent your time. Some of the best work I’ve ever read in a review had no metric next to it, because the win was something that didn’t happen.

    Tie your growth to where the job is going

    The job is changing fast, and a self review is a good place to show you see it.

    AI now writes a real share of the code on most teams. The latest Stack Overflow Developer Survey shows the large majority of developers already using or planning to use AI tools in their workflow. That shifts what’s valuable about an engineer. A senior developer still costs real money. The U.S. median software developer salary sits around $133K base, and more once you add benefits and overhead. What justifies that cost is shifting from writing code to solving the right problem. Typing code is no longer the scarce skill.

    Pure coders will be replaced by AI. Problem solvers will run technology organizations.

    So if you’ve leaned into that shift, put it in the review. Show curiosity. What did you learn this half, what AI tooling did you fold into your work, where did you catch the AI being confidently wrong and fix it. At Full Scale I tell our engineers the same thing every time it comes up: stay curious and you’ll be fine. Curiosity is one of the three things I think actually carry a developer’s career now, alongside communication and courage, and it’s a theme I dig into in my book Product Driven.

    There’s a twist worth knowing. A lot of engineers now run their self review through ChatGPT, which makes the generic, activity-list version more common than ever, and easier than ever to spot. When everyone’s review reads the same, the specific one wins. The detail only you could know is the proof a human did the thinking, which is the same thing that makes you worth keeping now that AI handles the routine coding.

    A self review that shows you’re adapting reads completely differently from one that shows you standing still.

    A self review template you can actually use

    If you want a skeleton for your self evaluation, here’s the one I’d hand a new engineer. Five short sections, no fluff.

    1. What I set out to do. The two or three goals you owned this half, stated up front.
    2. What I shipped and what changed. Your accomplishments, each tied to a result and a number where you have one.
    3. How I worked with the team. Concrete collaboration, the artifacts and the choices, not adjectives.
    4. Where I want to get better. One or two honest weaknesses and what you’re already doing about them.
    5. What’s next. The goals you’re setting for the coming half.

    Keep it to a page or two. A self review isn’t measured by length. A tight, specific one page beats five pages of “worked on.” For a deeper engineer-facing template, The Pragmatic Engineer’s write-up is the best one out there and worth bookmarking.

    How we evaluate engineers at Full Scale

    Since the point of a self review is to feed a real performance review, here’s how ours works, in case it’s useful as a model.

    We review our senior, junior, and mid-level engineers every six months. That cadence is deliberate: it’s long enough to show real progress and short enough that nobody goes a year without a real conversation. Development managers and project managers get reviewed once a year, since their wins play out over longer arcs.

    The review pulls from four inputs:

    • Feedback from the client and project manager on the actual work.
    • A skills check against our engineering competency matrix, so whether someone is performing at their level is an objective question we can actually answer.
    • Peer input from the engineers who work alongside them day to day.
    • The engineer’s own self review, which tells us how they see their own progress, and often surfaces a gap between how good they are and how good they think they are.

    That last input is the one this article is about. The self review isn’t a formality we collect. It’s how we find out whether an engineer can see their own work clearly, and that’s a skill that matters as much as anything on a developer skills assessment. Pair it with honest feedback and a clear ladder, and reviews stop being the thing everyone dreads and start being the thing that actually grows people.

    Recognition isn’t expensive, either. Gallup’s research is blunt that recognizing good work is one of the cheapest, highest-impact things a manager can do, and a review is a built-in chance to do it.

    It’s also a big reason our developer retention sits at 93%. People stay where they can see themselves getting better. We build long-term teams for our clients, not the cheapest developers we can find. I call that trap cheapshoring, and avoiding it is why an engineer’s growth over years is the entire point for us.

    What not to put in your self review

    A few fast ones, because the SERP is full of advice on what to write and short on what to cut.

    • The humble brag disguised as a weakness. “I care too much.” Nobody believes it, and it wastes the most valuable section.
    • Vague praise of yourself. “I’m passionate and hardworking.” Show it or drop it.
    • A wall of every ticket. Your reviewer doesn’t want the full log. They want the three things that mattered.
    • Blame. “I would have shipped it if QA hadn’t been slow.” Even when it’s partly true, it reads as someone who won’t own outcomes.
    • Nothing about growth. A review with no honest weakness reads as someone who either can’t see themselves or won’t be honest. Both are red flags.

    The whole thing in one line

    Write the review your manager can read out loud in the room you’re not in.

    Be specific, tie work to impact, put a number on it, and name one thing you’d do better. That’s the version that gets you remembered when the decisions get made.

    If you’re an engineering leader trying to get reviews like this out of your whole team, that’s a culture and a process problem more than a writing problem, and it’s most of what I write about in Product Driven. And if you’re trying to build a team of engineers who think and write like owners in the first place, that’s what we do at Full Scale.

    Frequently asked questions

    What should a software engineer write in a self review?

    Lead with the two or three goals you owned, then show what you shipped and what changed because of it, with a number wherever you have one. Add one honest area you’re improving and what you’re doing about it. Skip the full ticket log.

    How do you quantify your work in a self assessment?

    Pull from three buckets: code and systems (latency, error rates, migration size, incidents prevented), people (engineers mentored, teams coordinated with), and business (revenue touched, costs cut, deadlines saved). A rough number like “about 4% to under 1%” is fine and beats no number.

    What are good examples of areas for improvement for software engineers?

    Real, specific, and already being worked on. “My design docs are too long, so I switched to a one-page format and my last two shipped without a follow-up meeting” is strong. “I work too hard” is a wasted line.

    How long should a software engineer self review be?

    One to two pages. Length isn’t the measure. A tight, specific page that ties each accomplishment to a result beats five pages of “worked on” and “helped with.”

    Should you mention AI tools in your self review?

    Yes, if you’ve used them well. Showing that you’ve folded AI into your workflow and can catch it when it’s wrong signals curiosity and adaptability, which is exactly what’s becoming scarce as AI handles more of the routine coding.

    Get Product-Driven Insights

    Weekly insights on building better software teams, scaling products, and the future of offshore development.

    Subscribe on Substack

    Ready to add senior engineers to your team?

    Have questions about how our dedicated engineers can accelerate your roadmap? Book a 15-minute call to discuss your technical needs.

    Software Engineer Self Review Examples: What I Actually Want to Read as a CTO