by the onset

How to write a Software Engineering resume (CV): the definitive guide (Updated for 2019)

1*HEb2p-kztaYVeJVuHhFpJQ
Originally published on theonset.com.au

While the debate still continues regarding the long term future of the “resume”, it’s still one of the most important documents to get right if you want to secure that next big job interview.

The problem is that creating the perfect resume can be a time consuming and frustrating process.

That’s why we created this intuitive guide that’s driven by interviews with hiring managers at companies like Google and Airtasker and expert advice from Onset’s software engineering recruitment team.

Before we get started, if you are looking to build or rebuild your CV, check out this Professional Software Engineer template on Canva.

It’ll take around 18–20 minutes to read this article, more if you want to apply it to your resume straight away.

If you don’t have enough time, you can download a pdf version of this article here.

Here’s everything you need to know to quickly create a great software engineer resume.

Let’s get started.

Chapter 1: Hook your audience

1*YgSE0C37sOFJ71ZzD1jslw
Approximately reading time: 5–7 minutes

What you’ll get out of this section

This section will teach you about different resume styles, give you examples of winning resume formats, and teach you how to avoid classic resume mistakes.

Choosing “The Right” Style

How you structure your resume will depend on the depth of your work experience.

Here are a few different styles to consider:

Chronological: Listing work history in reverse chronological order can be beneficial for longer-term employees who want to emphasize a steady history of relevant employment. (It’s also way easier to read!)

0*EqoDnvfMxH4K5Ir2
ONSET TIP: If you have gaps in your resume between roles, explain this clearly. For example, maternity/paternity leave, travel, study etc. This helps the reader build a clear picture of your history.
0*DXyybwzjVO4ob0XP

Functional: A functional resume will organize your work history by highlighting key skills and achievements. It is ideal for applicants without an extensive working history, those who only have entry-level roles, or recent graduates looking to break into the software engineering industry.

1*sMh-niUKCn8aWlqEt2UIuw

Hybrid: A hybrid resume combines both the chronological and functional resume styles. It can be helpful for mid-level roles that require a combination of employment history, specific skills and achievements.

0*yK2d-09HONVUyX2J

Regardless of the style you choose, your resume should include sections that address your educational history, type of work experience, relevant skills, past projects, and if really interesting, some hobbies.

This video has some great details on what a winning software engineer resume from Google looks like.

You can also download his resume here.

How To Keep It Short And Clean

If there’s one thing you take from this guide, remember this: Keep your resume brief and relevant.

“The best code is clean and simple and it’s the same thing with a resume — the best ones are easy to read, easy to maintain and easy to present. It’s safe to say the best software engineers will have the cleanest resumes to read.” — Sean McCartan (Software Engineering Practice Lead), The Onset

Software engineer jobs can receive hundreds of resumes and the biggest mistake we see at The Onset is when an applicant’s relevant experience is diluted by a heap of information around it.

A ten-page long resume that goes into detail about every small-scale job or piece of technology used in the last 20 years will likely bore the reader and dilute your essential strengths.

It’s also important to understand the nature of the role you’re applying for and the type of company and be as concise as you can.

Stick to hard and fast facts about your skills and avoid redundant statements that cannot be backed up by immediate evidence such as ‘I work well individually and in a team’.

Also, avoid listing fundamental skills such as ‘I can work with Excel Spreadsheets.’

Hiring Manager Tip: Avoid distracting designs or imagery and make sure your resume is readable, with consistent fonts and sizes that are easily compatible across browsers (your safest bet is Arial or Times New Roman).

The Basics

At the beginning of your resume, don’t forget to clearly state your full name and contact details (email, mobile number) in the top header of your resume.

There is no need for your full address, but a suburb helps identify your viability to work in certain locations.

Help the reader by including a visible link to your online portfolio, LinkedIn account or GitHub account. In any case, make sure the URL works!

We’ll fill you in on the best way to present your GitHub in your resume a little later.

When listing previous workplaces, adopt a consistent structure that helps the reader keep on track.

Remember, if you use one formatting style, it’s best to stick with it throughout the entire resume.

For each employer, include the dates (MM/YY started - MM/YY ended), title and company.

It can help to include a URL or a one line description of a company, especially for lesser-known businesses. Check out this example below (Don’t copy the ‘about us’ page and rattle it off on your resume - yes, this still actually happens):

