Hi, I am Nicolas πŸ‘‹

Full Stack Software Engineer at GitLab who deeply cares about UX. Passionate to build magnificent products everyone loves to use.

← Back to see all posts

Applying For a Software Engineering Job

After being an interviewer and an applicant, I want to share my experience and give you ideas on how to prepare for interviews. I will go through each step you will face when interviewing for a company.

Disclaimer: My advice is tailored to software engineering positions.

Resume & Cover letter

Before you even come to interviews, there is one small step that needs to be done: writing a good Resume and Cover Letter. Resumes & Cover Letters are from my experience the biggest filter so this needs to be good because this puts you out of the race before even talking to someone.

I am honest: I am not really good when it comes to writing Resumes and I’d reach out for help as well. If you have friends who work in HR, ask them to review your Resume and if you know someone at the company who can refer you, try to reach out to them as well to not fall through this filtering process.

However, there are some mistakes I’ve seen while interviewing candidates at companies I’ve worked for:


  • Describe what you’ve worked on and if possible, target what the company is looking for. For example: When the job ad is for a Ruby on Rails position, then focus on these experiences.

  • Don’t add every language or technology you’ve ever tried out or programmed in. I’d never put Java in my Resume, although I learned it in school when I was 15 and this was the main language at the university. The same goes for C / C++.
    You can mention these things in your interview, but putting a wide range of technologies and languages maybe could lead to the opinion that you’ve never dived into these technologies deep enough. I usually put JavaScript, Elixir, and Ruby in my Resume because these are the languages I feel comfortable with. Also, don’t add frameworks except if they’re part of the job description.

Cover & Movitation Letter

For me, the Motivation or Cover Letter was always the most important part when scanning through candidates. Yes, skills are important but motivation is something that you can not learn. Think exactly why you want to be part of the company you’re applying for. Make it personal. Maybe even creative! If you like to write poems and you think it is funny (and you’re actually good at it)… then go ahead and write a poem for this company.

You probably have a different motivation for each company. Be honest and let the company decide if your motivation fits their values. If the company cares a lot about culture fit and you do so as well - let them know. If the company values people who are doing side projects or open source work - show them! But the important part is that you don’t just write down whatever the company values. They will find out in the interviews when asking you for your experience anyway if it’s not true.

The “HR Interview”

This is probably not the appropriate name but let’s assume you’re applying at a bigger company. If that’s the case you probably have a recruiter for the first screening where they check your motivation and personal fit. I’d suggest you write down a ton of those typical screening questions (“What are your biggest weaknesses?”, “Tell me about a time where …”, … you can find them easily on the Internet) and go through them and think about possible answers.

Then, hand these questions to a friend and do a staged 1h interview where they ask you some of those questions and give you honest feedback. If you will not interview in your mother language, I can recommend you to train with someone who either speaks the language well or is a native speaker.

While all of those typical HR questions seem strange and you might want to “hack” them by finding out what the question is really about, my personal recommendation is to follow your gut. If you really think about all those questions, you will need to reflect a lot on yourself and what type of employee you are.

For me, this was finding out what type of person I am on a team. I am able to lead teams but comfortable to play the supportive team member who takes over ownership and helps out the actual team lead because I always try to have a good overview of the project. I’ve never realized that before but now I don’t need to “train” any of those questions in that direction because I am confident to know who I am in this case.

Live Coding Interviews

Practice, practice, practice! If you need to solve algorithms, great then you need to practice a few weeks to months (depending on your skills) and there are a ton of sites that have all possible coding challenges. If you are applying at a company that does not do those typical whiteboard interviews, then you can think of possible tasks they will give you. Most likely this task will not be too hard since and you will not get that much done in 1h under pressure while explaining your code.

However, train with a friend to be comfortable to talk while coding and someone else is looking over your shoulder. You will be nervous even when just your best friend watches you coding. You will maybe not perform at your highest peak when doing this interview, but experiencing the situation beforehand is super valuable.

A few things that you should think about when doing a live coding interview:

  • Do not make assumptions without communicating them
  • If you make assumptions, ask beforehand if it’s okay and explain why you make these assumptions
  • Make trade-offs when you don’t have enough time but explain how you’d do it when there would be enough time
  • Go into the details. Don’t forget anything in the description. Better ask than forgetting something
  • Have a process to tackle tasks. This will help you under stress

Also, keep in mind that it’s often not about the solution but about your thought process. Therefore: try to communicate as much as possible. One of the best examples is this staged Google interview:

Home exercises

If you’re a recruiter or someone who has an influence on your company’s hiring process: Please stop giving home exercises. Not even with a limited time. You will only favor people who have more time as well as showing people that you don’t care that much about their time (especially if you don’t give feedback).

It’s hard to prepare for those exercises. You can only hope that the company provides you with a working project and you know up front what they expect from you. For example, if you’re allowed to make trade-offs.

Cultural fit interviews

I have only one tip here: be honest. In my personal opinion, honesty always wins (this is general life advice πŸ˜‰). Find out how the company ticks by reading their blog or even stalk some of their employees on Twitter. This sounds awkward but you would be surprised how much information you can gain that way.

For example the Instagram Channel of PSPDFKit. You mostly see my colleagues doing team activities. There are not many photos because we unfortunately only meet twice a year on our retreats (that’s a downside of a remote team). However, as you can see on this Instagram Feed (and as I can tell you right now), this company cares a lot about its employees. Everyone is excellent to each other and we value cultural fit when hiring.

So when you’d want to apply at PSPDFKit now and follow my advice of stalking you’d know that we value culture, are a remote team and do retreats – as you can see, stalking really works πŸ˜‰.

You want to be in a work environment where you can be successful and like to work at. The cultural fit needs to be a mutual fit and I’d encourage you to ask questions – even those you “should not” ask. For example: If the company says they value diversity but the team is not diverse at all, you should ask why this is the case. If they really value diversity they will give you a reasonable answer and if not – they might not be the right company.

Manager interviews

Okay, you made it to one of the final rounds and you will speak to a manager, or at smaller companies to the founders or CEO. Now is your chance to shine with passion, motivation, and knowledge. Seriously, if you’re doing your job well you should know as much as possible about the business.

If you do your research well you can have a pretty good understanding of the competitors, the product or possible features. You maybe think “But I am just a software engineer”. In my opinion, we’re problem solvers. You can only solve problems well if you know the whole context.

Prepare for that interview by reading all blog posts, all information you can find on the internet about this company. This sounds impossible for a really big company, but it’s doable – and you want the job, right?

Job Ad Qualifications

I’ve seen people suggesting that you are overqualified when you meet all qualifications of a job ad. I don’t think this is true. Some job ads are explicitly written with lower expectations to get a bigger pool of applicants.

Even when you match all qualifications or are overqualified, there is a chance that you will not be hired, or not even get a response when applying. Which leads to my last point:

Receiving a rejection

Receiving a rejection is not easy. Especially when you really wanted a certain job. However, you can do all of the points above perfectly and perform great. In the end, there is a random factor that you can not control. It is either a personal preference or there is an even better candidate that applied for the same position.

The most important thing is: don’t take it personally. It has nothing to do with you or your skills. It’s often just out of your control.