I’ve been thinking about interviewing developers for a while now. What makes for a good interview? How do you find good candidates? For that matter, what does a good candidate look like?
In the last few weeks I’ve had to conduct a few interviews, so I’ve been giving it some thought, but what finally prompted this blog post was that I gave in and accepted one of the many offers to go interview with another company.
Just getting to the right place
My most recent interview experience starts with me parking in a basement parking arranged by the company. This is where it starts going a bit wrong. I go up the only staircase I can see, but this only takes me to more parking. So I go back down and walk to the other side of the basement where I find some lifts. In this lift I finally find a clue – a sign telling me that visitors need to push ‘B’. I do so.
After going down a few floors, the doors open and I’m faced with a blank wall. I walk the only way I can and after a bit, I come out into another basement parking. From here I eventually figure out that there are faded paint on the floor directing visitors to the opposite side of the basement. I follow these signs to another lift with another note for visitors to press the ‘L’ button. I do so.
This time the lifts open to a reception area, and after a minute security notices me and lets me through the access control to sign in as a visitor. I sign in and are told to take a seat until the interviewer fetches me. I do so.
It is now 8 minutes before my interview starts and I’m quite chuffed that I got there on time even with the treasure hunt I had to conduct.
And then I wait… Eventually, a bit more than 10 minutes later somebody shows up and tells me that they keep scheduling the interviews in the wrong building and that we are actually going to another building. So we walk to the other building, I have to sign in again and we eventually get to the meeting room about 20 minutes after the interview should have started.
So, now we start the interview. I was interviewed by 2 developers.
There was a few minutes of general chat about what I did at my current job, but heavily biased toward what tech stack I worked on rather than what projects, etc.
From there, we went straight to OOP and the classic “You have a canvas and you need to be able to draw rectangles, circles, triangles and stars. Draw me a class diagram.”
Then we went on to:
- SOLID principles,
- data structures,
- application servers and
- finally a bit of a coding problem with some big O notation questions thrown in.
90 minutes after starting, I was asked if I have any questions. After answering my questions, I go on my merry way.
Where did it go wrong
I have a few issues with this experience.
The first issue I have is with the first impressions I got. If it is not 100% clear how to get from where I have to park to where I am being interviewed, give me some instructions with the parking confirmation.
The second issue was the fact that I was sent to the wrong building, which was inconvenient, but more importantly, it wasted my time. I had to go to the airport afterwards and because of this 20 minutes wasted, I was late.
Then there was the interview.
I don’t think being interviewed only by technical people is a great idea. There was an absolute focus on technical knowledge (and a lot of it theory), with no focus on soft skills.
It felt like the interview was biased towards finding a person with a good knowledge of the theory, not necessarily finding a good developer. While there is a lot of overlap, they are not the same thing.
I was not asked a single question about testing, code quality or development methodology. I was also not asked anything that would give a clue about how I would fit into a team.
I don’t have all the answers, but a good developer needs to have passion, empathy, humility, an ability to see the bigger picture and a bunch of other traits I haven’t even quantified yet. I didn’t think the interview was particularly good at uncovering any of those areas.
How could it have been better?
Well, I already touched on the obvious: Make sure you send me to the right building, give me enough information to get there and make sure the interview starts on time.
How do you find a good developer though?
Outside the theory questions, I think there are a few simple questions you can ask.
- Tell me about your project.
Such a simple thing, but if the person is passionate about what they do, you’ll have to stop them talking at some stage. if they are a bit reticent, ask them some guiding questions like “What are you proud of?” and “What would you like to change if you could?“. I also like “Is there anything you would automate“
- Tell me about a failure
What I’m looking for here is the interviewee taking responsibility for a failure and how they fixed their screw-up. If they tell me something that somebody else was responsible for, I’ll keep probing until they tell me about something they messed up or I decide that they can’t take responsibility.
- Tell me about your team
Good developers realise that they are part of a team and will be willing to talk about that team and give credit. The worst person I had the displeasure of working with kept telling us how terrible the rest of his team was and how he had to leave because he just couldn’t work with them. I have no doubt that he told his new team the same about us.
- Coding exercise
I like to ask for a simple coding exercise. Something simple like finding prime numbers. Once the person solves it you can dive deeper by asking big O questions, how memory efficient their solution is, how they could improve performance, etc.