The Best Skills to Put on a Software Engineer Resume
The best skills to put on a resume are the hard skills the job posting asks for that you can back up with real work. For software engineers, that means named languages, frameworks, databases, cloud tools and testing tools, grouped into a few labeled lines. Soft skills like communication or leadership belong in your bullet points, where you can show them instead of claiming them.
Reviewed by Markus Fink
Senior Technical Recruiter · Formerly Google & Airbnb
What You'll Learn
What are the best skills to put on a resume?
Put the skills that show up in the job description and that you could talk about for ten minutes in an interview. Everything else is noise. For engineers that almost always means specific technologies, not general traits.
Most software engineer resumes need skills from these groups:
- Programming languages: Python, Java, TypeScript, Go, C++, C#, Kotlin, Swift, Rust, SQL
- Frameworks and libraries: React, Next.js, Node.js, Spring Boot, Django, FastAPI, .NET, Rails
- Databases and data stores: PostgreSQL, MySQL, MongoDB, Redis, DynamoDB, Elasticsearch
- Cloud and infrastructure: AWS, GCP, Azure, Docker, Kubernetes, Terraform, Linux
- Delivery and tooling: Git, GitHub Actions, CI/CD, monitoring tools like Datadog or Prometheus
- Testing: pytest, JUnit, Jest, Playwright, Cypress
You do not need every group. A frontend engineer can skip infrastructure. A data engineer probably has no use for a UI framework. Pick the groups that match the job, then pick the specific tools inside each group that you have actually used.
Here is what that looks like on a real resume for a backend engineer with three or four years of experience:
Technical Skills
Languages: Go, Python, SQL, TypeScript
Backend: gRPC, REST APIs, Kafka, PostgreSQL, Redis
Cloud and infra: AWS (ECS, Lambda, S3, RDS), Docker, Terraform, GitHub Actions
Testing and observability: Go testing, pytest, Datadog, OpenTelemetry
Four lines, about 20 items, and a recruiter can tell in a few seconds what kind of engineer this is. The rest of this guide covers how to build that list for your own role, how to match it to a posting, and what to do with soft skills. If your bullets don't mention these tools yet, fix that too: our software engineer resume bullet points guide shows how.
The best hard skills to put on a resume, by category
Hard skills are the teachable, checkable ones: you either know PostgreSQL or you don't, and an interviewer can find out quickly. For a technical resume they are what the skills section is for. This table is a starting list of common examples to pick from, plus what tends to go wrong in each category.
| Category | Examples | Common mistake |
|---|---|---|
| Languages | Python, Java, TypeScript, JavaScript, Go, C++, C#, Kotlin, Swift, Rust, Ruby, SQL | Listing eight languages when you write two of them every day. Put your strongest first. |
| Frontend | React, Next.js, Vue, Angular, HTML, CSS, Tailwind CSS, Redux, Vite | Listing React, Vue and Angular together with no project using two of them. |
| Backend | Node.js, Express, Spring Boot, Django, FastAPI, .NET, Rails, gRPC, GraphQL, REST | Writing backend development instead of naming the framework. |
| Databases | PostgreSQL, MySQL, SQL Server, MongoDB, Redis, DynamoDB, Cassandra, Elasticsearch | Listing databases as a skill. Name the engine. |
| Cloud | AWS (EC2, S3, Lambda, ECS, RDS), GCP (BigQuery, GKE, Cloud Run), Azure | Writing AWS when you used S3 once. Name the services you actually ran. |
| Infrastructure and DevOps | Docker, Kubernetes, Terraform, Helm, GitHub Actions, Jenkins, Argo CD, Linux, Bash | Claiming Kubernetes because a platform team ran it for you. |
| Data and messaging | Kafka, RabbitMQ, SQS, Spark, Airflow, dbt, Snowflake, pandas | Mixing analysis tools (Excel, Tableau) into an engineering list without a reason. |
| Testing | pytest, JUnit, Jest, Vitest, Playwright, Cypress, Selenium, k6 | Leaving testing out entirely. Many postings ask for it by name. |
| Observability | Datadog, Prometheus, Grafana, OpenTelemetry, Sentry, Splunk | Skipping it at mid and senior level, where on-call and debugging production matter. |
| Concepts | Distributed systems, system design, data structures and algorithms, concurrency, caching | Using concepts to pad the list. Add one or two only if the posting asks for them. |
A few hard skills are assumed and rarely worth a slot: Git (unless the posting names it), Microsoft Office, VS Code, Jira, Slack, and "operating systems" as a general claim. They don't hurt much, but they push more useful items further down the line.
For deeper advice on specific technologies, see our guides on listing Python, AWS, Docker, Kubernetes, React and TypeScript.
Skills to put on a resume by engineering role
The best skills list depends heavily on which job you're applying for. These are example skills sections for common engineering roles. Treat them as templates: swap in your own stack and remove anything you haven't used.
Backend engineer
Languages: Java, Kotlin, SQL, Python
Frameworks: Spring Boot, gRPC, Hibernate
Data: PostgreSQL, Redis, Kafka, Elasticsearch
Infra: AWS (EKS, RDS, SQS), Docker, Kubernetes, Terraform
More in the backend engineer resume guide.
Frontend engineer
Languages: TypeScript, JavaScript, HTML, CSS
Frameworks: React, Next.js, Redux Toolkit, Tailwind CSS
Testing: Jest, React Testing Library, Playwright
Tooling: Vite, Storybook, Lighthouse, Figma (handoff)
More in the frontend engineer resume guide.
Full-stack engineer
Languages: TypeScript, Python, SQL
Frontend: React, Next.js
Backend: Node.js, NestJS, FastAPI
Data and cloud: PostgreSQL, Prisma, Redis, Docker, AWS, Vercel
More in the full-stack engineer resume guide.
Mobile engineer (iOS or Android)
iOS: Swift, SwiftUI, UIKit, Combine, Core Data, XCTest
Android: Kotlin, Jetpack Compose, Coroutines, Room, Espresso
Tooling: Fastlane, Firebase Crashlytics, GitHub Actions
Most mobile engineers lead with one platform. List the second only if you've shipped on it. More in the mobile engineer resume guide.
Data engineer
Languages: SQL, Python, Scala
Processing: Spark, Airflow, dbt, Kafka
Warehouses: Snowflake, BigQuery, Redshift
Formats and infra: Parquet, Delta Lake, AWS (S3, Glue, EMR), Terraform
More in the data engineer resume guide.
ML or AI engineer
Languages: Python, SQL, C++
ML: PyTorch, scikit-learn, pandas, NumPy, Hugging Face Transformers
LLM work: OpenAI and Anthropic APIs, retrieval-augmented generation, embeddings, pgvector, evaluation harnesses
MLOps: MLflow, Ray, SageMaker or Vertex AI, Docker
Split classic ML and LLM work into separate lines so the reader can see which one you've done. More in the ML engineer and AI engineer guides.
DevOps, platform or SRE
Languages: Go, Python, Bash
Infra: Kubernetes, Helm, Terraform, Argo CD, Linux, Nginx
Cloud: AWS (EKS, IAM, VPC, CloudFront), GCP
Reliability: Prometheus, Grafana, PagerDuty, OpenTelemetry, SLOs and incident response
Security engineer
Languages: Python, Go, Bash
AppSec: threat modeling, OWASP Top 10, Burp Suite, Semgrep, dependency scanning
Cloud security: AWS IAM, GuardDuty, KMS, Kubernetes security
Detection: Splunk, SIEM rules, incident response
More in the security engineer resume guide.
QA automation engineer
Languages: TypeScript, Python, Java
Test frameworks: Playwright, Cypress, Selenium, pytest, JUnit
API and load: Postman, REST Assured, k6
CI: GitHub Actions, Jenkins, Docker
More in the QA automation engineer resume guide.
Student or new grad
Languages: Java, Python, JavaScript, SQL, C
Frameworks: React, Spring Boot, Flask
Tools: Git, Docker, PostgreSQL, Linux, JUnit
A new-grad list can be a little broader because coursework touches more languages. Every item should still appear in a project, internship or class project on the page. See the new grad resume guide and projects guide.
How to match your skills to the job description (and ATS)
The fastest way to find the right skills to put on a resume is to read the posting and copy its vocabulary, limited to what you can honestly claim.
- Collect three to five postings for the role you want. Highlight every named technology.
- Count repeats. If PostgreSQL appears in four of five postings and Cassandra in one, PostgreSQL earns the spot.
- Check the required section first. Required skills you have should all be on the page. Preferred skills are a bonus.
- Cross off anything you can't defend. If you would struggle to explain how you used it and why, leave it off.
- Use the posting's spelling. If it says Amazon Web Services, Node.js or CI/CD, write it that way.
- Repeat the top skills in your bullets. A skill that appears in the list and in an experience bullet reads as real.
Why the spelling matters: many companies run applications through an applicant tracking system (ATS). In Greenhouse, one of the common ones, recruiters can search resumes for keywords and run Boolean queries across candidates. A recruiter searching for Kubernetes is typing that word, so a resume that only says K8s may not come up. Writing the full term once, with the short form in parentheses if you like, covers both: Kubernetes (K8s).
This is also why keyword stuffing backfires. Getting past a search only gets your resume in front of a person, and that person will notice twenty tools with no evidence behind them.
Check it against a real posting
Paste a job description into our free resume keyword analyzer to see which skills and terms from the posting are missing from your resume. If you want a view of what to learn next for a target role, try the skills gap analyzer.
Tailoring doesn't mean rewriting your resume for every application. Most engineers keep one base version per role type (say, backend and platform) and adjust the skills order and two or three bullets per posting.
How to put skills on your resume: formatting the section
Group skills into labeled lines
Use three to five lines, each with a short label and a comma-separated list. Labels like Languages, Frameworks, Cloud and infra, Data or Testing are fine. Use whatever split makes your stack obvious. One long paragraph of 30 tools is much harder to scan.
Order by relevance
Put the line the job cares about most at the top, and the strongest item first within each line. For a Go backend role, Go comes before Python even if you've written more Python.
Keep it to what fits in a few lines
There is no correct number. For reference, Simplify counted skills on 75,308 resumes edited on its platform (users skew toward students and early-career technical candidates): the median was 15, the mean was 19.4, and 40% listed more than 20. In practice, 12 to 25 items across three to five lines works for most engineers. If you need a sixth line, some of those items probably don't belong.
Decide where it goes
- Students and new grads: near the top, after education, because skills and projects carry most of the page.
- Experienced engineers: either a short block near the top or at the bottom after experience. In the popular Jake's resume template, Technical Skills sits at the bottom, and that works fine when your experience bullets already name the stack.
- Career changers: near the top, so the reader sees the technical skills before an unrelated job title.
Skip ratings, bars and logos
Star ratings, progress bars and percentages ("Python 90%") mean nothing to a reader and can confuse a parser. Logos and icons often don't come through as text at all. If you want to show depth, split into Proficient and Familiar lines, or let your bullets do it.
Keep the formatting plain
Use a single-column layout with real text, standard section names (Skills or Technical Skills) and the same font as the rest of the page. Our ATS-friendly tech resume template already does this, and the resume format checker will flag layout problems.
Hard skills vs soft skills on a tech resume
Hard skills are specific and checkable: Python, Terraform, SQL query tuning, iOS development. Soft skills are about how you work: communication, collaboration, mentoring, ownership, handling ambiguity.
Both matter to engineering teams, and soft skills carry more weight the more senior the role. The difference is where they go on the page. Writing Communication, Leadership, Team Player in a skills list tells the reader nothing, because every candidate can type those words. A bullet that shows you doing the thing is evidence.
Here is how common soft skills translate into engineering bullets. The numbers are illustrative; use your own.
| Instead of listing | Show it with a bullet like |
|---|---|
| Communication | Wrote the design doc for moving billing events from cron jobs to Kafka and walked four consuming teams through the cutover plan; all four migrated within the quarter. |
| Leadership, mentoring | Mentored two new-grad engineers through onboarding and their first on-call rotation; both were handling pages on their own within six weeks. |
| Collaboration | Worked with product and support to rank the top 20 customer-reported bugs, then shipped fixes for 14 of them over two sprints. |
| Problem solving | Traced intermittent checkout timeouts to an exhausted Postgres connection pool; resizing the pool and adding a circuit breaker cut p99 latency from 2.1s to 380ms. |
| Ownership | Took over the search service after a reorg, set up its first SLOs and alerting, and cut the monthly page count from about 30 to 6. |
| Adaptability | Picked up Kotlin to unblock the Android team during a launch freeze and shipped the offline sync feature in three weeks. |
If a posting leans hard on a soft skill, say "strong written communication" for a remote role, make sure at least one bullet clearly shows it. That covers the reader and the keyword at the same time.
For the full method behind bullets like these, see the XYZ method and our resume bullet generator.
Weak vs strong skills sections
Weak
Skills: Java, Python, C++, JavaScript, React, Angular, Vue, AWS, Azure, GCP, Docker, Kubernetes, Jenkins, Git, Linux, MongoDB, MySQL, PostgreSQL, Redis, REST, GraphQL, Agile, Scrum, Microsoft Office, leadership, communication, problem solving, fast learner
What's wrong with it
- No grouping, so the reader can't tell what this person mainly does.
- Three cloud providers and three frontend frameworks, with nothing suggesting real depth in any of them.
- Soft skills and Microsoft Office take up space that a real tool could use.
- It invites the interview question "tell me about your Angular work", which may not go well.
Stronger (same person, applying for a backend role)
Languages: Java, Python, SQL
Backend: Spring Boot, REST, GraphQL
Data: PostgreSQL, Redis, MongoDB
Cloud and infra: AWS (ECS, S3, RDS), Docker, Jenkins, Linux
Stronger (same person, applying for a frontend role)
Languages: JavaScript, TypeScript, HTML, CSS
Frontend: React, Redux, Jest
Backend familiarity: Node.js, REST, GraphQL, PostgreSQL
Both stronger versions are shorter, but length isn't the point. Each one tells the reader what job this person is going for, and the leadership and communication claims move into bullets where they can be backed up.
Skills to leave off a software engineer resume
- Anything you couldn't discuss in an interview. If a tutorial is your only experience with it, it doesn't belong in the list.
- Generic soft skills like hardworking, detail-oriented, team player or fast learner. Show them in bullets instead.
- Assumed tools: Microsoft Word, Google Docs, Slack, Zoom, VS Code, and usually Jira.
- Stale tech that points away from the role: jQuery, AngularJS, SVN or Flash on a modern frontend application, unless the posting mentions maintaining them.
- Vague categories: web development, cloud, databases, coding. Name the actual tools.
- Skills added only for ATS that you've never used. You might match a search, but the first technical screen will expose it.
- AI coding assistants as a headline skill. GitHub Copilot or Cursor on their own say little. If you built something with LLMs, list the APIs and techniques (RAG, embeddings, evals) and describe the project.
A shorter, focused list usually reads as more senior. It shows you know what matters for the job.
Make every listed skill show up in your experience
Recruiters use the skills section to check fit quickly. Hiring managers and interviewers use it differently: they look for each listed skill in your bullets and projects, and ask about it when they find a gap.
A quick check before you send the resume: take your top five or six skills and find each one in an experience or project bullet. If you can't find one, either add a bullet that uses it or move it lower in the list.
Listed but not shown
Skills line says Kafka, Kubernetes, Terraform. Bullets only mention "built REST endpoints" and "fixed bugs."
Listed and shown
Moved order events from nightly batch jobs to a Kafka pipeline consumed by three services, cutting the delay before inventory updates from hours to under a minute.
Wrote the Terraform modules for the team's EKS clusters and moved four services off hand-built EC2 instances.
If your resume already has the right skills but isn't getting responses, the problem may be the bullets or the layout rather than the keywords. Our guide to what technical recruiters look for and the common resume mistakes list are good next stops.
Read Next
Software Engineer Resume Bullet Points
Turn listed skills into bullets that prove them.
GuidesSoftware Engineer Resume Projects
Use projects to show the skills in your list are real.
GuidesWhat Technical Recruiters Look For
How recruiters read a software engineer resume, skills included.
TemplatesATS-Friendly Tech Resume Template
A clean layout that keeps your skills easy to scan and parse.