ATS-TestedFree + edit in builder

Software engineer resume examples

Real, full-length resumes across career stages and specialisations. Each is structured the way an engineering hiring manager actually reads — scope first, evidence second, decoration never.

ByTomás Albrecht·Senior Resume Writer·Reviewed byDaniel Ortega· Head of Writing·4 examples

Engineering hiring panels grade resumes on three axes: scope (what was the system, how big), evidence (what specifically did you ship and what changed), and signal (what does the rest of your time outside the day job suggest about your trajectory). The examples on this page are written for each axis. Bullets lead with the verb, name the artifact, attach a number, and end. There is no soft-skill cloud and no objective statement — both are noise to an experienced reader.

This matters because engineering recruiting is fast. A resume sits in front of an engineering manager for between eight and thirty seconds before they decide whether to move it to the keep-pile, the phone-screen pile, or the reject pile. Most resumes lose in the first eight seconds because the top of the page describes the candidate rather than the system. 'Passionate software engineer with strong analytical skills' is what every other resume opens with; the resumes that get pulled forward open with 'Backend engineer at a fintech company, owns the merchant-settlement service.'

For entry-level candidates, the structure is identical with smaller scope. An internship project that cut p99 latency by 50% on a non-trivial workload is real evidence. A class project that 'used React and Node.js' is filler. Hiring panels do not need junior candidates to have shipped at scale — they need to see that the candidate can talk about what they built in engineering terms.

For senior and staff candidates, the structure widens. The summary names a system (not a surface), the experience bullets include leadership signal alongside technical signal, and the bottom third of the resume is reserved for capability proof — open-source contributions to recognized projects, conference talks, publications, or non-trivial side projects with real users. These items compound. They are also the items a hiring panel quotes when they vouch for you to a skeptical colleague.

Below: full resumes across career stages and specializations, a writing guide pulled from how engineering recruiters actually grade the first pass, twelve sample bullets you can adapt, the action verbs and tools hiring managers screen for, common mistakes that disqualify candidates faster than weak experience does, format guidance for engineering specifically, BLS salary and outlook data, and answers to the questions our writers field most often.

4 examples

Tyler Chen

Software Engineer · BSc Computer Science · Backend, web
Ann Arbor·[email protected]·+1 (734) 555-0192·github.com/tylerchen·tylerchen.dev

Education

BSc in Computer Science
University of Michigan
Sep 2022May 2026
  • Relevant coursework: Distributed Systems (grad seminar), Operating Systems, Compilers, Algorithms.
  • Teaching assistant for EECS 281 (Data Structures); two semesters.
  • Dean's Honor List, six semesters.

Skills

Languages
TypeScriptPythonRustGoJava
Tools
PostgreSQLNext.jsDockerGit

Summary

CS graduate from the University of Michigan (May 2026). Two production internships at Cloudflare and a YC fintech. Shipped a course-scheduling tool now used by 4,200 students at my university.

Experience

Software Engineering Intern
Cloudflare · Austin, TX (Hybrid)
May 2025Aug 2025

Returning intern on the DNS infrastructure team. Mentored by a Staff engineer.

  • Built a metrics-aggregation pipeline for DNS in Rust + ClickHouse; p99 on weekly rollups cut from 4.2s to 380ms.
  • Shipped two improvements to the public dashboard (React, TS) that went live during my internship.
  • Wrote the team's onboarding doc; cited as 'the new gold standard' by my mentor in the final review.
Software Engineering Intern
Truss Financial (YC W24) · Remote
Jun 2024Aug 2024

First-cohort intern at an early-stage YC startup. Full-stack work across the customer dashboard.

  • Owned the design and build of the customer-facing transaction-history view (Next.js, PostgreSQL).
  • Wrote the team's first end-to-end test suite (Playwright); regression count fell from 6 per release to 0-1.

Projects

UMich Course Planner
https://umichcourseplanner.app

Course-scheduling tool used by 4,200 UMich students (~9% of undergrads). Solo project — Next.js, Postgres, Supabase. Most-starred student project on the CS GitHub org.

Next.jsPostgreSQLSupabase

Educational reimplementation of the Redis protocol and basic commands. Tokio-based, 96% test coverage.

RustTokio
entry

Entry-level

Recent CS grad. Two production internships and a side project with real users.

Use this template

Jordan Lee

Backend Software Engineer · Go, PostgreSQL · Payments & fintech infra
Brooklyn·US
[email protected]+1 (646) 555-0173github.com/jordanlee-englinkedin.com/in/jordanlee-eng

Summary

Backend engineer with four years of production experience across two payments companies. Own the merchant-settlement service at Quill — a Go + PostgreSQL pipeline processing $1.2B annualised across 38k merchants. Two merged PRs into otel-go-instrumentation.

Skills

Languages
GoPythonTypeScriptSQL
Infrastructure
PostgreSQLKafkaKubernetesRedisAWS (EKS, RDS, S3)

Experience

Backend Engineer
Quill·Brooklyn, NY
Apr 2023Present

