To prepare a coding interview, it’s always better to know what particular skills interviewers are looking for.
With a clear understanding of the skill set, you are able to know more about your shortcomings and the preparation process can be more focused and specific.
When I asked people if they know what are most important software engineer skills evaluated in an interview, majority only has some vague ideas or no idea at all.
That’s why I can’t wait to share this blog post about 5 most important software developer skills in an interview. When talking about the similar topic, most people tend to describe very vaguely like intelligence, which is both too general and hard to work on improvement.
Instead, I’d like to put everything in detail and make it very clear to help you be more aware of an interview and yourself.
Skill #1 – Computer science fundamentals
I put this at first as this is definitely the No.1 software developer skill most interviewers are looking for and what most candidates failed by.
It’s worth to note that when I say computer science fundamentals, I’m not talking about something like being familiar with specific languages or being an expert of a front end framework. Instead, it’s really about those very basic and fundamental stuffs like data structure and algorithm.
Although it sounds like cliche as I’ve emphasized so many times about this, more than 90% candidates failed by the same reason.
If you are not confident about this point, you should really go back and review your textbook. You shouldn’t start working on any coding question before you have a good grasp of those basic concepts, which are the foundation of all coding interviews.
Things interviewers are looking for may include:
- Whether candidates have a clear idea of what each data structure/algorithm is
- Whether candidates know pros and cons of those data structures/algorithms and know exactly when to use which of them
- Whether candidates can do big-O analysis without any difficulty
Skill #2 – Coding skill
As a software developer, a big part of your daily work is coding. As a result, coding skill is very important in an interview.
I know that a lot of people are quite afraid of writing code in an interview, but to be honest with you, I can hardly come up with any company that doesn’t require coding in their interviews.
Most of the time, you will be required to write down your solution on a whiteboard. Remember that it’s not pseudo code. In some extreme cases, you may also code on online platforms that will compile your code.
7 Simple Ways to Improve Code Quality In Interviews talks about this topic in details by providing several practical advice. In a nutshell, you should really care about your coding style, code efficiency and of course whether your code works or not.
Skill #3 – System design
This is a very important skill that differentiates junior and senior engineers.
When you are working on real life projects, you usually need to spend a lot of time on designing the whole framework. You should be able to have a high-level idea about the system and plan well for all details in advance. Usually, there are quite a few factors you’ve got to take into consideration like efficiency, maintainability, cost, engineer time etc..
Of course, working experience plays a critical role in this area. But even for new grads, system design skill will still be evaluated during interviews although the expectation might be lower.
This tutorial has a great summary of this topic. The most effective way to improve is through working on projects because most of your ideas about system design are coming from problem solving. In addition, learning from how existing systems were built is also recommended. http://highscalability.com has a lot of good articles about how real world systems are designed. It might be a little overkilled for system design interview, but it’s always good to know about them.
Skill #4 – Problem solving skill
I know it sounds really vague when talking about problem solving skill. However, I’d like to break this down to make it very clear about what most interviewers expect from candidates.
By definition, problem solving skill evaluates how well a candidate is able to provide solutions to a new problem. A common misunderstanding is that only the solution matters.
However, the whole process is the core. From some perspective, you are observed and evaluated from the beginning when you face the new problem to the end when you finish your solution.
Few points I’d like to highlight here include:
- Define the problem. In many cases, the question is not well-defined or ambiguous, you are expected to define and clarify the question so that everyone knows exactly what needs to be solved. This is important as real life projects are usually open ended and unclear, engineers should definitely clarify everything before working on them.
- Analysis. When facing a new problem, you are not expected to come up with a solution immediately. However, interviewers will observe how you analyze everything. It’s usually better to have a clear mind instead of generating random thoughts (unless it’s brainstorming). And you should be quick to react based on certain hints, for instance, you are expected to think about hash when talking about storing data.
- Initiate and compare solutions. What solutions will you provide? How do you compare each of the solutions? How do you optimize them? As an interviewer, I really like to ask candidates to compare different solutions, which is a great way to evaluate whether they have a clear understanding or not. Also, when working on real life projects, it’s quite common to have multiple options and you always need to make a decision based on different situations.
Skill #5 – Communication skill
Communication is one of the most important soft skills interviewers are looking for.
Similarly, people are talking a lot about how important is communication skill. However, no one makes it clear what communication skill is about and how to improve it.
I’d like to limit the scope to only software engineer interview. Here are few things about communication are worth to mention.
First and foremost, interviewers usually have a general impression about your communication skill after the whole interview session. One of the most common warm up questions is to describe your background and past experiences. Some candidates tended to make the introduction quite messy like hard-to-understand descriptions, too verbose and so on.
Secondly, how you explain your ideas is also very important. When analyzing the problem, you need to explain your thoughts even if there’s no concrete solution. After finishing the code, you’d better illustrate each line of your solution and make sure that the interviewer understands everything.
Believe it or not, communication skill is not something you are born with. Instead, it requires a lot of practice to improve.
Few tips here:
- Prepare well for your introduction. It’s like your elevator pitch and you’d better keep practicing and refining.
- Keep talking while thinking. You should do this throughout your preparation.
- Have mock interviews. Gainlo is absolutely worth to try.
If you are not confident with any of the above point, instead of always saying that I’m not good at certain areas, write down a list of action items to help you improve.
This is exactly why most people say communication is important, but no one is actually working on improving it. Everything should come with certain action items, otherwise, you’d better just forget about it.
If you love this article, I’d really appreciate if you can share it with your friends 🙂