How To : Improve Communication


How to improve communication during an interview.

Software engineers typically have a stigma of being awkward or lacking communication and teamwork skills, but that doesn’t always have to be the case. Most of the time, interviewees struggle to properly convey their ideas and solutions. Lets dig into how you can beat this stigma and avoid common struggles.


Make it easy for the interviewer to follow along



The biggest mistake that candidates make is that they are unable to provide clear and digestible explanations of their previous work to their thought process as they work through a technical problem.

Similarly to giving a speech, the approach of ‘tell them what you’re going to tell them, tell them, and then tell them what you told them’ is a fantastic method to communicating with your interviewers overall. It provides a systematic way for them to follow along and know what to expect. Not only will you’re interview seem more structured but they’ll know exactly where in the process you are to the solution they know, so that they can now help you when you’re stuck.

Make it logical and don’t jump around all over the place.

Let’s say the interview question is to check if a tree is balanced. You would logically begin by working through some examples and discussing the step by step process as to how you would analyze the tree. You should not just jump to some recursive case, or conditions without having explained how you got there. If you’re worried you have a great idea on how to solve the problem, make a note on the whiteboard or tell your interviewer “I need a minute to gather and write down some thoughts”. That should give you some space to then clearly say “I would first make sure I have a valid tree input of a node and then check each node’s children and ensure they are balanced” and go into detail with your solution step by step.

Importance of Whiteboarding

For any technical interviewer it is imperative to use a whiteboard while you are working through the problem. Working through examples on the board by hand give you and the interviewer visuals and a better understanding of how you’re solving the problem. Not only does this give you another approach to solving the problem but the interviewer who is essentially testing what it would be like to work with you can now clearly see how you express your understanding, thoughts and approach. When it comes time for coding the solution up you’ll want to be able to reference any sketches or problems you solved as well as writing up clean code. The code you write is going to be a big indication of your software engineering skills. Do you break up long and confusing functions into smaller helper functions? Do you try to solve the bigger picture and link up all the parts or do you get distracted but less important aspects of the task at hand? These are all important questions the interviewer will come to answer as they evaluate you, as such, whiteboarding is an important tool and skill.

How do I know if I’m whiteboarding correctly or well?

As with any skill, it takes diligent practice. Whiteboarding with peers during mock interviewers is a fantastic way to get practice so that you can master whiteboarding.

That sounds great but how can I even practice? I have no friends!

A great resource would be to use pramp.com or join a computer science club at your school. Pramp is a free online service that connects two candidates to mock interview each other. This will be an invaluable resource for you to practice interviewing with many software engineers from various background and get plenty of feedback on how well you’re able to talk through your solution, work through examples and write up code. You’ll face a variety of difficulty in questions, interviewers with different interview styles, and what your interview style is.

Overall, whiteboarding is such an effective method to couple with your explanations to provide the interviewer visuals so that they can create a mental map of how you solved the problem and for them to follow along step by step.


Avoid a rabit hole solution


Oftentimes in a technical interview we find ourselves jumping to implement the first solution to a problem we get and don’t consider the impacts or what goes into that decision, this makes it difficult for the interviewer to understand how and why you came to this conclusion. Would you pick the first solution you thought of on the job and push that to production?

Tradeoffs and Alternative Approaches

Many problems can be solved numerous ways and although they may have a “most efficient” or “fastest” solution, there are always pros and cons of each solution. Instead of jumping to the first solution you see, it is beneficial to try to think about an alternative approach (unless the solution you have is perfect) and discuss benefits of the possible approaches you have. If you can’t come up with an alternative approach at the beginning, it is good to discuss in what cases your solution is great, and where it can be improved and revisit it if you are strapped for time.

Roadblocks during a solution.

Eventually you will come across a situation where you hit a roadblock and get stuck in your solution or you need to adapt it to a more complicated problem. This is a great indicator of how you’ll behave and perform on the job and is important to showcase your skills. Don’t just give up, take some time to revisit your steps on how you got to your current solution to remember your approach or where you may have forgotten some important information. Be sure to clearly talk through the steps and how they are related to each other. If you’re still stuck, phrase it as a question to the interviewer, that’s what they’re there for and they want to help you. For example : “I know I want to make a helper function to sort my data but I’m struggling on the sorting pattern”. Although it is a simpler example the interviewer may give you more information to clarify the solution or may allow you to assume parts of code already exist.

Maybe you’re just hung up on a really specific detail, be sure to mention this. For example : “I’m just confused on how to handle the input when the last two digits of the array are 0 because it could lead to an error”. This at least gives the interviewer insight as to what you are thinking about and provide you with some room to think out loud. Again the interviewer may give you some help or guidance that you didn’t have before or didn’t consider.


Summary

Improving communication during your interviews can be done through several methods. The goal is to make it easier for your interviewer to follow along and clearly understand your methodologies and thought process. Be sure to utilize the whiteboard and talk out loud about the pros and cons you have when picking a solution to code up. When you get stuck, retrace your steps and don’t be afraid to ask a question - interviewers love giving you help, take advantage of that.