What is the best way to interview software developers?

--

How is the best approach to interview software developers?

How to hire good software developers? This is the headache of every software development company. Before hiring, we need to interview the candidates. What is the best way/method to interview software developers? What are the good questions that should be used in interviewing software developers? This post is going to share HDWEBSOFT experience to solve those questions.

First of all, I have done a few looking around to see what other companies or individuals do in their interview sessions. I found and learnt a lot. From what I’ve found, I really like this article Software Engineer’s Guide to Interviewing Software Engineers. In that post, Chuck Groom’s experience is really helpful. In addition, I found a few helpful articles that share similar experiences with us, for instance, Developer Job Interview Questions.

The audience

I think this post is useful for the technical audience, who can very well apply the following practice into your interviews. Otherwise, this post is quite hard to understand for a non-technical person.

Define your criteria

In order to find the best way to interview software developers, each company has its own criteria. That defines “What is a good candidate for the software engineer positions?”. Unfortunately, this table of criteria has a lot of variations. In the scope of this post, I may have a list of the most important ones.

  1. Communication: It’s HDWEBSOFT most important criteria as 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 candidate’s communication — the best way to interview software developer

The best way to interview software developers is testing the communication skill of the candidates. 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, our clients are across the world. That’s why our developer’s communication skills will be a few times more important.

In communication there are a few threads to evaluate software developer candidates:

Can they explain clearly about what they’ve done before?

The really simple but is the best question to interview software developers is asking them to show about what they have done before.

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 clear, 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 very helpful for 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 indicative 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 (I have a lot more good questions to interview software developers, so I believe HDWEBSOFT next candidates can’t study for the test in details):

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 to 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?

The scenario is, if they forgot or have no sense about “binary search algorithm”, I will explain to them about 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 hard question for PHP developers, even at the middle level. The scenario is the same, I will explain how PHP Session works if they forgot or are unsure about that.

This is a classical good method to interview software developers (both PHP and non-PHP). Nowadays, PHP developers rely on high-level frameworks a lot (like CakePHP, Laravel, Symfony, etc). They may have underestimated this very important topic.

Example 4: For a full stack developer

Question: What will you do to develop a regular shopping cart and checkout feature?

The story will keep going in a similar way. For this question, we have a few variations then. For example, if they are very good with the main question, I can have an extension like “If each product has limited inventory. How can you ensure that the number of purchased items never exceeds that limitation?”

This question is a very good approach to interview backend and full-stack software developers at any level. 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 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 one is a very good approach to interview backend and full-stack software developers at any level, too. They way they exploit the problem will define their corresponding 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, Nodejs, Reactjs, Vuejs, JavaScript, CSS.

To find them, just come up and use Google. There are a lot of good method 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 candidates’ actual level weight is 1, 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 high concentration on high level application development with Spring, .NET Framework, Nodejs, Python, PHP, React, Vue, and more. This is understandable. However, this is not good for a software engineer on their career path. That is why HDWEBSOFT appreciates the candidates who have solid knowledge of Data Structures & Algorithms.

Mastering Programming Techniques

Beside the basic programming techniques, SOLID principles are what HDWEBSOFT expects for all developers.

Mastering OOP, Design Patterns and UML

What is the good method to interview software developers in terms of OOP? It’s almost about OOP, Design Patterns and UML.

Nowadays, I can see everyone uses OOP. However, it’s very hard to find a developer with solid OOP programming techniques. Everyone can replicate the definitions of “abstraction”, “inheritance” and “polymorphism”. However, it’s hard to find one who can answer my 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 mastered 5 or more OOP design patterns. Without a doubt, he will have more potential to go further than the other ones. Knowledge of design patterns is not only the receipt to solve common OOP problems. It also contains useful information on the 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 really an endless story. In order to hire a good software engineer for your company, they need to be qualified by different kinds of questions. First, the professional questions will be used to check the actual technical level of the candidates. Second, the IT fundamental questions will be used to check the candidates’ background and potential. Last but most importantly, the complex questions will be used to check their communication, problem solving and adaptability.

Due to the good application of interview questions for software developers, HDWEBSOFT can hire good developers. HDWEBSOFT team is well prepared for not only the immediate needs but also very well to open the future doors.

--

--

HDWEBSOFT Offshore Software Development Company
HDWEBSOFT Offshore Software Development Company

Responses (1)