0*DIigli7RNNx14ntw

This video gives hands-on advice on how to reformat your resume and make it easy and enjoyable to read.

Do You Need A Summary?

Let’s keep this one simple; no, not really, especially if all you plan to do is tell everyone how wonderful you are - that’s what an interview is for.

If you feel the need to highlight your career in a short summary, make it relevant and try not to use a bunch of overly descriptive verbs.

Matching up your summary to your LinkedIn profile also helps keep consistency, as pretty much everyone will check out your online profile to make sure it aligns with your resume.

Here’s an example of a succinct and effective career summary:

0*g7m6H1HzKVoyVhYK

Chapter 2: Show You’re The Best Fit For The Job

1*4uiS_YWkYWtW9STaGTf86w
Approximately reading time: 5–7 minutes

What you’ll get out of this section

How to read a job description and tailor your resume to the job so the hiring manager will instantly know you’re the best fit.

You’ll learn tips on how to highlight not only relevant programming languages but specific tools and frameworks.

Let’s go.

Don’t just submit the same resume to every employer.

This is your calling card, and you have to mold it to the specifications of the job you’re applying for.

If you internalize exactly what an employer wants from a job posting, and show in your resume how your skills match what they’re looking for, you’ll be ahead of the pack.

Be honest, sensible and creative with your experience, but never lie.

Familiarize yourself with an advertised job

Read the job ad carefully to identify keywords or skills that seem most important to the role.

Including the right keywords and skills that a company is looking for on your resume will help you stand out from the hundreds of applicants a job ad may attract.

For example, here’s a recent job ad for a software engineer posted by an Australian airline:

You’ll have:

  • Demonstrable experience developing back end services (micro services architecture preferable)
  • Experience developing web applications using modern JavaScript frameworks (React preferable)
  • Some Experience with cloud computing (AWS preferable)
  • Understand the value of simplicity and know how to write maintainable, clean code that adheres to standards
  • An understanding/knowledge working within an agile environment
  • Ideally have an understanding using any two of the following: Java, React, Golang, Python, Angular or Node
  • Have a relevant Degree/Qualification or 4+ years experience.

By analyzing the job description closely, it’s apparent that hiring staff at this airline will be looking for key phrases and words such as ‘micro services architecture’, ‘cloud computing, ‘React’, and ‘web applications’.

If you are applying for a front-end role, hiring managers will automatically look for key skills such as ‘Angular’, ‘React’, ‘Vue’ compared to full stack or back-end roles that may mention languages like C# or Java.

Be intentional

The words, technologies and programming languages you include should help the reader boost his or her confidence in your area of expertise.

When crafting each line of your resume, don’t forget that the employer isn’t only looking for key skills such as writing code or designing a web interface, rather they’re looking for clues that indicate your understanding of how the codes and systems work, and your ability to work with an unfamiliar code and debug systems promptly.

For example, if you are including Java as a key skill, emphasize the point by listing Java-related technologies and frameworks you’ve worked with such as Spring, Spring Boot and Hibernate, where relevant.

Since Java is a robust, high-performance language, being specific about the types of environments you’ve worked with (scalable / concurrent or monolithic /multi-threaded) will help demonstrate the breadth and depth of your skills.

Think of each tool as an opportunity to elaborate on your skill sets. If you have worked with data-heavy environments, complement your skills by listing your experience with object-oriented programming languages such as Python and Scala.

This resume below shows how you can organize and structure multiple skill sets into a cohesive resume:

1*dwU48bfuz6y3fYVr1bFiLQ

Don’t neglect the obvious

When non-specialist hiring managers are tasked with finding a software engineer, they may be looking for more general skills to identify a winning candidate.

Here’s a checklist of general skills to weave into your resume (if you have them of course!):

  • Proficiency in either computer science, computer programming, data structures or algorithms.
  • An understanding of software design best practices.
  • Ability to quickly learn and reverse engineer code (software engineers should be able to work off programs or code written by other developers and will need to be able to create, read, update, and destroy web applications).
  • Confidence in writing algorithms.
  • Capabilities in similar disciplines (where relevant, include knowledge of database administration, UX/UI design or search engine optimization).
  • Strong knowledge of fundamentals - Functional programming, data structures and algorithmic programming
