What ATS actually does (and does not do)
Most advice about ATS systems is based on a misunderstanding of what they actually do. Most people imagine ATS systems aggressively rejecting resumes based on missing keywords. The reality is more straightforward, and less adversarial. But that does not make it less consequential. A technically strong engineer can disappear from recruiter searches entirely because of resume formatting mistakes that have nothing to do with their qualifications.
An ATS is primarily a database. It parses your resume into structured fields, stores the information, and lets recruiters search and filter candidates. The filtering happens when a recruiter searches for "Python" or "senior" or "distributed systems," not when an algorithm scores you against a pass/fail threshold. If the ATS cannot interpret your experience correctly, recruiters may never know you were qualified in the first place.
What this means practically: the ATS needs to be able to read your resume accurately. If it cannot parse your file, your experience does not exist in the system. That is the real risk, and it has nothing to do with keywords.
Most ATS rejections happen because of formatting failures, not keyword mismatches. Multi-column layouts, tables, text inside graphics, and information buried in headers or footers are the common culprits. Fix the format first. The keyword conversation comes second.
Format: the foundation everything else depends on
For software engineers, the temptation is to build a resume that looks as good as the products you ship. Resist it. A beautifully designed resume built in Figma or Canva will parse as a blank document in most ATS systems because those tools export text as images rather than selectable characters. The recruiter sees a blank page, or nothing at all.
The format rules are not creative constraints. They exist because ATS parsers are not sophisticated enough to handle anything non-standard, and the downside of getting it wrong is invisibility.
- Single-column layout throughout
- Standard section headings: Work experience, Skills, Education, Projects
- Text-based PDF or DOCX export from Google Docs or Word
- Standard fonts: Calibri, Arial, or Helvetica at 10 to 12pt
- Simple bullet points, no icons or graphics
- Contact info in the body of the document, not in a header or footer
- Multi-column or two-panel layouts
- Tables to organize sections or skills
- Exporting from Figma, Canva, or Photoshop
- Skill bars, progress indicators, or icons
- Text boxes or shapes with content inside them
- Headshot photos or logos
A quick way to verify your resume parses correctly: open the PDF and try to select and copy text. If the text is selectable, the ATS can read it. If it selects as an image block or nothing highlights at all, the file will not parse.
Left: single-column text-based PDF. Right: Canva or Figma export rendered as an image. Both look identical to the human eye. Only one exists in the ATS.
Keywords: use them honestly, not aggressively
Keyword optimization does matter, but not in the way most guides describe it. You are not trying to stuff your resume with every term from the job description. You are making sure that the language you use matches the language a recruiter would search for when looking for someone with your background.
The distinction is important. A recruiter searching for a "Kubernetes" engineer will not find you if you only wrote "container orchestration." Those mean the same thing to you. To the search filter, they are different strings. Use the specific technology names, not the category descriptions.
When I was reviewing engineering candidates, keyword stuffing was immediately visible and immediately off-putting. A skills section with 40 technologies reads as someone who has heard of everything and knows nothing deeply. The engineers who stood out had specific, honest stacks and bullets that proved they could use them.
For each role you apply to, read the job description and note the specific technologies, methodologies, and role-specific language it uses. Then check that your resume reflects those terms where they genuinely apply to your experience. If they do not apply, do not add them. A gap in your resume is manageable. Claiming experience you cannot speak to in an interview is not, and a keyword-optimized resume that still gets no callbacks is a separate problem worth understanding.
Writing bullets that survive both the ATS and the recruiter
This is where most engineering resumes fall apart, and fixing it has the biggest impact on interview callback rates.
The default mode for most engineers is to write bullets that describe responsibilities: what your role was, what the system did, what you worked on. Recruiters already know what a software engineer does. What they are looking for is evidence of what you specifically contributed and what happened as a result.
The formula is simple: action verb, what you built or changed, the outcome in measurable terms. Every bullet should answer the question "so what?"
Responsible for developing and maintaining backend services for the payments platform.
Rebuilt the payments retry logic in Python, reducing failed transaction rate from 4.2% to 0.8% and recovering approximately $180k in monthly revenue.
Worked on improving the performance of the data pipeline used by the analytics team.
Optimized the Spark-based ETL pipeline by introducing incremental processing, cutting daily job runtime from 6 hours to 40 minutes and reducing infrastructure cost by 35%.
If you do not have a specific number, that is okay. A qualitative outcome is still better than a description of duties. "Eliminated a class of race conditions that had caused 3 production incidents in the prior quarter" is a strong bullet even without a percentage attached.
On quantity of bullets
Three to five bullets per role is enough for most positions. More than five and you are padding. Each bullet should be worth its space. If you cannot articulate what was different or better after you did the work, cut the bullet.
The sections that matter for software engineers
Keep the structure simple. ATS systems handle standard sections reliably. Anything creative creates parsing risk.
Work experience is the most important section. List roles in reverse chronological order. Include company name, your title, and the dates you worked there. The bullets under each role carry the weight.
Skills should be a focused list of languages, frameworks, tools, and platforms you can genuinely discuss in an interview. Group them loosely if you have a long list, but keep the total honest. Eight to twelve items is a reasonable range for most engineers. A senior engineer with a deep specialism might have more. A new grad should not list every language they touched in a tutorial.
Projects matter more at the beginning of a career and less as experience accumulates. If you are under five years in, strong projects can substitute for limited work experience. Include a link to the repo or live product where possible. Write one or two bullets on what it does and what you built, not a product description.
Education goes at the bottom for anyone with more than a year of professional experience. Degree, school, graduation year. Nothing more is needed.
Summary is optional and only worth including if it adds something specific. "Experienced software engineer with a passion for building scalable systems" adds nothing. A summary that names your specialization, your stack, and the type of problem you are best at solving can work, but most resumes are better without one.
Pre-submit checklist
Before you send any application, run through this list. It takes two minutes and catches the most common issues.
- Resume is a single-column layout with no tables or multi-column sections
- File is a text-based PDF or DOCX (confirmed by selecting text in the document)
- Contact information is in the body of the document, not in a header or footer
- All section headings use standard labels (Work experience, Skills, Education)
- Each bullet starts with a strong action verb and includes an outcome or result
- Technology names match the specific terms used in the job description
- Skills section reflects only technologies you can speak to in an interview
- No graphics, icons, photos, or skill bars anywhere in the document
- Resume is one page for under 10 years of experience; two pages maximum beyond that
- Every role includes a company name, title, and date range
Frequently asked questions
Stop guessing. Let HireKey tailor your resume to every job.
HireKey analyzes the job description, tailors your resume to it, and surfaces every qualification gap before you apply. Built for engineers targeting competitive tech roles.
Free plan at launch. No credit card ever required.