Vincent Stollenwerk

My Guide to Applying for Junior Software Engineering Roles

Posted on

Recently, many of my friends have asked me for advice during their job search process. Since I put a lot of thought into my applications, here is a collection of the factors I personally considered during my job search. Using these techniques, I've landed two scholarships, my first part-time job during my studies, three internship offers (including one from Amazon Web Services), and two full-time job offers.

In this post, I'll first discuss strategic aspects of job applications such as what roles to apply for and what to keep in mind when writing applications. Later, I'll discuss the resume and cover letter itself and what I pay attention to when writing one.

Disclaimer

Please note that my experiences may be subject to survivorship bias. While these practices have brought me great success, I do not know if I got accepted because of these actions or despite these actions.

Actually, I'd love to hear a recruiter's thoughts on this as well as your thoughts in the comments below.

Table of contents

  1. Strategic considerations
    1. Superlinear returns
    2. Where should you apply?
    3. Timing your applications
  2. Writing your resume
    1. Job listings
    2. Resume layout
    3. Resume content
    4. Adapting your resume
  3. The cover letter
  4. Iterating
  5. Conclusion

Strategic considerations

Superlinear returns

First, let's start with an observation: the goal of a job search is to find one job. Optimally, the best1 job. Additionally, I strongly believe that the job market is a space of superlinear returns. Conceptually, for each job, there is a barrier to entry—the hiring bar that you have to meet. And you only need to break through that barrier, potentially be better than your competitors, once.

If you send lots of mediocre applications, you might barely miss the hiring bar every time:

Graph with a broad but flat curve that does not penetrate the "hiring bar"

If you, on the other hand, send higher-quality applications, you might only need a few:

Graph with a narrow but high curve that penetrates the "hiring bar"

As a result, I spend a lot of energy and time optimizing my applications. Many people say that the job search is a numbers game. To some extent, I agree. There is always luck involved in job applications. Nevertheless, I prefer quality over quantity.

Additionally, the hiring bar for different jobs might be different. Let's assume that the hiring bar broadly correlates with the quality of the job. Then, you'll find the best job by passing the highest hiring bar. Consequently, by sending mediocre applications, you might lock yourself out of your best opportunities.

Where should you apply?

Writing high-quality applications takes time. Since we all have limited time, we need to be strategic about which companies to apply to and in what order. Being strategic includes being realistic. I would suggest finding two kinds of job listings:

  1. Moonshots: These are your dream positions. They might be highly competitive, a little unrealistic, and a huge career jump.

  2. Foundations: These are roles and companies that you find interesting and that you could imagine yourself working for. Perhaps it's a position as a support engineer, with the hope of eventually transitioning to an SDE position. These roles might not be your dream job, but you could build your career from there.

While you should definitely send a few moonshot applications, applying to some foundational companies prevents you from going out with empty hands. Ideally, at the end of your job search, you want to be able to choose between multiple offers. Not only does this give you leverage in negotiations, it also gives you the peace of mind that you accepted a good offer based on your options.

During my job search process, I mainly used the following sources to find roles that I might be interested in:

Note, that SWE List focuses exclusively on North-American internships and new-grad positions. However, many of the listed companies also have openings in other countries.

Lastly, if you're particularly interested in a specific company, many of them maintain newsletters or social media profiles to inform you about their latest openings—especially on LinkedIn.

Timing your applications

By the end of your job search, you want to have multiple offers2. Generally, I think the earlier you send an application, the better. Especially for highly competitive roles, positions might be filled before your application is even reviewed if you wait too long. However, especially if you do not have much interviewing experience, it might be good to get some practice first.

Therefore, I like to send a few applications to foundational positions early. Here, you can practice your interviewing skills in a low-pressure environment and, if you're lucky, receive your first offer.

Additionally, during the job application process, you can always inform your recruiter of any changes to your timeline. They would like to schedule an interview, and you are still early in your job search? Ask them for a late interview date. Are you expecting an offer from another company soon? Let the other recruiters know that you're on a deadline. You can use something along the lines of:

I really like your company. However, I have a deadline for another offer I've received. Would it be possible to speed up the process?

Lastly, especially for larger companies, you can search for experiences of other candidates online. There, you might find insights into the length of their job application progress and prioritize applying to companies with longer processes earlier.