Own the merchant-settlement service end-to-end — a Go + PostgreSQL pipeline processing $1.2B in annualised volume across 38k merchants. Primary on-call for the service, weekly rotation.

  • Re-architected the reconciliation pipeline (Go, PostgreSQL); cut merchant-facing errors 84% on a 12M-event/day workload.
  • Cut p99 latency on the settlement API from 480ms to 90ms via a Redis-backed cache on the merchant-lookup hot path.
  • Shipped the company's first gRPC contract layer (protobuf + buf); migrated 6 services off REST, -35% inter-service latency.
  • Authored the on-call runbook adopted across three sister services; new hires ramp to primary in 2 weeks vs 6.
Software Engineer
Stripe·Dublin, Ireland
Aug 2021Mar 2023

First-line backend engineer on the bank-rails team. Owned the European ACH-equivalent integration (SEPA) and rotated on-call for the broader payments-core platform.

  • Shipped the SEPA Instant integration used by 4,800 European merchants; €2.3B processed in the first nine months.
  • Cut flaky integration tests on bank-rails from 12% to under 1.5% via deterministic time + a contract-test framework.
  • Mentored two junior engineers through L3-to-L4 promotion cycles.
Software Engineering Intern
Cloudflare·Austin, TX
Jun 2020Aug 2020
  • Shipped a metrics-aggregation pipeline for DNS; p99 on weekly rollups from 4s to 380ms.

Projects

pg-shadowGoPostgreSQL
Mar 2024

Self-hosted Postgres logical-replication shadow-traffic tool — captures production queries and replays them against a candidate database for migration testing. 380 GitHub stars, used internally by two fintech companies.

Education

BSc in Computer Science
Carnegie Mellon University · Pittsburgh, PA
Sep 2017May 2021
GPA 3.78/4.0
  • Concentration in systems. Capstone: implementing a Raft-based key-value store.
mid

Mid-level (Backend)

4 years in production. Owns a service end-to-end and ships through the on-call rotation.

Use this template

Sam Whitaker

Frontend Software Engineer · React, TypeScript · Design systems
Brooklyn·[email protected]·+1 (718) 555-0231·github.com/samwhitaker·samwhitaker.dev

Summary

Frontend engineer with five years of production experience across two B2B SaaS companies. Own the design system at Vellum — a React + TypeScript component library used by 70+ engineers across 14 product surfaces. Most recent work cut Time-to-Interactive on the marketing site from 3.4s to 880ms.

Skills

Languages
TypeScriptJavaScriptCSS / TailwindPython
Frameworks
ReactNext.jsStorybookVitest + PlaywrightGraphQL

Experience

Frontend Engineer
Vellum · Remote (Brooklyn, NY)
Sep 2023Present

Own the design system across the entire product. Partner with PM and design on every new surface; primary on accessibility reviews.

  • Built the React + TypeScript design system (Storybook + custom tokens); 70+ engineers ship from it across 14 product surfaces.
  • Cut Time-to-Interactive on the marketing site from 3.4s to 880ms via route-segment loading + critical-CSS extraction.
  • Led the accessibility audit + remediation pass; took primary-app WCAG conformance from AA-partial to AA across all flows.
  • Migrated the data-table surface from a third-party grid to a custom TanStack-based one; bundle shrank by 280kb and render latency on 10k-row tables fell 4×.
Software Engineer
Linear · Remote
Aug 2020Aug 2023

Frontend IC on the workflow team. Shipped the planning, cycles, and dark-mode surfaces. Promoted L3 → L4 in 18 months.

  • Owned the cycle-planning UX end-to-end; adoption among >20-person teams reached 78% within 6 months of launch.
  • Co-led the dark-mode rollout including accessibility audit; WCAG AA across all primary surfaces.
  • Wrote the team's first Playwright suite for the planning flow; regression count fell from 4/release to under 1.
Software Engineering Intern
Stripe · Seattle, WA
Jun 2019Aug 2019
  • Shipped the merchant-dashboard accessibility audit; cleared 47 WCAG violations and authored the team's a11y checklist.

Open Source

radix-ui/primitives
Contributor (3 merged PRs)

Three merged PRs to Radix UI — a focus-trap edge case in Dialog, keyboard navigation in Menubar, and ARIA improvements in Tooltip.

TypeScriptReact

Projects

Headless responsive-grid primitive built on container queries. 720 GitHub stars; powering the layout system at two recognised B2B SaaS companies.

ReactTypeScript

Education

BSc in Computer Science
New York University, Tandon School of Engineering
Sep 2016May 2020
  • Concentration in HCI. Capstone: real-time collaborative whiteboard built on CRDTs.
mid

Mid-level (Frontend)

5 years. Owns the design system + a11y at a B2B SaaS. React, TypeScript, Storybook.

Use this template

Priya Krishnamurthy

Senior Software Engineer · Distributed systems · 9 years
Seattle·US·[email protected]·+1 (206) 555-0184·github.com/priyak·linkedin.com/in/priyakrishnamurthy

Profile

Senior backend engineer with nine years across payments and developer platforms. Lead on the inference request router at a model-serving startup — owns the control plane across three regions hosting 80+ production models. Previously at Stripe; merged PRs in opentelemetry-go-instrumentation and authored the SRE framework now used by 14 backend teams.

Skills

Languages
GoRustTypeScriptPython
Infrastructure
KubernetesTerraformAWS (EKS, RDS)PostgreSQLKafka

