In the last year at my Job, I was fortunate that my organization asked me to Interview some candidates. But I am a noob and I didn't knew (I still don't) how to interview someone. So I read a bunch of online articles, talked with a lot of interviewers and during that research I took notes. And here I am making it public. Feel free to contribute your thoughts. Feel free to point out errors.

How to Interview (notes) (TL;DR)

  1. Introduce yourself, make them confortable, you wan't to sell your organization, Be nice
  2. Don't try to prove that you are better than the candidate
  3. Candidates might not speak english very well but they can code, and otherwise 😁
  4. Don't focus on the answer, focus on the thought process
  5. Just ask questions and ask follow up questions
  6. Define earlier what are you looking in a candidate
  7. Take notes
  8. You can cut off redundant discussions
  9. Don't waste time on basic, stereotypical questions (Like, Tell me something about yourself?)
  10. Don't dominate the conversation
  11. Don't find a friend, find a candidate
  12. No Emotional attachments and decisions
  13. Check if this candidate is same or better than the current engineers on the same position?

How to Interview(TS;WM)

Preparing as an interviewer

  1. Be on time. If late, apologise for being late.
  2. Don't have a bias (good or bad) for a particular candidate based on his resume/college/past companies etc.
  3. If someone else took an interview before you, don't ask whether the candidate was good or bad. Since that creates a bias too, only ask for list of questions asked before.
  4. Ensure you don't ask the same questions which the previous interviewers have asked. It is a bad experience for the candidate.
  5. Remember, you are representing the company in these interviews. The candidate will judge the company and the team based on this overall experience.

During the interview

  1. Give a short intro about yourself first, tell him/her about the team and the challenging work we do here.

  2. Be friendly with the candidate.

  3. Start with a warm up question or something related to the candidate's resume. It helps the candidate get comfortable with you.

  4. For phone interview, go through the candidate's resume and try to ask some questions related to his work so far. Example - if he/she has worked at Uber, then ask a question on location tracking etc. This is good to do because it allows the candidate to play on his/her strengths.

  5. Always try to ask follow up questions and try to go as deep as possible. Asking short questions again and again seems like a college viva and it is not a good experience. Example - "How do we make searching in SQLite efficient?" Follow ups - "How are indexes implemented internally?", "What is a B-Tree?", "What is a height of a balanced B-tree?", "Is there any other DS that can be used to implement indexes?"

  6. Your questions can also include some open ended questions like "What all happens behind the scenes when you enter a url in a browser?". Here, we can assess the breadth of the knowledge.

  7. At the end, always ask the candidate if he/she has any questions for you.

Post interview (Feedback stage)

  1. It's okay for the candidate to not know some implementation details or things that can easily be googled. But fundamental knowledge of concepts is the most important.
  2. Apart from technical knowledge, also judge the candidate on soft skills - communication, leadership qualities, culture fit etc especially for a senior role.
  3. Write the positive and negative points for the candidate. Try to be as objective as possible here.
  4. The negative points can be useful to give feedback to the candidate in case he/she is rejected by the recruitment team. So just be mindful of that.
  5. If you're confused about whether to pass a candidate, it's most likely a no. If however, you think that you don't have enough data to judge the candidate fully, ask the recruiter if a re-interview is possible, it should be fine.