On Hiring Developers
I have done so many interviews related to software development positions that I cannot even estimate the count of them. This is how I conduct interviews nowadays. Hopefully, you can find something interesting in my way of doing them.
Style of Interview
My goal is that we both feel as comfortable as possible as it allows both of us to get the most information needed for our final decision. If the situation allows it and I feel the candidate is opened to it, I switch to a completely informal conversation. I also prefer open-ended questions as there is a lower possibility that I only get answers that the candidate thinks I want to hear. I strongly value honesty and authenticity.
Intrinsic Motivation
I always try to find out what motivates the candidate in general and what led them to come to the interview.
I’m not only trying to determine if the company would benefit from employing the candidate but also if they would benefit from being employed at us.
That is the most difficult aspect for me as it requires a lot of empathy and imagination from my side and thinking about whether the person in front of me would be happy in our company or not. That is not only a question of business but mainly a question of ethics which is above business for me.
There is no set of predefined questions I ask every time. Here are a couple of examples I like to ask regarding motivation:
- What bothers you the most at your current employer? Did you do anything to make it any better?
- What is important for you to have at your job (to be effective)?
- How do you keep yourself up to date with today’s crazy-paced world of technologies? (Recommend a source of information to me.)
- Have you ever contributed to any open source?
There are no good or bad answers here. I try to evaluate everything in the candidate’s unique context. For example, if they had tons of implementation work at the current employer and just have had a little baby at home, I can completely understand that there has been no time to investigate new technologies in the field or to contribute to an open source. The good sign is when I see that software development is what the candidate really enjoys or it is a hobby for them. On the other hand, I’m absolutely OK if they admit that they want to work mainly for the money — as long as the employee stays professional, it may work.
Skills
I started with the motivation on purpose as it is more important to me than skills. It does not mean that skills are irrelevant, they are just less decisive — with a good intrinsic motivation, skills can be earned sooner or later, but it does not work the opposite way.
Speaking of skills, I don’t mean only those related to technologies but also soft skills. From my experience when it comes to developers:
Communication is often far more important than coding.
Unfortunately, there are not many developer competences that can be directly tested during the interview (reliability, diligence…) but communication is one of those that can. Again, no predefined set of questions about skills but I like to ask these for example:
- What is your favorite technology (programming language) and why?
- What technology (programming language) you would rather avoid and why?
- What skills do you consider important for a senior software developer?
- In your own words, please try to explain me <technology> to me (I choose the technology according to the candidate’s expertise).
I do not ask to do a programming task on the whiteboard as I find it very ineffective in terms of what it says about the candidate. I’d rather ask them to describe how a simple algorithm works to see how the candidate is thinking. I’m not expecting any knowledge of the syntax without IDE.
I also don’t care much about the specific API knowledge (e.g. what set of methods a class has). What is more important for me is a general outlook. It is far better if a candidate is familiar with functional programming concepts than with a specific name of a filtering function in Java.
Personality
I don’t ask questions about the character or personality of the candidate. They simply reveal themselves during the whole interview. I like a certain level of diversity in a team, but it has its limits, of course. To hire a candidate, I need to feel that we have a mutual understanding and that they will fit in the team.
The top priority and what I build my teams on is trust.
The interview is our first level in building it. We don’t need to be the best friends but we must find at least the common ground.
Generally speaking, I always prefer open-minded people and those who have a decent level of self-reflection. These days, the technologies and techniques change so rapidly that everyone needs to be prepared and able to accept changes.
Final Thoughts
This is the way I do interviews nowadays and I’m sure it will evolve over time. Please take lines above as an inspiration. In case you do interviews, you will have to find your own way anyway.