Experience

Senior Software Engineer
Cortex AI · Remote (Seattle, WA)
Mar 2024Present

Tech lead on the model-serving platform. Own the request router, control plane, and SRE roadmap across three regions hosting 80+ production models.

  • Re-architected the inference router (Go, Envoy); cut p99 latency from 1.2s to 180ms on a 40M-req/day API.
  • Authored the company SRE framework adopted by 14 backend teams; on-call pages dropped 62% within the first quarter.
  • Designed the multi-tenant rate-limiter (Redis + token-bucket) handling 12k RPS with sub-millisecond decisions.
  • Led a 5-engineer team building the model-serving control plane that hosts 80+ production models across three regions.
Senior Software Engineer
Stripe · Seattle, WA
May 2020Feb 2024

Backend engineer on the bank-rails team. Owned the SEPA Instant integration and the Open Banking connector. Promoted L4 → L5 in 14 months.

  • Owned the SEPA Instant integration used by 4,800 European merchants; €2.3B processed in the first nine months.
  • Migrated bank-rails from REST to gRPC; reduced inter-service latency by 30% and cut flaky integration tests from 12% to 1.5%.
  • Mentored 5 junior engineers; three promoted to senior within 18 months of joining the team.
Software Engineer
Plaid · Remote
Aug 2017Apr 2020

Backend engineer on the data-sync team. Owned the financial-data pipeline serving 8,000 institutions.

  • Owned the financial-data sync pipeline ingesting 1.4B transactions per day across 8,000 institutions.
  • Reduced reconciliation errors by 78% via idempotent event sourcing with deterministic conflict resolution.

Education

BSc in Computer Science
Carnegie Mellon University · Pittsburgh, PA
Sep 2013May 2017
  • Systems concentration. Capstone: implementing a Raft-based key-value store.
senior

Senior

9 years across payments + dev platforms. Owns a system, mentors juniors, ships OSS.

Use this template

Live preview · Entry-level

Use this resume

Why this resume works

Education sits at the top — correct for an entry-level candidate. The two internships are named at recognised companies and described in production-engineering terms ('shipped to prod,' specific latency improvements). The side project (UMich Course Planner used by 4,200 students) is the single highest-signal item for a new grad — it proves the candidate has shipped something real and users care about. The skills list is tight; languages are level-graded so the resume is honest about depth.

Tyler Chen

Software Engineer · BSc Computer Science · Backend, web
Ann Arbor·[email protected]·+1 (734) 555-0192·github.com/tylerchen·tylerchen.dev

Education

BSc in Computer Science
University of Michigan
Sep 2022May 2026
  • Relevant coursework: Distributed Systems (grad seminar), Operating Systems, Compilers, Algorithms.
  • Teaching assistant for EECS 281 (Data Structures); two semesters.
  • Dean's Honor List, six semesters.

Skills

Languages
TypeScriptPythonRustGoJava
Tools
PostgreSQLNext.jsDockerGit

Summary

CS graduate from the University of Michigan (May 2026). Two production internships at Cloudflare and a YC fintech. Shipped a course-scheduling tool now used by 4,200 students at my university.

Experience

Software Engineering Intern
Cloudflare · Austin, TX (Hybrid)
May 2025Aug 2025

Returning intern on the DNS infrastructure team. Mentored by a Staff engineer.

  • Built a metrics-aggregation pipeline for DNS in Rust + ClickHouse; p99 on weekly rollups cut from 4.2s to 380ms.
  • Shipped two improvements to the public dashboard (React, TS) that went live during my internship.
  • Wrote the team's onboarding doc; cited as 'the new gold standard' by my mentor in the final review.
Software Engineering Intern
Truss Financial (YC W24) · Remote
Jun 2024Aug 2024

First-cohort intern at an early-stage YC startup. Full-stack work across the customer dashboard.

  • Owned the design and build of the customer-facing transaction-history view (Next.js, PostgreSQL).
  • Wrote the team's first end-to-end test suite (Playwright); regression count fell from 6 per release to 0-1.

Projects

UMich Course Planner
https://umichcourseplanner.app

Course-scheduling tool used by 4,200 UMich students (~9% of undergrads). Solo project — Next.js, Postgres, Supabase. Most-starred student project on the CS GitHub org.

Next.jsPostgreSQLSupabase

Educational reimplementation of the Redis protocol and basic commands. Tokio-based, 96% test coverage.

RustTokio

What hiring managers look for

The specific signals an experienced software engineer hiring panel grades on during the eight-second scan.

  • Summary names a system, not a personality

    'Backend engineer owning the merchant-settlement service' beats 'passionate software engineer' every time.

  • Engineering numbers — p99, throughput, error rate, MTTR

    Latency in ms, requests per day, test coverage percentages. The units a hiring panel speaks.

  • Stack named inline (Go, PostgreSQL, Kubernetes)

    Standalone tokens parse cleanly as ATS keywords and let the panel grade depth at a glance.

  • One non-trivial OSS contribution or side project — if it exists

    Merged PR to a recognized library or a side project with real users. Don't fabricate; don't list tutorial projects.

  • Education condensed to a single line (mid+ levels)

    School, degree, year. Anything more is decoration the hiring panel skips.

  • No soft-skills section

    'Communication, problem solving, teamwork' is filler — the experience bullets should already demonstrate them.

