Strategies for the getting the most out of developer job interviews

As the Head of Technology at Y1 Digital AG, it was my job to hire and train new team members. And let me tell you, it’s not easy finding the right fit. That’s why I’ve found that the best way to evaluate candidates is through a combination of guided conversation and the right hands-on exercises.

Now, many candidates may have been thinking, “But wait, I don’t have a ton of coding experience. How can I possibly impress this guy?” Well, have no fear! One of the great things about this approach is that it allows me to identify quick thinkers and bright heads, even if they don’t have a ton of experience under their belt. I once hired a guy who had never worked as a programmer before, but had a background in procurement (of all things). And you know what? He quickly turned into one of my most solid team members. So don’t count yourself out just because you don’t have a traditional coding background.

During the interview, I like to start by getting the applicant talking about something they’re passionate about. This helps me get a sense of their communication skills and how they think on their feet. Plus, it’s just more fun that way. Next, I move on to some coding challenges. I’ll ask the candidate what their favorite programming language is and let them face any challenge in this language. I often ask why they like this specific language so much. It’s a fun question because bright thinkers will not have a problem to come up with some answer. If I don’t get a proper answer to this question I either don’t have a bright thinker in front of me or they are somebody who simply do not care. Either way, it’s great insight.

The coding challengers can range from simple (e.g. writing a function that adds all the elements of an integer array and returns the result) to more complex (e.g. building a tiny application or solving some real-world problem). Sometimes I chip in a code-reading exercise, too. The point is to see how the candidate approaches problem-solving and handles new challenges.

Now, it’s totally normal for candidates to get stuck or have questions during the coding portion of the interview. That’s why I allow them to use resources like Google to help them out. This not only lets them complete the task, but also gives me insight into how they go about finding answers and solving problems on their own. I mean, let’s be real – who doesn’t use Google at work?

After the interview, I like to follow up with a written or oral assessment of the candidate’s strengths and areas for improvement. This helps me provide more specific feedback and allows the candidate to see where they stand. Sometimes, I might even give them a homework assignment to show me that they’re able to put my suggestions for improvement into action.

The combination of interviews and practical exercises proved to be the most effective method for me to evaluate candidates and find the right fit for our team. A valuable lesson I learned is that if there is any doubt about a candidate, it’s best to let them go. If they are unable to demonstrate their intelligence and quick thinking during the interview process, it’s unlikely they will excel in the job or be great with customers and superiors.

It’s important to remember that every employee you hire reflects on your reputation. Hiring talented individuals will enhance your reputation, while hiring poor candidates will damage it. Therefore, it’s crucial to make difficult decisions and prioritize quality over quantity. It’s better to pass on a good candidate than to risk hiring a poor performer. Always strive to hire the best of the best.

Here are some examples of simple programming challenges that you can use as an inspiration:

Challenge 1:

Write a function that takes in a string and returns the string reversed. For example, given the string “hello”, the function should return “olleh”.

Challenge 2:

Write a function that takes in an array of integers and returns the average value. For example, given the array [1, 2, 3, 4], the function should return “2.5”.

Challenge 3:

Write a function that takes in a linked list and a value, and returns a boolean indicating whether the value is present in the linked list.

Challenge 4:

Write a function that takes in a binary tree and returns a boolean indicating whether the tree is a valid binary search tree.

Challenge 5:

Write a function that takes in a 2D array of integers and returns the coordinates of the element with the maximum value. For example, given the array [[1, 2, 3], [4, 5, 6], [7, 8, 9]], the function should return (2, 2) (since 9 is the maximum value, and it is located at position (2, 2) in the array).

Challenge 6:

You find this function in a library in the code base:

function s(Array A) {
     for (n=A.size; n > 1; --n){
         for (i=0; i < n-1; ++i){
             if (A[i] > A[i+1]){
                 A.swap(i, i+1)
             }
         } 
     }
}

You find out that this function is actually in use.

Questions:

The End

Have fun with the developer interview and good luck with identifying the right candidates.

Seriously recommended reading: