How to prepare a Technical Interview (and why Good Programmers also fail)

October 20, 2019

During the last years as Tech Lead and Principal Software Engineer, I have interviewed more than 100 candidates for a position of Software Engineer. 

In my last post, I mentioned how positive it can be to work for an international startup. However, I didn't mention, that it can be really hard to pass the interviews from these type of startups. In this post, I'll share with you the most common mistakes that candidates make during interviews. I will also show you how to prepare such interviews to maximise the chances of passing them. In addition, I'm going to give you some extra tricks that will help you face these dreaded technical interviews.

First and foremost, I'd like to clarify that performing interviews is a different skill that being a programmer. You can be a good Software Engineer but being bad at passing interviews. Logically, the better you're at developing Software the more probabilities you'll have in passing technical interviews. However, this is not a guarantee that will end up passing most of the interviews for a programmer position.

In my opinion, these are the most common mistakes programmers make during technical interviews:

  1. Getting nervous, because of being afraid of failure. We tend to think that our life or our professional career depends on that interview, on achieving that job. But that's not true! Is okay to fail an interview, what's not okay is not doing interviews and depend upon one single opportunity. Every time you perform an interview you learn a lot. Thus, relax, don't panic! Actually, there is less than 10% of chances to pass a technical interview, so don't set too high expectations. Prepare yourself well in advance, try your best and welcome the result.
  2. Not preparing specifically for the company you're applying for. Every company is different and uses its own interview process. We should investigate as much as possible about the company, its founders, its employees, its business model, its products or services, the technologies it is using and so on. Always have prepared a set of questions that demonstrate you're curious and interested in the company.
  3. Lying or exaggerating experiences. We should be cautious about that. Normally, all the interviewers involved in the interview process will contrast and cross information from the candidate. If they notice inconsistencies you will be rejected directly, with no other opportunity. So, don't put yourself in such a risky position. It's fine to highlight some of your successes but never lie. Be sincere, honest and consistent across all your interviews.
  4. Reacting badly to unexpected questions. For example, imagine you're interviewing for a developer position and you're asked about a systems question. You could react in 3 different ways:
    1. Passively: You say you don't know about it and don't provide much information on why you don't know it and what you know. This kind of answer doesn't help you much.
    2. Aggressively: You mention this is not the type of questions you expect to get asked for a Software developer role and suggest to ask a different question instead. Here you're acting a bit aggressively and this is even worse because nobody wants to work with aggressive people.
    3. Assertively: You say you don't know because you normally don't perform related system tasks and you have a systems team that does these tasks for you. But you can mention you're happy to learn those skills if you'd need to perform a given task.
  5. Talking bad about our ex-manager or ex-colleagues. This is a dark area and it's easy to get in when the interviewers ask directly about it. Never ever speak negatively about someone, not even your company during an interview. Try to be as much objective as possible and find constructive scenarios. Even more, say positive facts about them and what you'll miss if you leave them if that's the truth.

The following are my top personal tips to maximise the odds of passing a technical interview:

  1. The first advice is nice and simple: read my posts and watch my weekly videos. I'll be sharing all that I've learned during my last 15 years as Software Engineer, Tech Lead and Engineering Manager.
  2. The second one is really key to success and applies when you're in front of a computer, doing some live coding or pair programming interview session. Listen: don't use the mouse! And use Vim or Emacs. Professional programmers only use keyboards and these type of editors. You'll impress the interviewers if you combine these two tips. Just remember to practise if you're not experienced with Vim, because it's easy to get into it but not to exit from it.
  3. During whiteboard or pair programming interviews, it is really important to interact with your interviewers, asking them, reasoning your ideas and so on. Sometimes, what they want to see is how you can think and reason, how you approach problems and how you collaborate with them in order to find a solution. Usually, the process of reaching a solution is even more important than the solution itself.
  4. Have into account an interview is a two-way street. Even you're the interviewee, you should interview somehow the interviewers and find more about your hypothetical future team and company. You want to make sure you really fit into that team and that your values are aligned with the company's ones. Show your curiosity and interest in the organisation. Ask technicals questions and also not so technical ones. 
  5. Be prepared to answer behavioural based questions. As mentioned in my last post, nowadays companies don't want to hire brilliant jerks. That's why these "culture fit" interviews are a common practise for most of the current startups. They want to know how you managed various work situations in the past. Basically, they want to assess if your professional values are aligned with theirs. Think about relevant scenarios you have done in the past, positive (e.g about impact) and not so positive (e.g. about failure). It is critical that you answer with specific examples, proving as much detail as possible, but not with generalisms that provide nothing to the interviewers.

To sum up, I'd like to emphasise that doing interviews, like any other skill, require preparation and practise. The more you practise the more possibilities you'll have to ace the interview.

Let me conclude with a personal quote: 

"The most important capacity for Software Engineers is their ability to develop Soft Skills"

Cómo preparar una entrevista técnica (y porqué buenos programadores también fallan) [in Spanish]

You Might Also Like