Software engineer resume examples
A strong software engineer resume says what you built or changed, which part was yours, how you know it worked and what you used to build it. The examples below are fictional. Each starts with a weak line, shows the question that improved it and what the engineer said, and ends with a bullet that uses no number they didn’t give.
Updated
Reviewed by an AI subject-matter reviewer (software engineering),
What the bullets need to show
The US Bureau of Labor Statistics describes the work as analyzing users’ needs, designing and building software, keeping it working through maintenance and testing, and documenting it (Occupational Outlook Handbook). A reviewer reading your resume looks for your part in each of those:
- Ownership. What you designed, wrote, reviewed or led, as distinct from what your team shipped.
- Testing. How you knew your change worked, and what the tests caught.
- Shipping. How the change reached production: a release, a feature flag, a migration.
- Operations. On-call, incidents, postmortems and the fixes that came out of them.
- Working with others. Code review, mentoring, design documents, explaining a change to people outside engineering.
- The stack, in context. Languages and services named inside the bullet where you used them, then collected in the Skills section.
The questions that find the bullet
Answer these out loud for each project or system you worked on. They are the questions a good interviewer will ask anyway.
- What did you build or change, and who used it?
- Which part was yours? Did you design it, write it, review it or lead the people writing it?
- How did it reach production?
- How did you know it worked: tests, monitoring, a dashboard someone else owns, a ticket that stopped coming?
- What broke, and what did you do about it?
- For any number: where did it come from, and what was it before?
- Which languages, frameworks and services did you use for this specific work?
Before and after, with the question that changed it
Priya Nair is a fictional backend engineer on a checkout and payments team. Her first drafts listed duties. One question each got the facts out.
Before
Worked on the payments service.
The question
Which part of the payments service was yours, and what changed because of it?
They said
“I own retries for card payments in our TypeScript payments service. When the processor timed out, we used to charge some people twice. I added idempotency keys to every charge request and wrote the tests for it, and support stopped getting double-charge tickets after that.”
After
Added idempotency keys and tests to every card charge request in the TypeScript payments service after processor timeouts caused double charges; support stopped receiving double-charge tickets.
Before
Improved API performance.
The question
Which endpoint, how was it measured, and what was it before and after?
They said
“The search endpoint was slow. On our Grafana dashboard, p95 latency was around 1,200 milliseconds. I added a composite index and stopped loading the full user record for every result, and it went to about 300.”
After
Cut search API p95 latency from about 1,200 to about 300 milliseconds by adding a composite index and no longer loading the full user record for each result.
Before
Responsible for testing.
The question
What did you test, how, and what has it caught?
They said
“Checkout had no end-to-end tests, so before every release someone clicked through it by hand. I wrote Playwright tests for the 6 main checkout paths and put them in our GitHub Actions pipeline. They’ve caught two broken releases before they shipped.”
After
Wrote Playwright end-to-end tests for the 6 main checkout paths and added them to the GitHub Actions pipeline, replacing a manual click-through before each release; they have caught two broken releases before shipping.
Before
Participated in the on-call rotation.
The question
What happened on your hardest on-call shift, and what changed afterward?
They said
“A certificate expired on a Saturday and nobody could log in to the mobile app for about 3 hours. I was on call, so I renewed it, and then I wrote the postmortem. Afterward I moved that certificate to automatic renewal and added an alert 14 days before any certificate expires.”
After
Restored mobile login during a certificate-expiry outage of about 3 hours while on call, wrote the postmortem, moved the certificate to automatic renewal and added an alert 14 days before any certificate expires.
Before
Mentored junior developers.
The question
Who did you mentor, on what, and what could they do afterward?
They said
“Two interns joined my team last summer. I reviewed all of their pull requests and paired with them every Thursday. By the end, both had shipped a feature on their own.”
After
Mentored two summer interns through code review and weekly pairing; each shipped a feature independently by the end of the internship.
Before
Migrated the database.
The question
What moved where, how did you avoid downtime, and which part was yours?
They said
“We moved the orders table from MySQL to Postgres. I wrote the dual-write layer and the backfill script in Python, and another engineer ran the cutover. Customers never saw any downtime.”
After
Wrote the dual-write layer and a Python backfill script for moving the orders table from MySQL to PostgreSQL, a migration with no customer-facing downtime.
Three of the six have no measured result. The payments bullet shows it as a ticket type that stopped arriving, the mentoring bullet as work the interns shipped on their own, and the migration bullet as downtime customers never saw.
Entry-level, mid-level and senior
Entry level and new graduates. Projects, internships and teaching-assistant work are your experience. Give each one a name, your role and dates, and say which part of a team project you wrote. Link a GitHub profile only if the code there is code you would discuss in an interview.
Before
Built a web app for a class.
The question
What did the app do, who used it, and which part did you write?
They said
“For our software engineering course, 4 of us built a booking app for the library’s study rooms. I wrote the booking API in Node and its tests. The library used it for the spring semester.”
After
Wrote the booking API and its tests in Node.js for a library study-room booking app, built by a team of 4 in a software engineering course; the library used it for the spring semester.
Before
Software engineering intern.
The question
What did you ship during the internship, and what happened to it?
They said
“At my internship I added CSV export to the internal admin dashboard, in Python. It went out in the October release, and the support team uses it every week.”
After
Added CSV export to the internal admin dashboard in Python as an intern; it shipped in the October release and the support team uses it weekly.
Mid-level. The examples above: systems you own, the incidents you handled and the people you helped. Most bullets should name a system, your part and a result you can explain.
Senior and staff. Your scope widens from your own code to your team’s technical direction, and at staff level across teams, so the questions shift to decisions: which design you proposed, which tradeoff you chose and why, who adopted it, and what you stopped from going wrong. Say “led” only where you led. A result that belongs to a whole team stays the team’s, with your part named.
A complete example
Priya’s resume, put together. Every experience bullet is one of the rewrites above, word for word.
Priya Nair
Columbus, OH · phone · email · GitHub
Summary
Backend software engineer on a checkout and payments team, working in TypeScript, Python and PostgreSQL, with on-call responsibility for production services.
Experience
Software Engineer, Fernway, online checkout for small retailers. 2023 to present.
- Added idempotency keys and tests to every card charge request in the TypeScript payments service after processor timeouts caused double charges; support stopped receiving double-charge tickets.
- Cut search API p95 latency from about 1,200 to about 300 milliseconds by adding a composite index and no longer loading the full user record for each result.
- Wrote Playwright end-to-end tests for the 6 main checkout paths and added them to the GitHub Actions pipeline, replacing a manual click-through before each release; they have caught two broken releases before shipping.
- Restored mobile login during a certificate-expiry outage of about 3 hours while on call, wrote the postmortem, moved the certificate to automatic renewal and added an alert 14 days before any certificate expires.
- Mentored two summer interns through code review and weekly pairing; each shipped a feature independently by the end of the internship.
Software Engineer, Brightlane Logistics. 2021 to 2023.
- Wrote the dual-write layer and a Python backfill script for moving the orders table from MySQL to PostgreSQL, a migration with no customer-facing downtime.
Education
B.S. in Computer Science, Lakeshore State University. 2021.
Skills
Languages: TypeScript, Python
Databases: PostgreSQL, MySQL
Testing and delivery: Playwright, GitHub Actions
What not to claim
- Numbers nobody measured. Latency, uptime, revenue or cost figures you can’t trace to a dashboard, a benchmark or a report. If you don’t know, describe what changed instead.
- The team’s result as yours. “Migrated the database” when you wrote one part of it. Name your part; the reader will respect the precision.
- Every technology the company uses. List what you worked in, not what was in the repository.
- Titles you didn’t hold. If you acted as tech lead without the title, keep the real title and describe the work in a bullet.
- Confidential details. Customer names, security incidents that were never made public, unreleased products and internal figures your employer hasn’t published.
- Code you can’t explain. If an AI assistant wrote much of a project, you still need to walk through every part you list. Say what you designed and checked yourself.
From your answers to bullets, in Hirova
Hirova, an AI resume builder for iPhone, runs the same kind of interview: it asks what you owned and what changed, sets your answers as bullets, and shows the words behind every number so you can confirm it. Nothing reaches your draft until you do.
- Import or start fresh. Bring in a PDF or a photo of your resume. Hirova reads it on your iPhone; the file is not uploaded.
- Answer a few questions. Three to five short questions about what you owned and what changed. Type or dictate, and skip any you like.
- See your words set as bullets. Hirova rewrites your answers as resume lines in a consistent voice.
- Check every fact. Each title, date and number shows the words it came from. Nothing reaches your draft until you confirm it.
- Export a PDF. A typeset, text-based PDF you can send from the share sheet.
Your first resume is free, including the PDF in the Minimal design. Hirova Pro adds a tailored version for each job posting, with a cover letter for each. Hirova Pro is $19.99 a month or $79.99 a year in the US. The App Store shows your local price before you buy.
Questions
- What should a software engineer put on a resume?
- For each role, three to six bullets that name a system, your part in it and a result you can explain, such as a ticket type that stopped or a latency figure from a dashboard. Add a Skills section listing the languages and tools you have actually worked in.
- How do I write a software engineer resume with no experience?
- Treat class projects, internships and open-source contributions as experience: give each a name, your role and dates, and say which part you wrote and who used it. More in how to write a resume with no experience.
- How long should a software engineer resume be?
- One page early in your career. Two pages is common for experienced engineers when every bullet on the second page is relevant to the job.
- Should I include a GitHub link on my resume?
- Yes, if it holds code you would be happy to walk through in an interview. A profile with only coursework forks or abandoned projects adds little.