Hiring Manager Tip: As former Google tech lead Francois points out, good software engineers are curious. Showing you are a curious person by highlighting supplementary skills like UX/UI design or SEO will help lift your resume to the front of the pile.

Understanding your user and how your work impacts the end user is becoming a very important trait for all good engineers.

Make it relevant

It is increasingly important for people to have a holistic understanding of how entire systems work.

Software engineers can no longer just know how to code an app.

Now, it’s crucial to demonstrate that you know how a particular application or code will interact in a specific environment and infrastructure.

As a rule of thumb, whenever you list main tech skills, also reference relevant peripheral tech skills.

Listing relevant tech can usually indicate a deep level of interest or mastery of a specific tool/language.

0*YmQmyuU-mhgOmZr_

For example, React has a large ecosystem of tools and component libraries and referencing some of the best tools and resources immediately says a lot about your skill set.

When listing Python on your resume, consider how you can demonstrate conceptual knowledge by mentioning web or big data frameworks such as (Django, Flask, Spark, Tensor flow, Hadoop, Pandas, etc).

Check out how this resume effectively organizes technological capacity in accordance with key languages.

1*7tQFvdAD_nl15ommFq6apg
Hiring Manager Tip: As you mention your skills, avoid ratings such as ‘proficient’, ‘expert’ or ‘novice’. Don’t rank your own competence in different skills and technologies unless you are using a universal grading system. Bottom line: Show don’t tell.

Chapter 3: Make A Lasting First Impression

1*aA7Rjytwu3zlPxBFkjWG7A
Approximately reading time: 2–3 minutes

What you’ll get out of this section

How to subtly add character to your resume that will leave a clear image in the hiring manager’s mind of what kind of worker and person you are.

Think of your resume as a story you’re hoping to have stick in the reader’s mind.

In your resume, you are the main character so consider highlighting the interesting parts of your career story.

Here are some stories you can lean into:

  • The Leader: If you’ve been working in smaller teams, it may indicate that you’ve made a larger contribution. Where possible, highlight the level of leadership and responsibility you’ve had on a project and draw attention to the size of the team.
  • The Innovator: If your past projects have involved new technology such as artificial intelligence or blockchain, emphasize an innovative and forward-thinking narrative throughout your resume.
  • The Performer: As a short-term contractor, you might demonstrate consistency by specifying that your role was extended due to high performance.
  • The Learner: Concerned about having too many jobs on your resume?
    Emphasize the completion of projects before each exit and describe each job move as a desire to learn new skills and complete new challenges

Ultimately, different kinds of businesses will resonate with different narratives so determine how you can tell your career story to best fit your unique audience: the employer/hiring manager.

For example, digital agencies require employees to move quickly, and get projects out the door.

As a result, agencies will likely scan resumes to find people who are good at keeping clients happy and staying on top of deadlines.

You could lean into your role as the “The Performer” in order to give yourself a leg up with a digital agency.

Product/platform businesses like Ebay, Canva or Carsguide.com.au are more likely to look for software engineers that are quality-driven and committed to high standards.

“The Leader” or “The Innovator” could be helpful career stories with platform businesses.

P.s. We’re here to help — If you need guidance on your resume, you can book in a 20-minute slot with our consultants to get some feedback here. (no strings attached)

Chapter 4: Hacks That Will Make Your Resume Pop

1*NpgwA1oJ24aMFCEDDcTGSA
Approximately reading time: 4–5 minutes

What you’ll get out of this section

How to use specific metrics and accomplishments to create a golden resume, the benefits of passion projects, and how to properly incorporate your GitHub into your resume.

Outlining your history of employment is straightforward but making sure it’s relevant and presented in the best light is what sets apart an average resume from an exceptional one.

The best software engineer resumes will help an employer understand how a previous project or workplace ties into the position they’re hiring for.

Regardless of the depth of your experience, ensure your employment history features a few bullet points or sentences about key skills and achievements to demonstrate more than just the responsibilities of the role.

The primary goal of your employment section should be to demonstrate the impact and value of your time at a former workplace.

Here are some tips:

Results

Add accomplishment-driven statements, metrics and numbers to help indicate the success and value of your past roles.

Consider how your actions drove key accomplishments in the business.

If you can concretely show you made sales, engagement or user retention go up for a past employer, this will help your application tremendously.

