Software Engineer Resume Handbook
Many Software Engineers would rather ignore their resume. It reminds you of how few companies get back to you when you apply. But when you are looking for a new job, you end up scrambling to update your resume. Hopefully, this writing will help you create a resume that gets the results you want.
Your resume has five important sections contact information, your education, work experience and skills. If space allows a personal projects section and goal statement can be added.
For contact information you want to include your name, email address, phone number and the city you live near. Recruiters will contact you by phone or email. Including your actual address is unnecessary, simply state the city you are in ex. “Miami, FL”. Recruiters are never going to physically mail you anything. They just want to know whether you will need to relocate or not.
In the education section you want to list which college you went to, the year you graduated and your GPA. If you have a relevant masters degree list that too. I took my GPA off after a few years of industry experience because it was under 3.0. After five years in industry it is probably best to remove your GPA even if it is a 4.0. By that point in your career your GPA is irrelevant compared to your experience in the workforce.
My education line looks like what you see above. It includes the university I went to, what I majored in and the year I graduated. Since, I have a Minor in Computer Science it would be worthwhile to list it above.
Do not list the classes you took unless you have nothing else to fill space. In general companies do not care what classes you took as long as your major was computer science, software engineering or something closely related.
If you went to community college and then transferred to a university, you do not have to mention community college.
Your education section should be very short. Five lines at the longest. It should be easy to skim past without thinking about. When the recruiter is skims your resume she should think “ah, the candidate has an appropriate college degree”.
The experience section is the most important part of your resume. It should be the largest and clearly visible in the top half of your resume. This section is where you convince the hiring manager to interview you. Many companies will post a general job posting for a ‘Software Engineer’, then depending on your experience and interview performance they will decide to make an offer for a particular level like Junior or Senior software engineer.
I like to split the experience section up by job. Then have a small paragraph for each project at that job that I want to highlight.
You want to fill the section with the highlights of your career. When did you demonstrate the most leadership, technical acumen and success? That is what you put in your experience section.
Some of your experiences will have been bad. Projects fail, people get laid off, etc. A simple rule of thumb is “never volunteer negative information”. This goes double for your resume. Never include negative information in your resume.
If your GPA is bad and you barely graduated college with a 1.5 GPA, do not put it in your resume. If you failed Calculus 2 three times do not put that in your resume. If you are a felon and do not have a legal obligation to disclose your criminal history, do not put it on your resume. If the company wants to know they will ask you.
Were you fired from your last job? If so, do not put that on your resume.
All you need to include is a range of months during which you worked at the job. Do not put January 13, 2017 through March 5, 2018 on your resume. The recruiter does not care how many days you were employed at a job. Put January 2017 – March 2018 as your employment date range. If the recruiter cares they will ask you about how many days you were employed during a phone screen.
Do not say anything negative in your resume about any of your jobs. You might think a job was a horrible failure that you were glad to escape after a year. But your resume should describe that job as a successful stepping stone where you shipped desperately needed features to hungry customers.
This blurb implies a number of things. I say that I led a team, mentored developers guided the architecture of a project and that I did so with Go, React.js and AWS. I do not say that I have soft or hard skills. I say that I used soft and hard skills to do useful things.
My friend had an internship which he hated, where his job consisted of writing scripts for his gaming mouse which scraped insurance company websites to check customer eligibility. He wanted to gloss over that internship because he hated it. I had to challenge him on it because even though he felt the internship was a failure it could be phrased as a massive success. How many people help hospitals verify patients’ insurance during an internship? In my internships we built internal tooling that maybe 3 people ever used. My friend built a system that verified insurance coverage for hundreds of people. But he didn’t want to list that on his resume because he remembered it as a horrible experience.
In this example I included two projects that I worked on while I had the title “Java Developer” at a company.
You should include non-technical jobs
Include as many jobs as you can fit into the Experience section. If you have one programming internship and three jobs where you worked as a dishwasher, list all of them. Add a short paragraph describing what you did and learned at your non-technical position. Wait until you have had four technical jobs before you remove non-technical roles from your resume.
The skills section is often highly positioned in engineers resumes. We value the technologies, languages and frameworks we have mastered and want to put them on top. Resist that urge. The tools you have developed skills with probably only overlap a little with the stack used at your next job. Put the skills section near the bottom of your resume. Do everything you can to make it as small as possible to free up space for the experience section.
Hiring managers do not get a lot of value out a simple list of technologies you are familiar with. Unless you are a perfect match they will have to spend months training you on their technology stack.
Unless you are a serious expert on a technology do not list a skill level. You are not ‘Advanced’ at Java or Object Oriented Design or anything else in your ‘Skills’ section.
Companies are looking to fill positions for generalist software engineers and hire experts to solve particular problems. If you are an expert on a subject your resume should be focused only around your expertise in that one thing. A Cassandra database expert should not be looking for general purpose software engineering jobs, he should be focusing on jobs that want a Cassandra expert.
As a Generalist you are expected to be able to muddle through any problem that is thrown at you. Companies will throw you at whatever they want no matter the ‘level’ of expertise you put on your resume.
The hiring manager has better visibility into what the average skill level is than you do. You could list yourself as a ‘Kubernetes – Beginner’ and be the most knowledgable person that company ever interviewed. Only people who do dozens of interviews a year have the visibility necessary to compare you to the rest of the job market.
Some people worry about being ‘grilled’ about anything they list in the skills section. So they try to protect themselves by putting ‘beginner’ or ‘intermediate’ next to the skill under the belief they will be grilled less. If you are a junior engineer, people know you are not an expert at anything. Becoming an expert requires a lot more effort and time than most junior engineers have invested into software engineering. Even if you put ‘Expert at distributed systems’, recruiters will see your two internships and they will not believe you. If you get asked about something admit what you do and do not know. If you are backed into a corner, just say “I know a little about that technology, and I am looking for jobs where I use it in my work.”
If you are an expert in something you do not want to put it in your ‘Skills’ section, put it in the ‘Experience’ section! If you gave a talk on Kubernetes at Kubecon, that gives you enough expertise to interest people. Do not relegate an interesting experience like that to the skills section. If you were the Java performance expert at your last job then relate an experience where you saved the company hundreds of thousands of dollars in hardware costs. Don’t list actual expertise, tell a story about it.
Aim to list twenty skills at most. You want to be able to talk about them all intelligently. More skills is not necessarily better, the recruiters is looking for a few keywords that match the job posting. Your goal for the skills section is to give the recruiter the keywords they are looking for and to hint at the breadth of your skills.
Goal Statement (Optional)
The goal statement is a short paragraph that you can use to help the hiring manager understand what you are looking for. It can be helpful when applying to companies that make general job posts for ‘Software Engineers’ and then rank candidates based on experience. Use the goal statement to let them know what role and grade you are looking for.
“Senior Software Engineer building today’s software products and platforms, training developers to maximize their abilities, and supporting business success.“
The line above is one I have used. It gives an idea of what role I am looking for and how I view my role in a company. The goal statement is optional, you do not need one. If you are short on space cut it and devote more to the experience section.
What about Personal Projects?
Personal projects are not one of the major sections on your resume. I include links to my github and blog where people can find my personal projects. I would prioritize describing personal projects before hobbies, but describing job experience is just better. If you have a bunch of personal projects and only one job or internship, make sure to use more space describing that job than you do on your personal projects.
Styling a resume is a worthwhile, but risky process. Unless you are looking or jobs as a designer or creative artist, showcasing your artistic talent is not going to contribute to getting a job. Hiring managers and recruiters are skimming through dozens of resumes at a time. Your first priority is to make sure that the important sections are easy to find on your resume. Use bold headings that make it obvious that this section is about your education and that section is about your work experience.
You can add flair to your resume to help standout. Try to avoid anything fancy, a resume is not art. Any flair should be evaluated on whether it makes your resume more difficult to read. Unless you are 100% sure your flair does not make your resume harder to read cut it.
Sentences with Trailing words
Watch out for sentences with trailing words. Those trailing words are taking up an entire line that could be describing your experience. Try to modify that sentence to use less space or to completely fill two lines in your resume.
Trim Extra Space
Trim as much extra space as you can. Careful formatting can save you dozens of lines in a one page resume.
Cover letters often come up when people discuss job applications. A cover letter is a one page letter you write to persuade a company to interview you. You want to write about why you are a good fit for the position and how you are motivated especially to work at that company.
Two major strategies you can use are to write a custom cover letter for each job you apply for or to maintain a template cover letter which you modify a little each time you apply to a job.
I use a cover letter template for the majority of the jobs that I apply for. I maintain a ‘Application Developer’ cover letter and a ‘Devops Engineer’ cover letter then do a little customization for each position I apply for. The jobs I am qualified for are generalist Software Engineer and Devops so my cover letter do not need to change a lot.
Custom cover letters are good for highly competitive companies and positions that you really want. The problem is that you will end up spending several extra hours for each application and still might not get a response.