How to write a software engineer resume

  1. 1

    Open with the system and the surface area

    A staff engineer summary names the system: 'Owns the inference request router on a 40M-req/day API.' A senior engineer summary names the surface: 'Backend engineer on the bank-rails team at a payments company, owns the SEPA integration.' A mid-engineer summary names the service: 'Backend engineer at a fintech company, ships through the on-call rotation on the merchant-settlement service.' An entry-level summary names a project: 'Recent CS graduate; shipped a metrics-aggregation pipeline as an intern that cut p99 query latency by 90%.'

    The pattern is consistent: the noun matters more than the adjective. A hiring panel reading the first sentence of your summary is asking 'what did this person actually work on,' not 'what kind of person are they.' Lead with what.

    Avoid the temptation to lead with traits. 'Passionate software engineer with strong analytical skills and a love of clean code' is what every other resume opens with. It's literally the LLM-default summary for the role, and hiring panels have started filtering it out as low-signal. The summary that gets read is the one that names a specific system or project a panel can ask follow-up questions about during the phone screen.

  2. 2

    Quantify with engineering numbers

    Latency, throughput, error rate, test coverage, MTTR, p99, deploy frequency, lines-of-code-deleted — these are the units a hiring panel speaks. 'Reduced p99 from 1.2s to 180ms on a 40M-req/day API' is read; 'Significantly improved performance' is skipped. The denominator matters: '50% latency reduction' could mean trimming an idle process by 5ms; '50% latency reduction on a 40M-req/day API with paying customers' is meaningful engineering work.

    The specific numbers to favor: • Latency: name p50, p95, p99 explicitly (panels read p99 as the harder constraint). • Throughput: requests/sec or events/day with both before and after. • Reliability: error rate or MTTR before/after. • Test coverage: percentage or absolute counts of flaky tests fixed. • Migration: count of services migrated and the resulting latency or reliability change. • Code review or mentorship: count of engineers you mentored through a promotion cycle.

    If you don't have the exact baseline, estimate with language that signals you're estimating: 'roughly halved,' 'order of magnitude better,' 'from minutes to seconds.' Hiring panels respect honest estimation and distrust suspicious precision.

  3. 3

    Name the stack inline, not in a wall of tags

    A tech-stack chip row at the end of each role description is fine — many engineer resumes use this convention and hiring managers expect it. A separate 'Skills' section listing twenty languages and forty tools is a red flag: it tells a hiring panel the candidate has touched many things and committed to none.

    The pattern that works: name the language or tool inside the bullet where you used it, then list a compact chip row of three to six items at the bottom of each role. The bullet provides context ('Built a Go service backed by PostgreSQL'), the chip row provides the parseable list. Together they give a hiring manager an immediate read on the candidate's stack across their last three roles.

    For your Skills section at the bottom of the resume, list 15-25 items weighted toward depth in your target stack. Group them lightly: 'Languages: Go, Rust, TypeScript, Python' / 'Infrastructure: PostgreSQL, Kafka, Kubernetes, AWS' / 'Practices: gRPC, OpenTelemetry, on-call leadership.' Group labels are optional but they parse well and read well.

    Do not list languages you have not shipped in for at least three months of production work. Listing a language you briefly touched in college will read as inexperience to a hiring panel at a sophisticated company — they would rather see four languages you're fluent in than ten you've sampled.

  4. 4

    Include one OSS or side-project line — if it exists

    A merged PR to a well-known open-source library, a published open-source tool with real users, or a side project with non-trivial adoption is the single highest-signal item on an engineer's resume. Hiring panels disproportionately weight these items because they prove the candidate writes for an audience beyond their day job — which is the trait most engineering managers screen for at the senior and staff levels.

    The items that count: • Merged PRs to libraries with 1k+ stars (named project, named PR, brief description). • A solo open-source project with 100+ stars and at least one external contributor. • A side project with 1k+ active users or demonstrable usage data. • A meaningful conference talk at a recognized venue (PyCon, KubeCon, GopherCon, JSConf, etc.). • Publications in named venues (LWN, Increment, ACM Queue, your own widely-read engineering blog).

    What doesn't count: tutorial projects, landing-page clones, half-finished side projects, contributions to your own throwaway repos. Filler in this section weakens the rest of the page by association.

    If you don't have any of these yet, leave the section out entirely. A resume without an open-source line is normal; a resume with a thin open-source line is a red flag. The exception is for entry-level candidates — a side project with real users (your university course-planner used by 4,200 students, for example) is the highest-leverage thing you can put on the page.

  5. 5

    Cut the soft-skills section

    Communication, collaboration, leadership, problem-solving, attention to detail — every candidate writes these. Hiring panels read them as filler. The bullets in your experience section should already demonstrate them; the skills section should be technical.

    What to cut from a typical engineering resume: • 'Strong communication skills' (replace with a bullet that names a specific incident retro you led or a runbook you authored). • 'Team player' (replace with a bullet naming the cross-functional partner team and what you produced together). • 'Detail-oriented' (replace with a metric — flaky tests reduced, code review comments resolved, incident MTTR improvement). • 'Self-motivated, fast learner' (replace with an open-source contribution or side project). • 'Passionate about clean code' (replace with a refactoring outcome — lines deleted, test coverage delta, latency improvement).

    The rule of thumb: if a sentence on your resume could appear unchanged on any other candidate's resume, it's filler. Cut it. Replace it with a sentence that's only true of you.

    The exception is languages spoken (not programming languages — natural languages). Naming Spanish or Mandarin proficiency at the bottom of the resume is useful for roles at multinationals and for distributed teams. List proficiency explicitly: 'Spanish (full professional)' not 'Spanish (some).'