Here’s how you can do that:

  • Rather than generic statements or simply stating your involvement in the launch of a new mobile application, explain the results of your involvement — did it improve customer retention by tenfold?
  • How many new downloads did it attract?
  • Did it improve the cost efficiency of your business?
  • Get specific with the accomplishments.

For example, a top tier resume for a senior software engineering resume states the following achievement:

“Reduced time to render {company name} home page by 20% by preloading customer profile and pre-fetching static resources on login page and optimizing web and app tier C# code.

Reduced time to render the transaction history page by 50% by replacing legacy blocking request with Ajax request and relocating the request to different virtual directories, and collapsing multiple back-end requests into single request

Reduced production exception by 40% over two releases by proactively monitoring/analysing {company name} logs using Splunk

Performed fortnightly presentation to {company name} product owner and platform management team on performance and resilience issues.”

  • One way to incorporate this information into your resume is to list these results in a ‘key achievements’ section:
0*TLvCDwaeGIe4KF1f

Projects

With every line of employment history, the most successful resumes include a proof of concept (POC) that references actual achievements or ownership of a project.

One of the main questions on every hiring manager’s mind is ‘what has this applicant delivered and done?’

This makes it essential to highlight two to three projects that you can confidently explain.

A POC is more than the written code or programming language used. It demonstrates the processes and best practices that have been used to achieve key results.

Deep dive into a project by helping employers understand your concrete responsibilities. Here’s an example below:

0*hiOSacb6WWfEe518

For positions of seniority, it helps to refer to the actual ownership of a project you’ve completed or been involved with.

Specify what you did versus what the team did.

Hiring managers are looking for evidence of projects that you have started and completed.

Owning a project from start to finish shows that you (probably) get all elements of the PDLC or SDLC and have worked with different functions.

Passion projects

“Personal projects and freelancing work is reflective of someone’s passion. It’s not about hiring people who can simply churn out code, but finding people who can deliver quality, well-written, well-tested and maintainable code.” - Sean McCartan (Software Engineering Practice Lead), The Onset

An ambitious personal project can show your future employer your initiative, dedication and passion to learn and build a software solution.

It’s OK if you don’t have any personal projects on your resume, but if you do, it could help set you apart.

Whether your personal project is a Python script, a mobile application, or a Java map, it can be a beneficial way to demonstrate real-world skills in a non-work context.

It also shows a general passion and curiosity that employers value.

You can display these past projects or work through an online portfolio.

Featuring your GitHub

One way to show off your projects is through GitHub. But don’t just send your main GitHub account, instead include urls to specific projects on GitHub.

Former Google tech lead Francois says that interesting projects are one of the things he looks for in a resume.

Projects on GitHub can really demonstrate passion, and in many cases, collaboration with other engineers.

Make sure your project is structured neatly and includes a ReadMe file.

This file should describe the project, how to use it, and ideally include photos/videos of the project.

One easy to use, well-documented project will be more effective than several projects which are difficult to navigate or half-completed.

This video goes into more detail on how to best format your GitHub projects.

Chapter 5: Show Off Your Education, Specialization, And Soft Skills

1*fWf3ia-qlwPLpwqt3KA-XA
Approximately reading time: 5–10minutes

What you’ll get out of this section

How to leverage your education to show you’re the best candidate, the importance of leaning into specialization, the soft skills hiring managers are looking for, and how to highlight your working methodology.

How to flex your education

If you have it (and it’s often okay if you don’t), listing relevant education is crucial in any Software Engineer’s resume as a career in software engineering will generally require at least a Bachelor’s Degree or relevant vendor certification.

Usually, software engineers will have an educational background in computer programming or computer science, with majors in software engineering.

There are tons of branches of software engineering that can result in different academic trajectories and specializations - courses can focus on various types of programming languages or go into topics such as project management, web security or coding.

If you don’t have a relevant degree, don’t fret.

Examples of self-learning and continuous learning can often take the place of a traditional Bachelor’s degree.

Examples of this could be online courses with sites like Treehouse, General Assembly, Code School, or Udacity.

“I don’t care what the degree is in - the fact that someone went to university to study something interesting is a good indicator but that’s as far as I’d go. There is value in being educated but this can also be in the form of self-education.” - Francois (ex Tech Lead @ Google )

