PlainResume

Software Engineer Resume Guide: Stack Fit, Scope, and Shipped Impact

A practical guide from the team behind PlainResume, the free resume builder.

An engineering resume gets two very different readers: a recruiter spending ten seconds matching keywords, and an engineer spending sixty judging what you actually built. Most resumes fail one audience or the other — a keyword wall that makes engineers wince, or elegant prose the ATS never surfaces. The fix is a division of labor: the skills section serves the recruiter, the bullets serve the engineer, and neither tries to do the other's job.

Skills: group by fluency, not alphabet

✗ "Java, Python, C, C++, JavaScript, TypeScript, HTML, CSS, React, Angular, Vue, Node, Django, Flask, Spring, MySQL, MongoDB, Redis, Docker, Kubernetes, AWS, GCP, Git, Jira, Agile"

✓ "Daily: TypeScript, React, Node, PostgreSQL, AWS (ECS, Lambda) · Working knowledge: Go, Redis, Terraform"

Twenty-five technologies reads as padding to every engineer who's interviewed anyone — nobody is fluent in all of that, so the list stops being believable exactly where you needed it to be. Eight to twelve, split by honesty tier, does more: recruiters still get their keywords (use the posting's exact terms for the stack you really use), and engineers get a claim they can trust. Two small tells they notice: correct names (PostgreSQL, GitHub, Node.js) and no filler rows — an IDE, an OS, and "Agile" are not skills.

Bullets: the system, your part, the number

The unit of engineering work is not the ticket — it's the system that changed. Every strong bullet names the thing, your role in it, and what moved:

✗ "Worked on backend services using Node.js and improved performance."

✓ "Built the rate-limiting service (Node, Redis) that now fronts all public APIs; abusive traffic down 90%."

✗ "Fixed bugs and participated in code reviews."

✓ "Profiled and rewrote the search indexer, cutting p95 latency from 800ms to 120ms across 2M daily queries."

The verbs carry your level, so scope them honestly (the action-verbs rule): built and owned claim more than contributed to, and an interviewer will probe exactly that line. Numbers don't need to be revenue — latency, throughput, error rates, incident counts, on-call load, team size on the thing you led. And engineering's special hazard, buzzword inflation, is a one-way ratchet down: call a CRUD app "AI-powered" and the reader discounts every other line.

Projects: for juniors, this is the experience section

Early-career engineers live and die on projects (the first-resume problem), and the bar is simple: deployed beats tutorial. One real thing with users — even twelve users — outweighs three todo-app clones, because it generates real bullets: what broke, what you measured, what you changed. Write project bullets exactly like job bullets: the system, your part, the number. Link GitHub only if the repo is presentable — a README, recent commits, code you'd defend live. An abandoned fork farm subtracts; no link is neutral, and working engineers whose code is all private can skip it without apology.

The rest, quickly

Plain by design — like your resume should be. PlainResume builds clean single-column resumes with a live page count and a health check that flags buzzwords and number-free bullets. Free, no sign-up, no paywall on the PDF; everything stays in your browser.

Build your engineering resume free →

Frequently asked questions

How many skills should I list?

Eight to twelve, grouped by fluency ("daily" vs "working knowledge"), mirroring the posting's terms for the stack you genuinely use. Every listed skill is an interview invitation.

Do I need a GitHub link?

Only if it shows real, recent work you'd defend in an interview. An empty profile subtracts; no link is neutral — especially for engineers whose work is private.

One page or two?

One page for roughly the first decade; prune older roles as new ones land. Seniors with distinct systems or publications can earn a second page.