Pro tip

Name the system, not the surface

A staff-track summary opens with 'owns the inference request router on a 40M-req/day API.' A mid-level summary opens with 'ships through the on-call rotation on the merchant-settlement service.' The system name is what an experienced hiring manager scans for.

Pro tip

Quantify with p99 latency before throughput

Throughput numbers are easy to inflate; p99 latency is the metric staff engineers grade on first. 'Cut p99 from 1.2s to 180ms on a 40M-req/day API' is the bullet that gets read.

Pro tip

Don't keyword-stuff with hidden white text

Every modern ATS flags it. Greenhouse surfaces it to recruiters as an integrity issue. Sophisticated companies (Stripe, Google, Cloudflare, the FAANG tier) explicitly disqualify candidates caught doing this. Honest density compounds; tricks don't.

Pro tip

Five languages you can interview in tomorrow

List the four or five languages you'd take a technical interview in without prep. Listing ten signals you've sampled, not shipped. Engineering hiring panels prefer depth in four to breadth across ten.

ATS notes

Engineering ATS pipelines almost universally use Greenhouse or Lever at venture-backed tech companies, with Workday and SAP SuccessFactors more common at enterprises. The behavior is similar across all four: each indexes your resume into structured fields (heading match, dates, titles, named tokens) and scores it against the job description. Scoring is recruiter-tuned, not deterministic — a recruiter can pull a resume forward even with a low ATS score — but a low score usually means the resume never reaches a human.

What this means concretely for engineers:

First, name languages and frameworks as standalone tokens, not buried inside sentences. The parser is looking for 'Go,' 'Rust,' 'PostgreSQL,' 'Kubernetes' as recognizable strings. 'Built a Go service backed by PostgreSQL on Kubernetes' indexes all three. 'Built a backend service using common cloud infrastructure' indexes none of them. The named-token pattern is also how a hiring manager scans, so you're optimizing for both audiences simultaneously.

Second, include both the canonical name and the common abbreviation when they diverge. 'Continuous Integration (CI),' 'Kubernetes (k8s),' 'Infrastructure as Code (IaC).' Job descriptions vary in which form they use; covering both ensures you match either way. This isn't keyword-stuffing — it's terminological completeness, and a recruiter reading the resume notices it as a sign of thoroughness rather than padding.

Third, do not attempt the hidden-white-text keyword-stuffing trick. Every modern ATS flags it. Greenhouse will mark the resume in a way that's immediately visible to recruiters. Lever has detection running on uploads. Sophisticated companies — Google, Stripe, Cloudflare, the FAANG tier — explicitly disqualify candidates caught doing this. The keyword strategy that works is honest density: name the languages and tools you actually shipped in, where you shipped them, and let the parser do its job.

Fourth, the 'Skills' section should be technical, focused, and roughly fifteen to twenty-five items. Listing fifty technologies signals to a hiring manager that the candidate has touched many things and is master of none. Listing four signals either an entry-level candidate or someone who isn't trying. The Goldilocks band is fifteen to twenty-five, weighted toward depth in the stack you're targeting — for a backend role, the list should be backend-heavy.

Fifth, prefer a clean PDF over a designed one. Engineering recruiters expect Source Sans, Inter, IBM Plex, or one of the standard system fonts. They expect a single-column layout for most roles (two-column is fine for mid- and senior-level if the structure is clear). They do not expect graphics, icons, color-coded skill bars, or any decoration that suggests the candidate spent more time on the design than the content. The PDF should be parseable and skimmable in eight seconds; that's the entire design brief.

Sample bullets you can adapt