Writing your resume

Great! Now, that you know what positions you want to apply for, let's talk about your resume. Your resume has one job: Convince the recruiter that you are a fit for their position and that they want to invite you. To best achieve this, I suggest you to work backwards from the job listing.

Job listings

Job listings generally are structured into three parts:

  1. Overview: A general overview of the company, the role, and your responsibilities in this job.
  2. Basic qualifications: A list of qualifications that you must meet. If you don't meet these, a rejection is more than likely.
  3. Preferred qualifications: A list of qualifications that you are not required to meet. However, the more of these you bring the better.

For your resume, the basic and preferred qualifications are of most importance.

Resume layout

On a high level your resume should have the following sections:

  1. Work experience
  2. Education
  3. Skills

Additionally, you can include more sections to showcase your other achievements. Here are some additional sections I've used in the past:

  1. Projects
  2. Awards
  3. Publications
  4. Volunteer work

In the end, recruiters will judge you on the content of your resume, so don't worry about a fancy design. Focus on readability! In the best case, recruiters should be intrigued after a first scan—just by seeing the headlines. Consequently, try to be concise. Showcase your best work but don't waste too much space irrelevant experiences. If possible, try to stick to one page. However, if you have lots of relevant experience, it is fine to do more.

Additionally, some people try to optimize their resumes for so-called applicant tracking systems (ATS). This means making sure your resume is machine parsable. Some people go as far as completely avoiding multi-column layouts. However, at the same time I've heard recruiters explain that resumes are not rejected by robots and that they do look at each resume personally.

Many online application platforms automatically fill out the application form based on your uploaded resume. As long as this works, I don't worry too much about the ATS.

If you want, you can use an existing template. I personally use an adapted version of the Deedy-Resume template in LaTeX.

My resume. Header with name, address, and contact information. Two column
layout with education, skills, and volunteer work in a small left column and
experience & projects, as well as awards on the right, main column.

Resume content

As noted before, the goal of your resume is to convince the recruiter that inviting you to an interview (or online assessment) is worth it. As a result, I try to emphasize those achievements that fit the job description the most.

While writing the resume, try to demonstrate experience for all basic and most preferred qualifications by actively highlighting them in your Work or Projects sections. While mentioning skills only in your Skills section is fine, demonstrating your experience through actual (project) work is much more valuable.

In the following, I'll roughly discuss the different sections of a resume in order of importance. However, if you don't have good work experience yet, you can list your education or personal projects first. If you apply for a research-heavy position or have high-quality publications, you can list your publications higher, and so on.

Work section

This section is usually the most important section. Here, you want to list your work experience in reverse chronological order. While doing so, I try to roughly follow the STAR Method where applicable. In your bullet points, try to be specific in what you accomplished, what technologies you used, and what impact you had. While it is often hard to find specific data, quantify your impact where possible. For example:

  • Implemented caching for our product page using technology X which reduced page loading time by 20 % and increased our conversion rate by 3 %

As with all sections, try to go deeper on more relevant and impressive experiences and be more concise on less relevant experience. It is also fine to leave out irrelevant experiences. For instance, I excluded an early physics-related internship and moved an internship in the social sector into the Volunteer Work section.

Projects section (Optional)

Especially at the beginning of your career, you might not have much work experience. If this is the case, a project section is a great way to demonstrate your skills. Additionally, personal projects signal that you're excited for software engineering (or your field of expertise) beyond your regular coursework. If the code of your project is available online, I also like to include a link to GitHub. In case a recruiter looks at the code, I try to prepare a nice README and make sure the code is presentable.

Similarly to the Work section, try to highlight the technologies you've used and the impact you've had (if you had any).

Education section

In this section, you list your education. Since modern companies value your experience over formal qualifications—for software engineering positions—I try to keep this section short and only list the most relevant details such as the school, the degree, and the GPA. If your GPA isn't great, it is also acceptable to leave it out.

If you've gained relevant skills during your education that you cannot showcase through your work experience or projects, it is also possible to include a Relevant Coursework subsection. For example, when I applied to a database company, I showcased some database-related courses I had taken before.

Lastly, when you apply to more traditional organizations, research-oriented roles, or academic positions, you might want to go deeper on your education as well.