Just remember to clearly highlight continuous learning on your resume. (Be selective, don’t list every course, boot camp or meetup you’ve attended.)

Demonstrate your competence in software engineering by shining a light on any ad hoc or self-taught learning that sets you apart.

For example, if you have completed a boot camp or course in technical skills such as Java, PHP or C#, add this to your qualifications.

Leaning into your specialization

As technological areas like virtual reality, artificial intelligence, and big data constantly evolve, it helps to distinguish an area/s of expertise in your resume.

If you have a specialization, lean into it.

This can help employers put their confidence in specific parts of your skills and be more sure that you are an appropriate fit.

Here is some example of areas of specialization in software engineering:

  1. Games and entertainment systems: Designing applications or software that can be used in games
  2. Digital or embedded systems: Software engineers can specialise in computer systems that have dedicated functions in a larger mechanical or electrical system
  3. Modeling and simulation: Designing or maintaining applications which simulate specific processes to reduce the need for costly testing
  4. Networking and distributed systems: Skills involving expertise in network architecture, application layers and network security
  5. Product and/or Project management: Being responsible for the management of teammates and ensuring a product or project is adequately completed/built/prototyped.

Along with specializations, don’t hesitate to include other related experiences.

Software engineering is closely aligned to job titles such as Software Programmer, Software Developer, Software Designer, PHP developer and more.

As long as you’re able to draw correlations in skill sets and demonstrate the relevance of the type of work, it can be helpful to highlight other related jobs you’ve held.

Don’t forget the soft skills

‘Soft skills’ refer to character traits, social skills or personality traits that help you relate on an interpersonal level.

Soft skills may not be as easily quantifiable as ‘hard skills’ (years of experience, name of degree) but they are often just as important to an employer.

To help with their day-to-day roles, software engineers need a balance of hard and soft skills such as being proactive and showing resilience.

Despite popular misconceptions, software engineering is highly creative — it involves designing and building functions and systems that often never existed before.

This creativity often comes hand in hand with collaboration and it’s important that software engineers can work well with others. Communication, collaboration and creativity are increasingly becoming winning traits for software engineers, so these qualities should be front and center on your resume.

0*UdkUegAytmcBzWw4

Francois has come across plenty of software engineer resumes with a wide range of technical skills but according to the former Google tech lead, empathy is a crucial skill hiring managers look for.

“A good software engineer will be both technically skilled but also understanding of other people’s points of view by being constructive and helpful in how they interact with others. There’ll be a lot of opinions and conflict in software engineering so you need to be constructive to understand their concerns. This is an important skill.” — Francois (ex Tech Lead @ Google )

Here are some other soft skills you could incorporate into your resume:

  • A continuous learning attitude: This can be shown through a GitHub account, leadership or engagement in meetups or involvement in the C# community, for example.
  • Innovation and forward-thinking approach: This can be difficult to convey in a resume but if you haven’t been able to work with emerging technologies in your job, demonstrate this in projects you’ve worked on outside of your work or mention involvement with new technologies such as blockchain or AI.
  • Presentation ability or influencing skills: This can be shown through leading regular standups with other team members, presentations of past work or organizing meetups.

This video breaks down some of the most important soft skills for software engineers to have.

How to highlight your working methodology

It can be an impressive resume addition to mention specific ways of working that you’re comfortable or familiar working with.

In particular, the ‘agile’ methodology can be appealing for tech-based companies that rely on rapid iterations and sustainable development.

Software engineers who want to work in a tech-based environment need to demonstrate their ability to work seamlessly with product teams and developers that operate in an agile framework.

If you’re well-versed in ‘agile’ development, make sure to mention this in your resume.

(Same goes for Kanban, Test Driven Development, etc.)

Remember: For senior roles, hiring managers will look for people that have worked in more complex and challenging environments — if you have been working with the same technologies and within the same environment, it may be time to look out for something more challenging and expand your main skill sets into other areas of development.

If you’re interested in front end, get more UI experience and work with JavaScript, or if you’re interested in architecture, get involved in projects with heavy infrastructure.

We hope this guide answered your questions and will help you craft a new, winning resume.

If you’d like us to take a look at your resume and give you some feedback, you can book in a time with one of our consultants.

Is there something we missed? A question you still have?

Leave a comment below!