Each follows the [verb] [object] [number] structure hiring managers grade against. Copy them as a starting point, swap in your own numbers, and read the annotation to understand why each one works.

  • Performance

    Cut p99 latency on the settlement API from 480ms to 90ms by introducing a Redis-backed batched cache for the merchant-account lookup hot path.

    Why it works: Names p99 explicitly (not just 'latency'), gives the absolute before/after numbers, and explains the specific technical intervention. The 'hot path' detail signals familiarity with profiling — a senior-level read on a mid-level resume. The cache choice (Redis-backed batched) is concrete enough that an interviewer can ask three follow-up questions.

  • Reliability

    Re-architected the settlement reconciliation pipeline (Go, PostgreSQL, idempotent event sourcing); reduced merchant-facing reconciliation errors by 84% across a 12M-event/day workload.

    Why it works: Pairs the stack name (Go + PostgreSQL + event sourcing) with the workload scale (12M events/day) and the outcome (84% error reduction). The 'idempotent event sourcing' detail signals understanding of distributed-systems patterns at the level expected for a senior backend role — credibly readable on a mid-level resume.

  • Shipping

    Owned the SEPA Instant integration that's now used by 4,800 European merchants; processed €2.3B in volume in the first nine months post-launch.

    Why it works: Ownership signal ('owned'), real-world adoption metric (4,800 merchants), and a volume figure (€2.3B) that proves the work shipped to a meaningful scale. SEPA is a recognized ATS keyword for payments roles in Europe. The post-launch timeframe shows the candidate has longitudinal data on the system, which is a senior trait.

  • Platform

    Designed and shipped the company's first gRPC service-to-service contract layer (protobuf + buf); migrated 6 internal services off REST, shaving 35% off inter-service latency.

    Why it works: Two distinct contributions stacked: building the contract layer (platform work) and the migration of six services (rollout work). The latency outcome ties platform work to a business-facing metric. Naming buf specifically signals current-vintage tooling — a candidate familiar with modern protobuf ergonomics, not just the language.

  • Testing

    Reduced flaky integration tests on the bank-rails service from 12% to under 1.5% by introducing deterministic time and a contract-test framework.

    Why it works: Testing improvements are hard to quantify; this bullet does it cleanly with a before/after on flakiness rate. The 'deterministic time' detail is a tell — engineers familiar with that pattern recognize it as the right fix, and engineers unfamiliar with it Google the term and treat it as a credibility signal. This is the kind of bullet that gets a hiring panel to push the resume forward.

  • On-call

    Authored the on-call runbook adopted as the template for three sister services; new on-call hires now ramp to primary in two weeks instead of six.

    Why it works: Documentation work is undervalued on most engineer resumes; this bullet shows why it's load-bearing. The runbook generalized (three sister services adopted it), and the impact is measurable (ramp time cut by 67%). The on-call topic also signals production-engineering responsibility — a senior-leaning trait.

  • On-call

    Closed 14 incident retros as the IC lead over six on-call rotations; mean-time-to-mitigation on bank-rails incidents fell from 47 to 14 minutes.

    Why it works: Counts of retros (14) and rotations (6) prove the on-call work was sustained. The MTTM metric is the production-engineering KPI hiring panels recognize. Reading this bullet, a hiring manager can ask three interview questions immediately: which incidents, what category, what was the longest-tail one.

  • Mentorship

    Mentored two junior engineers through their L3-to-L4 promotion cycles; both promoted on first eligibility.

    Why it works: Mentorship is a senior-level signal — most mid-level engineer resumes can't claim it credibly. 'Both promoted on first eligibility' is the differentiator: it proves the mentorship had a measurable outcome rather than being asserted. Levels (L3, L4) are recognized across the industry; the bullet parses cleanly regardless of which company the reader works at.

  • Internship

    Built a metrics-aggregation pipeline for the DNS team that cut p99 query time on weekly rollups from 4s to 380ms (intern project, shipped to prod).

    Why it works: Two parenthetical details make this internship bullet read as production work rather than coursework: the magnitude of the latency improvement (10×) and the explicit 'shipped to prod' tag. For an entry-level candidate, this is the single most important bullet on the resume — it proves they can ship in a real engineering environment.

  • Open Source

    Merged two PRs into the official OpenTelemetry Go auto-instrumentation library — one closed a context-propagation bug under high concurrency.

    Why it works: Named project (OpenTelemetry), specific contribution count (two), and a description of one PR that signals depth ('context-propagation bug under high concurrency' is a technically meaty description). This is the high-signal item a hiring panel will single out when forwarding the resume. OpenTelemetry is also widely recognized across the industry.

  • Side Projects

    Shipped pg-shadow, a logical-replication shadow-traffic tool for Postgres migration testing — 380 GitHub stars, used internally by two fintech companies.

    Why it works: Side projects that show production-engineering thinking (replication, migration testing) read at a much higher level than personal portfolios. The adoption metric (two fintech companies using it internally) is the differentiator — most side projects don't generate that kind of pull. Star count is a secondary signal that gives the reader a quick read on community traction.

  • Architecture

    Migrated the merchant-onboarding service from synchronous REST to event-driven Kafka topics; reduced merchant-side onboarding latency p95 from 6.4s to 1.1s.

    Why it works: Architecture migration is hard work to demonstrate on a resume; this bullet does it by naming the before/after pattern (REST → event-driven Kafka), the surface area (merchant-onboarding service), and the user-facing outcome (p95 latency). The user-facing metric is what differentiates this from infrastructure work — it ties architecture to merchant experience.

Wrong vs Right · bullet rewrites

Same intent, two phrasings. Read why the right column lands on the keep-pile and the wrong column doesn't.

Summary opener

Wrong

Passionate software engineer with strong analytical skills and a love of clean code.

Right

Backend engineer at a Series B fintech, owns the merchant-settlement service. Go + PostgreSQL pipeline processing $1.2B annualised across 38k merchants.

Why: The right version names the system, the stack, and the scale in one sentence. The wrong version is the LLM-default summary every other candidate uses — hiring panels have started filtering it out as low-signal.

Performance

Wrong

Improved API performance through caching and optimization techniques.

Right

Cut p99 latency on the merchant-settlement API from 480ms to 90ms by introducing a Redis-backed batched cache on the merchant-lookup hot path.

