What is the best way to interview software developers?

Best way interview software developers

What is the best way to interview software developers?

How to recruit good software developers has been a headache issue for every software development company. The appropriate interview method can solve this issue. However, what is the best way/method to interview software developers? What are the sorts of good questions that should be used in interviewing software developers? This post is going to share HDWEBSOFT’s experience to solve those questions.

First of all, I looked around to see what other companies did in their interviews. I have found and learnt a lot. Among them, I really like this article Software Engineer’s Guide to Interviewing Software Engineers. In that post, Chuck Groom’s experience is really helpful. Besides, I have found a few helpful articles sharing similar experiences with us. For instance, Developer Job Interview Questions.

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.

  1. Communication is HDWEBSOFT’s most important criteria. It is mentioned in The most important skill of a software developer – Communication.
  2. Candidate’s actual level: What they can do at the current moment?
  3. 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 calm the candidates 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 testing 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 most favourite 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 as optimized answer as possible. To be specific, their answers need to be short, clear and 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 candidate evaluation. 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 on 2 aspects:

  • Can they understand a project well?
  • Can they pick up the key points (this is the indication of a 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 (experienced).

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 1AM 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, 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 about 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 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 application)

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 for 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 the 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, understand my answers to figure out the resolutions.

In conclusion, this kind of question helps evaluate candidates on 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 works?)

That’s why this way of making questions is the best approach to interview software developers. We can compress a lot of tests based on multiple criteria at the same time.

Checking 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, 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 “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 by a few standout additions.

Who has better education who has 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.

Who has better background who has 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 interview 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 a software engineer on their career path. That is why HDWEBSOFT values solid knowledge of Data Structures & Algorithms.

Mastering Programming Techniques

The basic programming techniques are the main criteria. Besides, SOLID principles are what HDWEBSOFT expects for 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 the 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 the 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 the future doors.