What is the Best Way to Interview Software Developers?
Recruiting good software developers can be a challenge for many software development companies. It’s important to have the right method and questions to get the best out of the interview process. 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, some helpful articles shared 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 and turn it into technical specifications?
- 4.2.1) Example 1: A straightforward 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
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 can they do at the current moment?
- Candidate’s potential: What can they 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 for software developers is whether they can 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. Specifically, their answers need to be short and clear, and they should focus on the main points.
I don’t expect an endless speech with every detail of technical specifications. Instead, I need to evaluate 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? On the other hand, 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 and turn it into technical specifications?
This part of the interview will give them a few simple requirements and work with them to find solutions. The complexity will depend on the candidate’s level and what experience they are already equipped with.
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 straightforward 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 to help them determine the answer.
If they know the formula, they don’t know the timezone of NY. Their proper question should be, “What is the time zone of NY?”.
Suppose 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 do not understand the binary search algorithm, I will explain how it works. If they can catch up with my explanation and 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 library to do the same thing as PHP Session?
This question is quite difficult for PHP developers, even those with a few years of experience. The scenario is the same; I will explain how PHP Session works if they forget or are unsure about it.
This is a classical method for interviewing 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 similarly. 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 for interviewing 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 the resource-locking practice. It would be great if they could immediately give me the answer. Otherwise, I will lead them back to the “user registration feature” story, where they can’t create two users of the same email simultaneously. And ask, “Can the same practice be applied to the case?”.
This approach/question is excellent for interviewing 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 from my example that I create a scenario that leads to 2 situations:
- Candidates who can answer fluently 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 must ask valuable questions and understand my answers to figure out the resolutions.
In conclusion, this kind of question helps evaluate candidates in all three aspects:
- Their communication (Can they ask 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 should they keep working with repetitive and boring work?)
That’s why this way of asking 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 list of questions. Java has one. .NET has one. Python has one. 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 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 for identifying 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, one who graduated from a better college will certainly have a better background. At present, 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 regarding fundamental knowledge? It’s exactly the data structures and 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 the data structures and 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 tough 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 you can point to any line of your code and tell the principles it expresses?
I’m also very impressed with someone who has mastered five or more OOP design patterns. Undoubtedly, he will have more potential to go further than the others. 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 and third-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 must 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, problem-solving, and adaptability.
We have good interview questions for software developers. That helps HDWEBSOFT to hire good engineers. The HDWEBSOFT team is well prepared for immediate needs and to open future doors.