Why: The right version names p99 (the harder constraint), gives absolute before/after numbers, names the technical intervention, and identifies the specific hot path. Three follow-up interview questions could come from that one bullet.

Stack

Wrong

Experience with various programming languages, databases, and cloud infrastructure.

Right

Re-architected the reconciliation pipeline (Go, PostgreSQL, idempotent event sourcing); cut merchant-facing errors 84% on a 12M-event/day workload.

Why: The right version names the stack inline where it was the actual technical choice. The wrong version is keyword-padding without commitment — hiring panels skim past it.

Open source

Wrong

Active contributor to various open-source projects in the Go ecosystem.

Right

Two merged PRs to opentelemetry-go-instrumentation (one closed a context-propagation bug under high concurrency).

Why: Naming the specific library, the PR count, and the technical content of one PR proves the contribution is real. Vague claims about 'various projects' read as either inexperience or as misrepresentation.

Mentorship

Wrong

Mentored junior team members and supported their professional development.

Right

Mentored two junior engineers through L3-to-L4 promotion cycles; both promoted on first eligibility.

Why: Levels are recognized across the industry. Promotion outcome is verifiable. The wrong version is the soft-skills cloud rewritten as a sentence — hiring panels read past it.

Skip the blank page

Start from the entry-level example

Edit the names, the numbers, the company — yours in under a minute.

Use this template

Common mistakes (and how to fix them)

Patterns our writers see most often when reviewing software engineer resumes — each one disqualifies candidates faster than weak experience does.

  • Mistake

    Opening with adjectives instead of a system. 'Passionate software engineer with strong analytical skills and a love of clean code.'

    Fix

    Lead with the system you worked on. 'Backend engineer at a fintech company, owns the merchant-settlement service. Four years of production experience in Go and PostgreSQL.' Two sentences, twenty words, and the hiring panel knows what to ask about during the phone screen.

  • Mistake

    Listing every language you've ever touched. 'Languages: Python, Java, JavaScript, TypeScript, C++, C#, Ruby, Go, Rust, Kotlin, Swift, R, MATLAB, Haskell, Elixir.'

    Fix

    Four to six languages you've shipped in for production work, in the last five years. If you used a language in one college course six years ago, leave it out. Hiring panels read long language lists as inexperience, not breadth.

  • Mistake

    Bullets that describe responsibilities instead of work. 'Responsible for maintaining backend services.'

    Fix

    Replace with a specific intervention and outcome. 'Cut p99 latency on the settlement API from 480ms to 90ms by introducing a Redis-backed batched cache on the merchant-lookup hot path.' Responsibilities are claims; interventions with outcomes are evidence.

  • Mistake

    A graphic-heavy designed PDF with skill bars, icons, and color-coded sections.

    Fix

    Single-column, Source Sans or Inter font, no graphics, no skill bars, no icons except company logos (and only if they parse cleanly). Engineering recruiters expect this layout; deviation reads as the candidate prioritizing design over content.

  • Mistake

    A long 'Education' block listing relevant coursework, GPA, projects, and honors at a senior level.

    Fix

    For mid- and senior-level engineers, education is a single line: school, degree, year. For entry-level candidates, you can include GPA (if 3.5+) and one or two highlights, but trim aggressively past that. Hiring panels at senior levels weight education at roughly 5% of the overall read.

  • Mistake

    Vague open-source claims. 'Contributed to various open-source projects.'

    Fix

    Name the project, name the contribution, link the PR or repo. 'Two merged PRs to opentelemetry-go-instrumentation (one closing a context-propagation bug under high concurrency).' Vague open-source claims read as resume padding.

  • Mistake

    Two-page resume with fewer than 8 years of experience.

    Fix

    One page. Engineering hiring panels rarely open page two unless page one earned the read. Cut the internship paragraph to one line, trim education to a single row, and let your most recent two roles breathe with three to five bullets each.

  • Mistake

    Hidden white-text keywords stuffed into the bottom of the page.

    Fix

    Don't. Every modern ATS flags it. Greenhouse explicitly surfaces it to recruiters as an integrity issue. Stripe, Google, Cloudflare, and the FAANG tier will disqualify you outright if caught. Honest keyword density (name what you actually shipped, where you shipped it) is the only strategy that compounds.

Resume format for Software Engineers

Reverse-chronological is the default for software engineer resumes and the format every hiring panel expects to see. List your most recent role first, with months and years; work backward in time. Functional resumes — the ones that lead with a 'Skills Summary' and put dates at the bottom — are immediately flagged by engineering recruiters because they're disproportionately used to hide gaps, job-hopping, or thin experience. The only honest use case for a hybrid format is a genuine career-changer (e.g., physics PhD → software engineer with two contract roles), and even then a clear reverse-chronological is usually stronger.

The specific layout that converts for engineering: header (name, contact, location, GitHub, LinkedIn) → two-to-three sentence summary → experience (most recent role first, three to five bullets each) → open-source contributions (if non-trivial) → side projects (if non-trivial) → skills section (languages, infrastructure, practices) → education. Single-column for most roles; two-column is fine for mid and senior if the structure is clear, but the experience section should be the dominant visual block regardless.

