
What is the best way to interview software developers?
Recruiting good software developers can be a challenge for many software development companies. To get the best out of the interview process, it’s important to have the right method and questions. In this post, we’d like to share HDWEBSOFT’s experience and tips on interviewing software developers in a friendly way. Whether you’re a developer, tester, IT specialist, or HR specialist, we hope our advice can help you find the perfect developer for your team.
To help, I’ve looked around to see what other companies do during their interviews and have found some great resources. One that I particularly like is Chuck Groom’s Software Engineer’s Guide to Interviewing Software Engineers. Also, there are some helpful articles sharing similar experiences, such as Developer Job Interview Questions. These resources provide a friendly and helpful tone to ensure the best interview possible.
- 1) The audience
- 2) Define your criteria
- 3) Greetings with an open approach
- 4) Checking candidates’ communication – the best way to interview software developer
- 4.1) Can they explain clearly what they’ve done before?
- 4.2) Can they understand a topic we explained to them and turn it into technical specifications?
- 4.2.1) Example 1: A very simple question for fresher
- 4.2.2) Example 2: In combination with a popular algorithm
- 4.2.3) Example 3: For a PHP developer (and also useful for any back end or full stack position)
- 4.2.4) Example 4: For a full-stack developer
- 4.2.5) Example 5: A quite interesting technical problem (that’s not common in normal applications)
- 4.2.6) The best approach to interview software developers – In conclusion
- 5) Checking the candidate’s actual level
- 6) Checking candidate’s potential
- 7) The conclusion – The best way to interview software developers
- 8) Related posts
The audience
This post is useful for the technical audience who can apply the following practice. Otherwise, this post is quite hard to understand for a non-technical person.
Define your criteria
To figure out the best way to interview software developers, each company has its own set of criteria. They use that to determine who is a good candidate for a software engineer position. Unfortunately, this table of criteria has a lot of variations. In the scope of this post, I may have a list of the most crucial ones.
- Communication is HDWEBSOFT’s most important criterion. It is mentioned in The most important skill of a software developer – Communication.
- Candidate’s actual level: What they can do at the current moment?
- Candidate’s potential: What they can become next month, next year, next 2, 5, and 10 years?
Greetings with an open approach
Before starting an interview, we always let them know about our open approach. We can keep the candidates calm by telling them:
Don’t panic! Nobody knows everything. So, it doesn’t really matter what you are actually equipped with. More importantly, it is to determine if you can collaborate with us to solve the problems.
Checking candidates’ communication – the best way to interview software developer
The best way to interview software developers is to test the candidates’ communication skills. This is not a separate part of the interview. Instead, communication skills will be performed throughout the interview.
HDWEBSOFT is an Offshore Software Development Company. Additionally, our clients are across the world. That’s why our developers’ communication skills will be a couple of times more significant.
In communication, there are a few threads to evaluate software developer candidates:
Can they explain clearly what they’ve done before?
A tricky question to interview software developers is asking them to show what they have done/achieved.
There are a few pretty simple forms we can use:
- What is your favorite project?
- Who will use your product? What is the benefit for them?
- What are the outstanding technical points you can capture from that project?
- and so on.
And the expectation is an answer that is as optimized as possible. To be specific, their answers need to be short, and clear and they should focus on the main points.
I don’t expect to have an endless speech with every single detail of technical specifications. Instead, what I need to evaluate here is the ability to pick up the key points.
This is valuable for the evaluation of candidates. How can they do a good job if they have no feeling about what they’ve done before? And on the opposite side, those who can capture the previous project have more potential to capture the upcoming ones.
In conclusion, this kind of question helps evaluate candidates in 2 aspects:
- Can they understand a project well?
- Can they pick up the key points (this is an indication of good abstract thinking)? I will have a new blog post on developer abstract thinking very soon.
Can they understand a topic we explained to them and turn it into technical specifications?
This part of the interview will give them a few simple requirements and work with them to find out the solutions. The complexity will depend on the candidate level and what they are already equipped with experience.
Here are a few examples. Besides, I have a lot more good questions to interview software developers. I will share them in a later collection.
Example 1: A very simple question for fresher
Question: It’s now 1 AM in New York, what’s the time now in Vietnam?
The scenario is if they can’t have an immediate answer. I will allow them to ask meaningful questions that may help them figure out the answer.
If they know the formula, they just don’t know the timezone of NY. Their proper question should be “What is the time zone of NY?”.
If they don’t know the formula (maybe their geography subjects are not good). I will let them know the NY time zone and VN time zone. I also let them know the meaning of “UTC+7” is “7h ahead from the standard time”, and so on.
Example 2: In combination with a popular algorithm
Question: I have a sorted array with 1000 items. I want to check if a value exists in that array. How many checks must be done in the worst case of a binary search algorithm?
If they forget or have no sense of the binary search algorithm, I will explain how it works. If they can catch up with my explanation, then calculate to give the result, that’s fine.
Example 3: For a PHP developer (and also useful for any back end or full stack position)
Question: Forget PHP Session, what will you do if you need to write your own library to do the same thing as PHP Session?
This is quite a difficult question for PHP developers, even at the middle level. The scenario is the same, I will explain how PHP Session works if they forget or are not sure about that.
This is a classical good method to interview software developers (both PHP and non-PHP). Nowadays, PHP developers are working on high-level frameworks a lot. They are CakePHP, Laravel, Symfony, and more. They may have underestimated this crucial topic.
Example 4: For a full-stack developer
Question: What will you do to develop a regular e-commerce shopping cart and checkout?
The story will keep going in a similar way. For this question, we have a few variations then. If they are very good with the main question, I can have an extended one. That is if a product has an inventory count. What can you do to ensure the buy quantity never exceeds that limitation?
This approach is very good to interview backend and full-stack software developers. How they exploit the problem will define their respective level.
Example 5: A quite interesting technical problem (that’s not common in normal applications)
Question: I have an admin page with a list of products. What can you do to make sure when a product edit page has been opened, no one else can access that edit page?
This story is almost about using locking practice. That’s great if they can immediately give me the answer. Otherwise, I will lead them to the story of the “user registration feature” where they can’t create 2 users of the same email at the same time. And ask “Can the same practice be applied to the case?”.
This approach/question is very good to interview backend and full-stack software developers. How they exploit the problem will define their respective level.
The best approach to interview software developers – In conclusion
So, you can see almost from my example, I create a scenario that leads to 2 situations:
- If the candidate can answer fluently, they are already very good at that topic.
- If they can’t (and that’s my expectation). Then, I will work with them to find the answers. During that time, they need to ask valuable questions and understand my answers to figure out the resolutions.
In conclusion, this kind of question helps evaluate candidates in all 3 aspects:
- Their communication (Can they make good questions? Can they understand my clarifications?)
- Their actual level (e.g the complexity of the tasks they have done before)
- Their potential (Can they be a problem-solver or they should keep working with repetitive boring work?)
That’s why this way of making questions is the best approach to interviewing software developers. We can compress a lot of tests based on multiple criteria at the same time.
Checking the candidate’s actual level
I should not spend time on this topic, it’s very well-explained by so many articles on the internet. Each major has its own list of questions. Java has one. .NET has one. Python has one. And the same stories are for iOS, Android, React Native, Nodejs, Reactjs, Vuejs, JavaScript, and CSS.
To find them, just come up and use Google. There are a lot of good methods to interview software developers out there in terms of expertise specification.
Checking candidate’s potential
This is even more important in the way of interviewing software developers
If the candidates’ actual level weight is 1, the candidates’ potential weight should be 10. That is why we need to have a good method to interview software developers to evaluate their potential.
The style of questioning in the “Can they understand a topic we explained to them and turn it into technical specifications?” section is good to identify a potential candidate. This section will extend that topic with a few standout additions.
Better education, more potential
In software engineering, a good software developer may not be trained or educated by a famous college or university. However, it is certain that one who graduated from a better college will have a better background. At the present time, that may not be an advantage. But in a long race, the one with a solid foundation can run longer and faster.
Better background knowledge, more potential
Education is not the only way to evaluate the background of a software developer candidate. Instead, we can rank higher for the candidate who is:
Mastering Data Structures & Algorithms
What is the best approach to interviewing software developers in terms of fundamental knowledge? It’s exactly the Data Structures & Algorithms.
Nowadays, application developers often underestimate this part. They put concentration on high-level application development. They are Java Spring, .NET Framework, Nodejs, Python, PHP, React, Vue, and more. This is understandable. But, this is not very good for software engineers on their career path. That is why HDWEBSOFT values solid knowledge of Data Structures & Algorithms.
Mastering Programming Techniques
Basic programming techniques are the main criteria. Besides, SOLID principles are what HDWEBSOFT expects from all developers.
Mastering OOP, Design Patterns, and UML
What is a good method to interview software developers about OOP? It’s mostly about OOP, Design Patterns, and UML.
Nowadays, I can see everyone uses OOP. But, it’s very difficult to find a developer with solid OOP programming techniques. Everyone can replicate the definitions of “abstraction”, “inheritance” and “polymorphism”. But, it’s not easy to find one who can answer this question. Do you believe that you can point to any line of your code and tell the principles expressed by it?
I’m also very impressed with someone who has mastered 5 or more OOP design patterns. Without a doubt, he will have more potential to go further than the other ones. Design patterns are not just recipes to solve common OOP problems. It also contains useful structure and meaning of the code. It’s a communication channel for us to understand other people’s code as well as the 3rd party libraries.
The conclusion – The best way to interview software developers
What is the best way to interview software developers? It’s an endless story. To hire good software engineers for your company, we need to qualify them. We do that by using different types of questions. Firstly, we use professional questions to verify the candidates’ actual technical level. Secondly, we use the IT fundamental questions to check their background and ability. Finally, we use complex questions to verify their communication as well as problem-solving and adaptability.
We have good interview questions for software developers. That helps HDWEBSOFT to hire good engineers. HDWEBSOFT team is well prepared for not only the immediate needs but also very well to open future doors.