Skills

Personally, I place little value on the skills section. Nevertheless, since most resumes include one, I do too. It can give recruiters a quick way to check for the basic and preferred qualifications. As a result, while your skills should be roughly ordered by proficiency, I regularly reorder them to put relevant skills first. However, remember that demonstrating your skills through your work experiences and personal projects is much more valuable.

Additionally, avoid being overly specific when rating your skills. Some resume templates include progress bars to rate skills, but these can take up lots of space. Additionally, half-full progress bars often make the skills appear weaker than if they were simply listed.

Other sections

As mentioned in the Resume layout section, you can optionally include more sections like Awards, Publications, or Volunteer work, depending on your personal strengths. Especially for research or machine-learning related positions, publications can be an impressive way to showcase your skills.

Adapting your resume

As discussed earlier, we want to optimize for high-quality applications. Consequently, I adapt my resume for every job application I send. This does not mean completely rewriting your resume for every position, but you should at least emphasize the skills mentioned in the job description.

Maybe, you want to include a web project for a frontend role and replace it with a systems project for a lower-level role. Or if the tech-stack of a previous job is closer to the job requirements, you might want to go deeper on its description and keep the description for your latest position more concise.

While this initially can be some work, over time you'll build a library of common “resume blocks” that you can swap in as needed.

The cover letter

From what I've heard, the usefulness of a cover letter is quite controversial, especially when applying to modern companies. Often, the cover letter is optional and even if you include one, your resume will be the primary concern of the recruiters. A friend in recruiting once told me that many recruiters do not even look at your cover letters.

If you're short on time, skipping the cover letter, if it is optional, is where I would compromise.

Nevertheless, thinking of superlinear returns and writing the optimal application, I usually include one. Especially, if I highly value the company and position.

In my cover letter, I try to offer insights that go beyond my resume. Generally, my cover letters follow this structure:

  1. Why I like the company and position
  2. Short introduction of myself
  3. Why I specifically fit the position
  4. Conclusion

To not repeat myself, I try to include facts about me that didn't make it into the resume. For example, the cover letter can be a place to highlight your soft skills and demonstrate your culture fit. For example, if the company advertises core values of themselves, I try to pick them up and give an anecdote why I might fit those values. This also demonstrates your familiarity with the company. Additionally, you can try to demonstrate your knowledge about the company's product line and what excites you about it.

As with any writing, your cover letter should be interesting to read. As a result, I try to include my greatest accomplishment close to the beginning, in the hopes to catch the recruiter's attention.

Iterating

In the end, your job search is a process, and with each application you send, you have the chance to try something new and iterate. As a result, I want to encourage you to try new stuff, take risks and change things—especially if what you're currently doing does not work.

Additionally, the responses to your applications can give you valuable insights. Do you regularly get rejected quickly, just based on your resume? Maybe you should invest time in better showcasing your skills. Especially if you have little work and project experience, consider looking at the minimum and preferred qualifications of your favorite jobs and build something using those technologies.

If you often get invited to online assessments or interviews but get rejected after, your resume is probably fine. Instead, you might want to practice your LeetCode or interviewing skills. I plan to further discuss this in a later blog post.

Conclusion

Congratulations 🎉! You've now written your resume and are ready to submit your applications. To summarize, we've discussed superlinear returns and why it is worth it to optimize your resume. Then, we've discussed strategies on what positions to apply to and how to time your applications. In the end, we've discussed the specific details of writing your resume and cover letter.

This post will likely be part of a short series on job applications. Next, I am planning to write a post on interview preparation and how to act during your interviews. If you're interested, consider subscribing to my RSS feed or drop me an email, if you'd like to get notified that way3.

Lastly, I want to encourage you to seek help from your network. Most people you know will gladly support you by proofreading your resume or giving you referrals.

Footnotes

Footnotes

  1. Job quality is of course multidimensional. Compensation is the most obvious factor. However, deciding for a job always includes tradeoffs between factors such as flexibility, freedom, learning opportunities, and working pace.

  2. Of course, not everyone is in the fortunate position of receiving multiple offers. If you've been applying for long, I hope my thoughts can help you land your first.

  3. I do not have a proper email list yet, but if interest arises, I might consider setting one up.