How to Write a Software Engineer Resume (ATS + Recruiter Tested)
A strong software engineer resume is one page, single-column, and ATS-parseable, with 3-5 quantified bullets per role written in the XYZ formula: accomplished X, measured by Y, by doing Z. Lead with impact and metrics, mirror keywords from the job description, and put a Skills section recruiters and parsers can scan in seconds.
The structure recruiters expect
Recruiters spend roughly 6-8 seconds on a first pass. Use a predictable top-to-bottom order so they find signal fast: Name + contact (with GitHub and LinkedIn URLs), a one-line summary (optional, senior only), Skills, Experience, Projects (for new grads), and Education.
Keep it to one page until you have ~10+ years of experience. Use a single-column layout. Multi-column resumes, tables, text boxes, headers/footers, and icons frequently break ATS parsers like Greenhouse, Lever, and Workday, which read top-to-bottom and can scramble two-column text.
The XYZ formula for bullets
Google's recruiting team popularized the XYZ formula: 'Accomplished [X] as measured by [Y], by doing [Z].' It forces a result and a metric into every line instead of listing responsibilities.
Compare a weak bullet to a strong one. Weak: 'Responsible for improving the checkout API.' Strong: 'Cut checkout API p99 latency 40% (820ms to 490ms) by adding Redis caching and batching DB calls, supporting 2M daily orders.' The strong version has an action verb, a quantified result, and the technical 'how.'
- Start each bullet with a strong past-tense action verb: Built, Shipped, Reduced, Migrated, Automated, Led.
- Quantify with real numbers: latency, throughput, %, dollars, users, time saved, error rate.
- Name the technology so keywords and the 'how' both land.
- Avoid first-person pronouns (I, my) and vague verbs (helped, worked on, assisted).
Keywords and beating the ATS
Applicant Tracking Systems rank and filter resumes partly on keyword match against the job description. If a JD asks for 'React, TypeScript, GraphQL, AWS,' those exact terms should appear in your Skills or Experience where true.
Mirror the JD's vocabulary (e.g., 'CI/CD' vs 'continuous integration') rather than synonyms, but never keyword-stuff or list skills you can't defend in an interview. Submit as a .pdf or .docx with selectable text; never a flattened image or scanned PDF, which parsers cannot read.
Skills, projects, and education
Group skills logically: Languages (Python, Go, TypeScript), Frameworks (React, Node, Django), Infrastructure (AWS, Docker, Kubernetes, Postgres). Rank-order by relevance to the target role.
For new grads and career-changers, a Projects section carries weight: list 2-3 substantial projects with the stack, what you built, and a metric or scale, plus a live link or GitHub repo. Education goes last for experienced engineers; new grads can place it higher and include GPA if it's 3.5+.
Common mistakes that get resumes rejected
These are the recurring weaknesses that get otherwise-qualified engineers filtered out before a human reads the resume.
- Two-column or graphic-heavy templates that scramble in ATS parsing.
- Responsibility lists ('Responsible for...') instead of quantified achievements.
- No metrics anywhere — the single most common weakness.
- Typos and inconsistent tense or date formatting (use YYYY-MM consistently).
- Listing every technology ever touched, diluting the keywords that matter.
- Spilling onto a second page for early-career roles.
ResuMax tailors your resume to each role, scores it like a recruiter, and preps you for interviews.
Get started freeFrequently asked questions
Should a software engineer resume be one page?
Yes, for almost everyone with under ~10 years of experience. One page forces you to keep only your strongest, most relevant bullets. Two pages are acceptable for senior/staff engineers with deep, distinct experience worth detailing.
What is the XYZ formula for resume bullets?
Popularized by Google: 'Accomplished [X] as measured by [Y], by doing [Z].' It forces every bullet to state a result, a metric, and the technical method, turning vague duties into evidence of impact.
How do I make my resume pass ATS?
Use a single-column layout, standard section headings, selectable text (PDF or DOCX, never an image), and mirror exact keywords from the job description. Avoid tables, text boxes, columns, and graphics that parsers misread.
Do I need a summary or objective statement?
Usually no for early-career engineers; it wastes prime space. A 1-2 line summary can help senior/staff engineers frame their specialization. An objective ('seeking a role where...') is outdated; skip it.
What if I don't have metrics for my work?
Estimate defensibly. Approximate scale (requests/day, users, dataset size), time saved, or relative improvement. 'Reduced build time ~30%' is far stronger than no number, as long as you can explain how you arrived at it.