You spent hours on your resume. Applied to 40 jobs. Heard back from three.
That ratio isn't unusual. And it's almost never about your skills.
Most resumes fail for a simpler reason: they weren't built to pass an ATS, they don't highlight the right work, or they use formatting a hiring manager skips in the first 8 seconds. None of those are hard problems to fix once you know what's actually happening.
Why your resume disappears before anyone reads it
When you submit an application, your resume goes through an Applicant Tracking System before a human ever sees it. The ATS parses it, scans for keywords from the job description, and scores it. Most resumes fail here.
If it passes, a recruiter sees it for maybe 6–10 seconds. Then the hiring manager reviews it — if you're lucky.
That's two filters before your resume reaches someone who cares. An ATS-friendly software engineer resume needs clean formatting the parser won't choke on, the right keywords in the right places, and a structure that's easy to skim.
Format: there's really only one right answer
Reverse-chronological, single column or a clean two-column layout.
Templates with graphics, tables, or decorative icons look fine in Canva. They get destroyed when an ATS parser tries to read them. Use standard fonts — Calibri, Lato, Arial, 10–12pt body — bullet points under each role, and export as PDF unless the company specifically asks for DOCX.
One page if you have under 5 years of experience. Two pages is fine beyond that. Almost nothing justifies going longer.
Freshers: lead with your projects
Most new graduates bury their projects below Education or leave them out entirely. Projects are the closest thing to real experience on a fresher resume — putting them at the bottom is the wrong call.
An order that works:
- Contact info
- Summary (2–3 lines)
- Skills
- Projects
- Education
- Certifications if relevant
The bigger mistake is how freshers write about their projects. Same project, written two ways:
Weak: Worked on a task manager web app.
Better: Built a task management app with React, Node.js, and MongoDB. Added JWT authentication and cut page load time 40% through lazy loading and route-based code splitting.
The second version names the stack, shows what was built, and gives a real number. That's what gets a resume out of the ATS pile.
If you want to get your first resume in front of recruiters faster, Resuma handles the formatting and helps you write sharper bullets — free to use, exports an ATS-ready PDF.
Mid-level and senior: write about what changed, not what you did
Two or more years in, your resume needs to show what you actually changed — not what you were assigned to do.
Weak: Responsible for maintaining backend APIs.
Better: Refactored REST API layer handling 2M+ daily requests. Brought average response time down from 380ms to 95ms and fixed a class of race conditions that had been generating user-facing 500 errors.
For each bullet, ask: what did I do, how, and what got better? If you can't answer the last part, the bullet isn't done.
Section order for experienced engineers: contact info, then experience (add a short summary if you're switching roles or industries), then skills, then projects only if the work is genuinely interesting, then education at the bottom.
Writing a skills section that doesn't look like a keyword dump
Recruiters scan the skills section in a few seconds. One long undifferentiated list of every technology you've ever used is hard to read and signals padding.
Group by category instead:
- Languages: Python, TypeScript, Go, SQL
- Frameworks: FastAPI, Next.js, React, Django
- Databases: PostgreSQL, Redis, MongoDB
- Cloud / DevOps: AWS (EC2, S3, Lambda), Docker, GitHub Actions
- Tools: Postman, Figma, JIRA, Linear
Only list what you'd be comfortable being questioned on in an interview. If it's on your resume, it's fair game.
ATS keywords: the ones that actually get flagged
The most important keyword source is the job description itself. Whatever tech stack appears in the JD, mirror it as closely as accurate. Beyond that, terms that show up consistently in software engineering ATS systems:
- "RESTful APIs", "microservices", "CI/CD", "agile", "system design"
- Role descriptors: "frontend", "backend", "full-stack", "DevOps", "ML engineer"
- Collaboration terms where accurate: "code review", "mentorship", "cross-team"
A quick check that takes five minutes: paste the JD into a word frequency tool, note what repeats most, then scan your resume for those terms. If you have the skill, don't make anyone dig for it.
Resuma does this automatically — it reads the JD you paste, finds the keyword gaps, and rewrites your bullets to close them without adding skills you don't have.
The summary: write it last, put it first
Two to three sentences that answer: who are you, what have you actually done, and what kind of role are you after?
Most summaries look like this: Passionate software engineer seeking opportunities to grow and contribute to a dynamic team. That could be anyone. It says nothing.
A summary worth reading: Full-stack engineer with 4 years building web products with React and Node.js. Led a microservices migration at a Series B startup that cut deployment time by 60%. Looking for a senior role where performance and UX both matter.
Real facts, one specific achievement, a clear signal about what you're looking for. Any of those details could open a real conversation in an interview room. The first version couldn't.
Projects section for experienced engineers
If you have personal projects, open-source contributions, or freelance work that's genuinely good, it belongs on the resume. For each project, include a short name, the tech stack, one sentence on what it does, something measurable (users, performance gains, GitHub stars), and a link if the work can be seen.
Don't pad this section. A weak project listed just to fill space reads worse than no project section at all.
Mistakes that quietly kill applications
- Table-based layouts — ATS parsers break on them
- Bullets that describe what you were supposed to do, not what changed
- Generic objective statements
- Photos — unnecessary in most markets, can introduce bias
- Word docs submitted with tracked changes still on
- Jobs you held before you graduated
- Sending the same resume to every application without changing anything
That last one is underestimated. Small changes — leading with a different bullet, echoing a specific phrase from the JD — have a real effect on response rates. When you're applying to 20+ roles, doing it manually is tedious. That's exactly what Resuma is built for.
Frequently asked questions
How long should a software engineer resume be?
One page under 5 years of experience. One to two pages beyond that. Past two pages, you'd better be submitting a formal academic CV.
Should I include a photo on my resume?
No. In most hiring markets — US, UK, Canada, India for global tech roles — photos aren't expected and can introduce bias. Leave it off.
What file format should I submit?
PDF in almost all cases. It preserves formatting and works with most ATS systems. Only send DOCX if the company specifically asks.
How do I tailor my resume without rewriting it from scratch?
Update your summary to reference the specific role or company, reorder your skill bullets to match what the JD emphasizes, and swap one or two experience bullets to echo the exact language in the posting. Resuma automates all three.
What about employment gaps?
Use year-only dates if the gap is under six months. For longer gaps, a brief note — freelance work, a course, caregiving — is better than leaving a blank period. Gaps carry a lot less stigma than they did five years ago.
ATS-parseable format. Outcome-focused bullets. Projects front and center for freshers. Mirror the JD's language in your skills section. Customize each application, even slightly. If you want the keyword matching and tailoring done for you, Resuma takes care of it.