How to pass an interview as a software developer
Hi, how are you? If you are reading this, chances are you’re looking for a job, and a bit stressed. It’s hard; especially in those tumultuous times. The good news is that you are doing the legwork to get better at having interviews, those things tend to pay off. So, hi, my name is Nikolay, and I’m here to help.
Wile you’ve been looking for jobs, I’ve been busy sitting on the other side of the table, designing and conducting those interviews. So, I figured I could share some knowledge from the other side, to help you improve your chances.
Before we dive into this, a word of caution. I’ve been in software for 20+ years and sat on both sides of the table a lot. It doesn’t make me the source of truth, it makes me someone with a perspective. And that is what I’m sharing here. Other people might have other opinions. Talk to them too.
Step 1: Understand what an interview is
I can tell you from the first hand experience, interviewing people is hard. It’s doubly hard if you are trying to not to do a half-assed job at it. People have different approaches and experience with interviews. And while there are some best practices, there is hardly any consistency from a company to a company in terms of how those interviews are approached.
The reason I’m telling you this is for you to understand that interviews are conducted by normal human beings and hence imperfect. So, if you nurture hopes that you are going to learn specific answers to the most common questions and ace the interviews, you need to think again. Start from thinking about what interviews are, and what the person on the other side of the table actually wants.
As I said, interview approaches vary significantly, but all of them boil down to two innate questions: 1. can you do the work?, and 2. how much pain in the neck are you going to be to manage you? You need to have good answers to both if you have hopes to land a job in a self-respecting establishment. And that is what you need to form your thinking and preparations around.
The first question is relatively easy, see the Step 2 below for some ideas. The problem usually lies with the second part, and that is what the rest of the article will be focusing on.
Step 2: Understand what is required
An average interview lasts 1 hour, but I can usually tell that a person is a no-hire in the first 10–15 minutes. The sad reality here is that a lot of people are running blindly into interviews. They just mass send their CV (or their recruiter rep does) with all the necessary keywords, and then hope that they are going to charm their way through the interview. The truth is, that unless the hiring manager is a total moron — which they usually are not — , this is a colossal waste of everyone’s time.
So, here is the hint. Read the job description before you apply! I know, when you are job hunting, it feels like beggars can’t be choosers, and you jump at all opportunities on the horizon in a hope to improve your chances. So it might sound counter intuitive to narrow your options. Because you think that the more options you have, the better the chances.
The problem with this thinking is that the numbers game only works if the cost of each try is zero. In your case it is not. You have to physically spend time on each interview/opportunity. And if you don’t focus on those that worth your time, you are going to spend a lot of energy onto what doesn’t matter, and neglect opportunities that worth pursuing.
I know JDs usually look less than stellar because they are written by non-technical people. But you need to do this work, it will enable you to focus your efforts on what matters. To help you deal with this, here is what you need to mainly look for:
- Technology being used. And here you need to be honest with yourself. Ask yourself either you are: a) worked with the tech commercially for 3+ years, or b) you were in the room when it was used, or c) you just read about it. Sooner or later they will find out anyways, it’s their job. So be clear about this.
- Understand the expected seniority level. Is this a junior, mid, senior or lead position, or something in between? Seniority levels imply different responsibilities, not just a pay grade, you need to understand those responsibilities. Also, there is a world of difference between company wanting someone to grow into the role, and a situation where they want someone who worked in the role successfully in the past.
- Understand if you want to work for this company. What are the company values? Do they resonate with you? What is the organisation’s goal, do you like it? Or even simpler, do you want to work for a large corp or a startup, which one makes you tick?
If you disregard this and luck out the job, there are good chances that you are going to land in a wrong place, become miserable and will out of the job in 6–12 months, doing it all over again. At least if you are taking risks, those need to be clearly understood risks.
Just to be clear, I’m not discouraging you from applying for a position if you’re trying to punch a bit above your weight. Having ambitions is great, trying to gloss over your shortcomings is not. If you miss some skills but still want the job, be open about it. Write about them in a cover letter (see below) and tell them how are you going to make up for them. A good hiring manager will always listen if flexibility is an option.
Step 3: Donts
Frankly, I feel embarrassed at times that people in our profession still do those in 2020. I understand that technologists are often clueless about social norms, but it’s a poor excuse for such behaviours in the job seeking context. Those are usually show stoppers, and 100% preventable.
- Don’t vent about your colleagues and/or boss. It’s a poor form to talk about anyone behind their backs generally, and in an interview setting especially. The way you talk about your co-workers shows the hiring manager how you are going to talk about them and people they care about, when you will be done with their company.
- Don’t make stuff up. If you don’t know something, say you don’t know. A manager is usually really good at reading people, that’s what they do for a living. And in manager’s eyes a person who knows their limits is 10 fold more preferable than the one who are trying to wing it. A honest person is an easy to work with person.
- Don’t give advise unless asked to. Yes, you might be smart and capable, and you might know exactly what the problem is because you’ve done it million times. But, your urge to show off will most likely backfire, because you are going to look arrogant and/or inconsiderate. Even if you are right, talking to a stranger, particularly in business context, is hardly a place to point to someone’s problems.
- Don’t be a stiff. An interview is like a speed date. A manager is trying to figure out if they can work with you. Being a proud introvert is a poor excuse for disregarding social norms. Don’t just barf your well prepared speech about yourself at the interviewer. Ask the person on the other side something about themselves first, something that will make them feel validated as a human being.
- Don’t act entitled. Yeah, you might be a God of X, with hundreds of accomplished projects under the belt. But, it is not a reason to demand a special treatment. Understand that you are one of many candidates, and the manager needs to compare everyone fairly; they need to get you through the same pipeline. Not everything revolves around you. Tell you the truth I send all entitled candidates straight to /dev/null. The reason is simple: hiring a toxic person with a short fuse and a sense of entitlement is way worse for the team than hiring someone with poor skills.
Step 4: Dos
- Learn CS fundamentals. Yeah, I know, you don’t need to know what’s the big-O score for merge sort to paint a button with CSS. And it might sound like a stupid question. The thing is, managers want to ask you stupid questions at times to see how you’re going to react. They are not really asking you about algos, they are asking you if you are going to play ball. Being prepared, tells them that you are serious about the job and going to be dependable as an employee.
- Ask about expectations for the role. This is one of the most effective power moves you can pull off during the interview. Asking about the expectations for the role tells the manager that you are outcomes driven, that you understand the nature of employment, and that you want the best result for both parties.
- Ask about the company. Nobody really wants a detached body sitting in a dark corner of the office “doing their thing”. It is managers job to advance company’s goals. And the best way to achieve that is to hire people who are motivated by those same goals. If you are not showing any interest in what the company does (or god forbid tell the manager explicitly that you don’t care, because you are a specialist) it tells the manager that you are going to be a high maintenance person. And trust me, there are a lot of other things a manager would rather do than give you crap about you doing the wrong thing every few days.
- Write a cover letter. A cover letter worth a thousand CVs. And a good one is ten times more valuable than that. People in technology way underappreciate cover letters. Frankly I don’t really read your CVs, they are a terrible tool for the job; that’s why we even built shortlyster. But a decent cover letter will 100% trigger me to have an interview with you, regardless of what is in your CV. Here is the hint. A good cover letter needs to have answers to the same two fundamental questions. 1. why you think you can do the job, and 2. why you think you are going to be easy to manage.
- Thank the interviewer for giving you a chance. Yes, even if you think you are making them a huge favour by showing up. If you are in US, send them a thank you email, it’s a thing. Someone just spent 1 hour of hard work trying to give you a fair chance at employment, and it is a good idea to validate that. This is what civilised people do, and so should you.
Step 5: If you are junior developer
When you are a junior, interviews can be intimidating. You don’t really have much skills and/or experience, and it is easy to fall into thinking low about yourself. The good news, hiring managers know this too, and they don’t expect a lot. I know it’s hardly comforting, it gets better with time though.
So, if you don’t have experience, and the manager doesn’t expect much, then what is this all about? Well, the short version is “attitude”. The manager wants to understand how passionate you are, how serious you are about the profession, can you work in a team, etc. The shortest way to get a job as a junior developer is to demonstrate to the manager your strong work ethics and desire to learn and grow quickly.
Given that you are a junior, it will be very difficult to fool your way in. You will have the opportunity to act like an entitled jerk once you hit senior, for now just get real with the manager, show them your human side, who you are. That is what they are hiring.
You obviously need to have fundamental skills, like coding, version control, tickets, writing basic tests, etc.
Step 6: If you are a tech lead
If you are interviewing for a tech lead position, expect a lot of non-technical questions. Specifically around processes and leadership. The manager will want to see the level of your maturity as a human being, your self-awareness and emotional intelligence.
For example, one of my favourite things to ask is: why do you want to lead and what is leading anyways? Another one is: what are you like when you are at your worst? How do you disagree? What are your weaknesses?
I’ll give you a hint. Saying that you lead because you have a lot of experience, and your greatest weakness is that you work too hard, are most likely not going to do the trick. Same goes for placeholders like “i like mentoring people”. All of those just tell the hiring manager that you are clueless about leadership and that you will require hand-holding or worse re-training. And then they will go into the cost benefit analysis in their head, which you don’t want them to do.
If you want to nail an interview as a tech lead, you need to demonstrate two things: 1. you can see/formulate goals and align a diverse team around those, and 2. have methods to reliably achieve those goals in non-ideal and constantly changing landscape without succumbing to blaming the circumstances. You have to not just be able to reason about those, but demonstrate that you’ve done this successfully in the past.
Closing remarks
I know it was a lot, hopefully it will leave you with something to think about.
If anything, one thing I would like to live you with is this. The surest way to pass an interview is to stop perceiving it as it is all about you, and start thinking about what the person on the other end actually needs. If you can reliably give them what they need, they will have no choice but give you the job. That is the main point of control you have in this situation.
And most importantly, be open and true. It is the only way for both of you to win at this.