All posts
Software Engineer ResumeATSDeveloper ResumeTech ResumeGitHub PortfolioResume Tips

How to Write a Software Engineer Resume That Passes the ATS (2026 Guide)

A senior tech recruiter's guide to writing a software engineer resume that actually passes ATS filters. Learn how to format your tech stack, GitHub links, and impact-driven bullet points for developer roles.

9 min read

How to Write a Software Engineer Resume That Passes the ATS (2026 Guide)

I've screened over 10,000 engineering resumes. The pattern is always the same: brilliant developers who can architect distributed systems at scale — submitting resumes that get silently rejected by an ATS before I ever see them.

The problem isn't their skills. It's that most software engineers treat their resume like documentation — comprehensive, technically accurate, and completely unreadable by the systems that gatekeep every application.

This guide breaks down exactly what makes an engineering resume survive ATS parsing and impress the human recruiter on the other side.


Why Most Software Engineer Resumes Fail ATS Screening

Let's start with a hard truth: the generic resume template you downloaded from a design site is actively working against you.

ATS platforms like Greenhouse, Lever, and Workday don't "read" your resume the way a person does. They parse it — extracting structured data from unstructured text. When parsing fails, your resume either gets garbled or discarded entirely.

Developer resumes fail at disproportionately high rates for three specific reasons:

  • Multi-column layouts that break parsing order — your "Skills" sidebar ends up merged with your job titles
  • Icon-based skill ratings (those star bars and progress circles) that render as empty space after parsing
  • Custom fonts and graphics that look sharp in Figma but produce gibberish in an ATS database

A resume that looks impressive in a PDF preview is meaningless if the system extracting it can't tell your job title from your phone number.


The Tech Stack Section: Where Engineers Lose the Most Points

Here's something most career advice sites won't tell you: how you list your tech stack matters more than what's on the list.

ATS systems use keyword matching to score your resume against the job description. But keyword matching for engineering roles is more nuanced than people think. It's not just about having "React" on your resume when the posting says "React." It's about context, grouping, and specificity.

What ATS Keyword Matching Actually Looks For

  • Exact framework versions — "React 18" matches differently than just "React" in many enterprise ATS configurations
  • Ecosystem pairings — listing "TypeScript, Next.js, Tailwind CSS" together signals real-world usage patterns, not just buzzword padding
  • Infrastructure keywords — "Kubernetes," "Terraform," "AWS Lambda" carry significant weight for backend and platform roles that generic templates often bury

How to Structure Your Tech Stack

Stop listing every technology you've ever touched. Instead, organize by relevance to the target role:

Languages & Frameworks: Python, Go, TypeScript, React 18, Next.js 15, FastAPI
Infrastructure & DevOps: AWS (ECS, Lambda, S3), Docker, Kubernetes, Terraform, GitHub Actions
Data: PostgreSQL, Redis, Kafka, Elasticsearch
Practices: CI/CD, TDD, Microservices, System Design, Code Review

This format is parseable, scannable, and immediately tells both the ATS and the hiring manager what you actually work with.


Here's what I see from the recruiter side: two candidates with nearly identical resumes. Same tech stack, similar years of experience, comparable companies. One has a GitHub profile linked. The other doesn't.

The candidate with the GitHub link gets the interview. Every time.

Yet fewer than 30% of the engineering resumes I screen include a GitHub profile — and of those, most bury it in a footer the ATS can't reliably parse.

  • Header section, right next to your LinkedIn and email — not in a sidebar, not in a footer
  • Use the full URL format: github.com/yourhandle — ATS systems parse URLs more reliably than hyperlinked text
  • If you have a standout project or significant open source contributions, add a one-line "Notable Projects" entry under your experience section linking directly to the repo

What Recruiters Actually Check on Your GitHub

We're not reading your code line by line. We're looking for:

  • Contribution consistency — green squares matter less than evidence you actually ship
  • README quality — a well-documented project signals communication skills, not just coding ability
  • Open source involvement — contributions to established projects carry more weight than personal toy projects
  • Code organization — clean repo structure tells us how you think about maintainability

If your GitHub is mostly forked repos with no commits, it's better to leave it off entirely. But if you have anything meaningful — even one well-documented side project — include it.


Impact-Driven Bullet Points: The STAR Method for Engineers

The single biggest mistake on engineering resumes is describing what you did instead of what changed because you did it.

Every recruiter has seen this:

"Developed microservices using Node.js and deployed to AWS"

That tells me nothing. You wrote code. Congratulations. So did every other applicant.

How to Rewrite Engineering Bullets Using STAR

The STAR method (Situation, Task, Action, Result) adapted for engineering roles transforms generic descriptions into evidence of impact:

Before:
"Built a data pipeline for processing user events"

After:
"Designed and shipped a real-time event pipeline (Kafka + Flink) that reduced analytics latency from 4 hours to under 90 seconds, enabling the product team to run same-day A/B tests"

Before:
"Improved API performance"

After:
"Identified and resolved N+1 query patterns across 12 endpoints, cutting average response time from 1.2s to 180ms and reducing database load by 40%"

The Impact Formula for Engineering Bullets

Every bullet point should follow this structure:

[Action verb] + [what you built/changed] + [technology used] + [measurable outcome]

Strong action verbs for engineering: Architected, Migrated, Optimized, Reduced, Automated, Scaled, Instrumented, Refactored, Shipped