One page until you have eight or more years of experience. Two pages only if you have substantial open-source work, multiple senior+ roles at recognized companies, or genuine specialization that requires more surface area to demonstrate (security engineers, ML researchers, and database engineers often justify two pages earlier than generalists). Anything past two pages reads as filler to a hiring panel, and the third page is almost never opened.

Salary & job outlook

Median annual salary

$132,270

Range: $74,930 to $208,620

Projected job growth

+17% from 2023 to 2033 (much faster than average)

Action verbs for software engineers

Strong verbs lead strong bullets. Replace generic openers (worked on, helped with, was responsible for) with the specific verb that matches what you actually did.

shippedbuiltowneddesignedarchitectedmigratedrefactoredrewroteinstrumentedprofileddebuggedscaledhardenedautomatedcacheddeduplicateddeprecatedreplacedbenchmarkedtunedload-testedmonitoredalertedrolled outreleasedmergedreviewedmentoredleddocumented

Skills hiring managers screen for

ATS pipelines weight your Skills section as a structured list. Include 15-25 of the items below if they match your experience — not soft skills.

GoRustTypeScriptPythonJavaPostgreSQLMySQLRedisKafkaRabbitMQgRPC + protobufREST APIsGraphQLKubernetesDockerTerraformAWS (EC2, EKS, RDS, S3)GCPOpenTelemetryPrometheusGrafanaCI/CD (GitHub Actions, Buildkite)Distributed tracingEvent sourcingOn-call leadershipCode reviewMentorshipTechnical writing

FAQ

Should a software engineer resume be one page or two?+

One page until you have at least eight years of experience. Engineering hiring panels move fast — a second page is rarely opened unless the first page made it onto the 'maybe' pile. Trim ruthlessly: internships go to one line each, education to a single row, and the oldest role can usually drop to two bullets if your recent roles are stronger.

Do I need a 'Projects' section if I have full-time experience?+

Only if the project is non-trivial — a tool with real users, a contribution to a recognised open-source library, or a system you built end-to-end that's documentably in use. A landing-page clone, a tutorial project, or a portfolio site will read as filler against your full-time work. For entry-level candidates with limited work experience, projects are essential; for senior candidates, they're load-bearing only if they're at a higher level of sophistication than the day-job work.

How do I handle a gap in employment on an engineering resume?+

If you spent the time on something defensible — a serious side project, contract work, a degree, parental leave, a sabbatical — name it as its own dated row. Don't try to hide a gap by stretching dates; hiring managers will catch it during reference checks and the trust cost is not worth the few months it papered over. A clearly explained gap with concrete activity is significantly less damaging than a stretched date that gets discovered.

Should I list every language I've touched?+

No. List the four or five you'd be comfortable taking a technical interview in tomorrow. Adding a language you briefly touched in college will read as inexperience to a hiring panel, not breadth. Engineering hiring panels weight depth in three or four languages above superficial familiarity with ten.

How should I list my GitHub or open-source contributions?+

If you have meaningful contributions, give them their own section near the top of the resume — above or below your most recent experience. Name the project (with link), name the contribution (PR count, feature shipped, bug closed), and give a one-sentence description of the work. If your GitHub is mostly personal projects without external traction, link it from the header but don't dedicate a section to it.

What if I work at a company nobody's heard of?+

Describe the company in one short clause inside the role description: 'Backend engineer at Quill (Series B fintech, 38k merchants, $1.2B annualised volume).' Three details — stage, scale, category — give a hiring panel the context they need to grade your work. Generic descriptions like 'a fast-growing startup' don't help; specific ones do.

Should I include a 'Hobbies and Interests' section?+

No. Engineering hiring panels read it as filler. The only exception is when a hobby is genuinely engineering-adjacent and signals trajectory (e.g., a CTF team you're on, a hardware project you ship to a small audience, a technical podcast you co-host). Generic hobbies — hiking, photography, cooking — should be cut.

Do certifications matter for software engineers?+

Most don't. Cloud certifications (AWS Solutions Architect, GCP Professional, Azure Solutions Architect) carry weight at infrastructure-heavy companies and consulting firms; less so at product engineering shops. Kubernetes certifications (CKA, CKAD) are weakly weighted at most companies. Security certifications (CISSP, OSCP) are heavily weighted for security engineering roles specifically. Outside those, certifications are mostly noise.

Should I include the technologies I used in my degree program?+

Only if you're entry-level and the technology genuinely demonstrates work you did. 'Implemented a Raft-based key-value store in Go (graduate distributed systems course)' is useful. 'Used Python in coursework' is filler. As a rule of thumb, list a technology only if you can speak to it in a 30-minute technical interview without preparation.

How do I handle a transition from a non-engineering background?+

Lead with your strongest engineering work first — internship, bootcamp capstone, side project with users, contract role. The summary should name the transition explicitly: 'Software engineer with two years of production experience; transitioned from data analytics in 2024.' Don't try to disguise the transition; hiring panels respect candor and disrespect hidden timelines that get discovered. A clearly explained transition with strong engineering evidence is competitive with a traditional path.

Ready when you are

Start with one of these examples

Pick the variant closest to your stage. We'll drop the resume into your account fully editable — swap the names, the numbers, the company, and you have a polished starting point in under a minute.

Browse examples