I've interviewed new grads looking for their first software engineering role. It seems like yesterday that I was also on the job hunt, so being on the other side of the table was a surreal experience. It's given me a new perspective on what companies are looking for. During these interviews, I've noticed some patterns that candidates fall into. In this post, I'll be discussing some that could make or break the interviewer's final decision.
Here are the mistakes I've seen new grads make during their technical interviews.
Interviewers expect the candidate to have questions after reading the prompt. A common mistake is immediately jumping to code a solution. Not only will this lead to confusion later, but mistakes are more likely to happen and that will cost time. This also signals that the candidate has poor communication skills.
Spend a few minutes to ask clarifying questions. This may seem like a waste of the small amount of time you have to get a working solution. However, that's not the case. Asking questions can reduce potential mistakes. This can also impress your interviewers. This shows how you collaborate with others and you're able to understand business requirements.
It's awkward for the interviewer if you sit there in silence. If you don't communicate what is going through your head, then you can't prove that you deserve the software engineering role. It's better to say every thought out loud because that's the only way the interviewer can know your thought process.
To confirm that you understand the problem, repeat it in your own words. You can list out some examples of expected inputs and outputs, but if you can't think of any then that's okay. You can ask for examples from the interviewer! Ask all your clarifying questions. Be sure to confirm any assumptions you have. You can do this by double checking with the interviewer if it's safe to assume things or not. It may feel weird at first to talk out loud while coding but it'll feel natural after some practice.
I recommend learning and using the UMPIRE method by CodePath.
Usually, a candidate can pick what programming language they want to code in. I've seen candidates use a language and not understand why compiler errors would appear. This causes frustration and confusion for the candidate, which can hurt their performance. I've also seen a candidate blame the compiler instead of debugging what went wrong. This shows the interviewer that you're not able to debug an issue or handle problems well.
Study up on your language and practice problem solving without autocomplete enabled in your IDE. Make sure you know how to explain why you chose this specific data structure versus others in order to solve the challenge.
For more information on picking a language, read this amazing post in the Tech Interview Handbook on the pros and cons of using Python vs Java during an interview.
Not asking your interviewer(s) questions is a missed opportunity. You're depriving yourself of interviewing the company and seeing if this role is a right fit for you. Also some people may view this as a lack of interest in the position.
Prepare a list of back up questions if you have nothing to ask. This is something you may benefit from without you realizing it. You get to pick the brains of engineers who are in the place that you want to be. And your interviewers are more than happy to share their experiences with you.
Here are some great examples on what questions you can ask for greatest impact.
I must admit that I once made these mistakes when I was looking to start my career. It's taken me a lot of practice, and a lot of rejections, to improve my technical interviewing skills.
I can confirm it's true when they say your interviewer(s) want you to succeed. We'll give hints and we'll debug the compiler error with you. I get excited when a candidate is on the right track and I'm happy to give a hint or two if I need to. Technical interviewing is a nerve wracking experience but it gets better with practice. There's no growth in comfort so let's use our mistakes to make ourselves better.
Let me know in the comments if you've seen any other mistakes I haven't touched on!