How I conduct Coding Interviews
I have been fortunate to get to the other side of the table and ask questions and discuss topics with smart minds in the industry.
While some people think interviewing is fun, some think it is a tedious process while a few believe it is sort of overwork above and beyond our day jobs; but I think interviewing is a responsibility and self-reflection.
It is a responsibility since it involves crafting the future of 2 entities; the interviewee and the company they are interviewing for.
A good candidate if comes onboard can make fortune to the company and in-turn can be rewarded, thus making a good career for themselves.
I also believe it is a self-reflection as those couple of hours of discussions opens up so many new ideas and viewpoints that make you think that there is still so much more to learn.
An interviewer is also a human being and does not know everything. Even they thrive to learn every day and challenge themselves to stay relevant in the industry.
You stop growing the day when you start believing that there is nothing more to learn.
Mohit Malpani
There are certain things that I have gathered by interviewing that I would like to share:
1. Brief Introduction
It is always good to have a quick formal introduction with one other. This gives both the sides of the table a good start and a chance to have some small talk. This usually uplifts the candidate’s confidence as they get comfortable talking to the interviewer. A good greeting will make the candidate feel welcomed at the new place.
We can use simple ice breakers like:
- How has been the day for you today?
- Where did you work before and what was your profile?
- Where did you travel recently? How was it?
2. Brain Teaser
A coding interview involves a lot of thinking and brainstorming. A good candidate must have this skill of thinking both inside and outside the box. A simple puzzle or brain teaser can set the momentum of the interview. The puzzle should not be too difficult. It should take no more than 5 mins to solve. It should be something simple that requires basic aptitude to solve and not some special knowledge.
There are lot of online resources that hosts a plethora of such brain teasers with solutions.
3. Discuss Interests
People have personal interests in technology, sports, business etc that they like to talk about. A few minutes of insights into their interests gives the interviewer a lot of hints about the question they can ask for the final section of the coding interview. Sometimes, it is good to ask a question that revolves around a field that interests the interviewee.
4. Open-ended coding question
This part compromises 90% of the interview discussion. There are many sorts of coding questions available out there that are ideal for discussion for over 1 hour. However, closed-ended questions are very mainstream and do not give enough room to get experimental.
An open-ended question will give the problem new dimensions and new thoughts. We can always expect the introduction of unusual situations and scenarios as we discuss the problem and its related segments.
A classical example of this is a problem which I like a lot: Design a Compression Algorithm for a string input.
This problem can get interesting with inputs that contain both lowercase and uppercase character. I may or may not care about the case grouping, or maybe I want that control to be passed as another input parameter. How about numbers being present in the input string?
What if we have special characters as well embedded into the input too?
The input may be sent as a stream of data at a later stage! How to handle that?
A simple problem can get wild based on one’s imagination. The core part of the interview process is to bring out those wild thoughts and prepare a solution for all those scenarios which one can foresee.
5. Dry Run
A quick Dry Run over the code written by the candidate can give us more insights into any potential errors and missed cases. This also gives a chance to refactor any part of the code, or even optimise the solution.
6. Tests
Any coding question is incomplete without relevant tests. The candidate must think all kinds of probable tests on their own, including edge cases, invalid inputs, large scale inputs etc. The tests highlight the integrity of the solution. However, the kinds of tests chosen showcase the imagination of the interviewee to foresee different situations.
If the interviewee is exhausted with tests, its the interviewer’s responsibility to discuss and bring up any missing ones.
7. Hidden Weapons
There should always be some hidden that we need to keep at the back of our mind to get experimental with the problem. An open-ended problem can have various enhancements, follow up questions and even twists and turns.
A healthy discussion will encourage more of these hidden weapons to come to light and discuss additional probabilities of the question.
8. Closing
The interview usually ends with a retrospective of the whole discussion. The interviewer is to ask for any feedback from the candidate. Any questions or doubts from the interviewee are good to be answered at this time. It is observed that if the interview goes well, the candidate will show some interest and ask a lot of questions back to the interviewer like:
- If I join, which team will I be a part of?
- What kinds of technology are being used within the company?
Additional:
1. Smile
A smile goes a long way. It gives a positive vibe in the room and also makes the interviewee less nervous in the whole process.
2. Use Whiteboard if possible
Using pen and paper is good but a Whiteboard is better. Instead of sitting and looking down at a small paper on the table, it is better to stand up and use the whiteboard at your disposal. A standing posture creates an energy in the room and usually churns thoughts better towards the discussion.
Additionally, it gives both the interviewer and interviewee together to be a part of the ongoing coding problem by occupying the length of the board at the same time. Whiteboard also helps us to make changes quickly without any scratches as we do on paper.
A good coding interview comprises of a healthy discussion and pair programming rather than just one-way questioning.
3. Empathise
The interviewee is usually always nervous since they have something at stake. The interviewer must understand this and try to be empathetic. The interviewer must guide the candidate at relevant places if they get stuck at any point. The interview has an agenda and they must together stick to a defined track and honour the clock by not diverging much from the topic.
4. Pay Attention
Detail needs to be observed every second. Both Verbal and Non-Verbal communication skills are necessary to identify talent. To be a good interviewer, one needs to be a very good listener and must think on their feet to be able to ask all relevant questions during the interview itself.
5. Make notes
It is preferable to pen a few notes about the discussion or the candidate during the interview. It helps to recollect any information required for wash-ups with other interviewers at a later date.
Wrapping up
Every day is different and everyday is a new beginning that brings us new learnings to us. We are here to learn from one another and help one another at all times. I hope to progress in this field more and share the knowledge gained over the process.
2 Replies to “How I conduct Coding Interviews”
Very well Summarized Mohit Malpani 😊👏
Thank you Vishnu for the appreciation!