Weak action verbs to avoid: Helped, Assisted, Worked on, Participated in, Was responsible for

If you can't quantify the result, describe the scope instead: number of users affected, request volume handled, team size coordinated, services integrated.


Formatting Rules That Specifically Apply to Developer Resumes

Beyond the standard ATS-friendly formatting rules, engineering resumes have additional constraints:

Keep It to One Page (Unless You Have 10+ Years)

This is controversial, and I'll be direct: for engineers with under a decade of experience, two-page resumes get skimmed, not read. Your first page gets 6 seconds of human attention. Your second page gets zero.

If you have 10+ years, two pages are acceptable — but only if the second page contains genuinely senior-level content (architecture decisions, team leadership, org-level impact), not padding from your first internship.

Use a Single-Column Layout

I know the two-column template looks cleaner. It also breaks ATS parsing in about 40% of systems. A single-column layout with clear section headers is the only format that reliably parses across every major ATS platform.

Section Order Matters

For mid-level to senior engineers, use this order:

  1. Header (name, email, LinkedIn, GitHub, portfolio)
  2. Summary (2–3 lines, role-specific — not a generic "passionate developer" statement)
  3. Technical Skills (grouped by category as shown above)
  4. Experience (reverse chronological, impact-driven bullets)
  5. Projects (open source contributions or notable side projects)
  6. Education (degree, relevant coursework only if early-career)

For junior engineers or career changers, move Projects above Experience if your project work is stronger than your employment history.

File Format

Submit as PDF unless the application specifically asks for .docx. Modern ATS systems handle PDF parsing well, and PDF preserves your formatting across devices. Avoid the file format trap of submitting .pages or Google Docs links — both cause parsing failures in most systems.


Why Generic Templates Don't Work for Developers

Here's the core problem with every "universal" resume template: they assume all jobs need the same information presented the same way.

They don't.

A software engineer's resume has fundamentally different requirements than a marketing manager's or a finance analyst's. You need space for tech stack. You need GitHub and portfolio links parsed correctly. You need bullet points that demonstrate system-level thinking, not just task completion.

When you use a generic template, you're forcing engineering-specific content into a structure designed for generalists. The result is predictable: your tech stack gets crammed into a skills list that reads like keyword stuffing, your GitHub link disappears into an unparseable footer, and your system design experience gets reduced to "worked with microservices."

The resume needs to be built around the role — not adapted after the fact.


The Job-First Approach: Build Your Resume Around the Role

The most effective strategy I've seen engineers adopt is what's called the Job-First approach — instead of maintaining a "master resume" and tweaking it for each application, you start with the job description and build outward.

This means:

  • Analyzing the posting first for required vs. preferred skills, seniority signals, and team structure cues
  • Selecting which experiences to highlight based on what this specific role values
  • Mirroring the language of the job description — if they say "observability," don't write "monitoring"; if they say "platform engineering," don't write "DevOps"

This is where resume tailoring stops being optional and starts being the difference between a 5% callback rate and a 40% one.

The catch? Doing this manually for every application takes 30–60 minutes. For engineers applying to 15–20 roles, that's an unsustainable time investment.

How ReframeCV Handles This for Engineering Roles

This is the exact problem ReframeCV was built to solve — and it handles developer resumes differently than any other tool I've come across.

When you paste a job description into ReframeCV, the AI doesn't just extract keywords. It analyzes the role's category — and when it detects a software engineering position, it activates Category-Specific Forms designed for technical roles.

Instead of asking you generic resume questions, it prompts for:

  • Your GitHub profile and notable repositories — and places them where ATS systems can actually parse them
  • Your tech stack organized by proficiency — mapped against the specific technologies in the job posting
  • Open source contributions — surfaced as evidence of collaborative engineering, not buried in a miscellaneous section
  • Impact metrics from your engineering work — guiding you toward the quantified, STAR-formatted bullets that recruiters actually respond to

The result is a resume that's structurally optimized for ATS parsing, keyword-aligned to the specific role, and formatted the way engineering hiring managers expect to see technical content presented.

It's the Job-First approach without the 45-minute manual tailoring process — and it understands that a backend engineer's resume needs to look fundamentally different from a product designer's.


Quick Checklist: Software Engineer Resume ATS Optimization

Before you submit your next application, run through this:

  • Single-column layout with no graphics, icons, or skill bars
  • Tech stack grouped by category and aligned to the job posting's language
  • GitHub profile URL in the header, not the footer
  • Every bullet point includes a measurable outcome or scope indicator
  • Action verbs are specific — "Architected," "Shipped," "Reduced" — not "Helped" or "Worked on"
  • File saved as PDF with a clean filename (firstname-lastname-resume.pdf)
  • No two-column layouts, text boxes, or header/footer content
  • Summary is role-specific — mentions the target role's key requirements, not a generic career objective
  • Resume is tailored to this specific job description, not a recycled master copy

Start Building a Resume That Actually Gets Through

You've spent years building your engineering skills. Your resume should be just as well-engineered as your code — clean architecture, no unnecessary complexity, and optimized for the system it runs on.

Use ReframeCV's Developer Template designed specifically for tech roles. Paste a job description, let the Category-Specific Forms guide you through your tech stack, GitHub profile, and impact metrics — and get a resume that passes ATS filters and lands on a recruiter's desk the way it was meant to be read.