How to prepare a technical interview (and why good programmers also fail)


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 mention 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 the candidates make during the interviews. I will also show you how to prepare these interviews to maximize 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 changes will 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 the technical interviews:


  1. Getting nervous, because being afraid of failure. We tend to think that our life or our professional career depends on that interview, of 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 changes to pass a technical interview, so don't set high expectations. Prepare yourself well in advance, try your best and welcome the result.
  2. Not preparing specifically for the company we'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 such an interview will contrast and cross information from the candidate. If they notice inconsistencies you can be rejected with no other opportunity. So, don't put yourself in such a risky position. It's okay 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 and don't provide much info on why you don't know it and what you know. This doesn't help you much.
    2. Aggressively: You mention this is not the type of questions you expect to get asked for 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 kind of aggressive people.
    3. Assertively: You say you don't know because you normally don't perform related system tasks because you have a systems team that does that for you. But you 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 or 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 to pass 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 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: do not use the mouse! And use Vim or Emacs. Professional programmers only use keyboards and this kind of editors. You'll impress your interviewers by combining 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 programing 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 the way you can think and reason, how you approach problems and you collaborate with them in order to find the solution. Usually, the process of reaching the 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 if 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 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 and proving details, 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 developer soft skills"
Cómo preparar una entrevista técnica (y porqué buenos programadores también fallan) [in Spanish]


from Hacker News https://ift.tt/2P3IQmd