Trying to find a good candidate for a role is hard. Chris Oldwood reminisces on various factors that influence interviewers.
After more than two decades as a programmer, you would think I’d have got this whole screening and interviewing process licked, but just when I think I’ve found the optimal solution, I once again find another ‘edge case’ that blows my theory out of the water. The problem, of course, with hiring people is that it involves human beings, and humans are notoriously difficult to deal with because, well, they’re all different.
In my early years as a professional programmer, I suffered from an arrogance which suggested that all the decent programmers in the world probably had backgrounds in engineering rather than computer science. Having studied electronic systems engineering at university myself (though sucking badly at everything apart from the assembly programming side due to my bedroom coder upbringing) I entered professional programming with a good appreciation for the hardware which was useful in the industry where I started out – PC graphics applications.
Correlation, of course, does not imply causation and with such a small data set to work from it’s not surprising I came to such a conclusion (I suck at statistics too, it seems). I subconsciously fostered this view for some years, which naturally biased my opinion of people whose CVs crossed my path. I don’t remember discarding anyone solely based on that criterion but I’m sure any candidate who reached the interview stage will unknowingly have had yet another prejudice to overcome. Eventually I got to work in a big team at a large company and mixed with all kinds of people from different backgrounds, which helped dissipate that particular notion.
However, there is just not enough time to interview every candidate face-to-face that crosses your path and so you have to develop multiple heuristics if you are ever to separate the proverbial ‘wheat from the chaff’. Every time I think I’ve come up with a fairly solid heuristic, I invariably end up working with special people that buck the trend and I once again begin to feel discomfort in how many others of a similar calibre I may have discarded because not enough of what I felt were the right boxes were ticked.
For example, when hiring for senior roles, which is what I’ve mostly been involved in, I would historically hope for them to show some kind of interest in programming outside of their 9 to 5 job, especially when they describe themselves as ‘passionate’ about the career. This does not have to be anything as grandiose as leading a major open source project or writing a column, but just something simple like regularly attending a meetup, or reading a journal or blog. It turns out some people are really good at keeping a sensible work/life balance. This doesn’t mean they don’t help out when things go awry, but that they don’t unnecessarily subscribe to a hero mentality.
Another heuristic I’ve tried on pre-screening phone calls is to get the candidate to talk about their programming ‘war stories’. Any meetups or conferences I’ve attended that result in a trip to the pub usually end up with various people describing some of the bizarre code or production incidents they’ve had to deal with in their past. There is almost a case of one-upmanship going on as the night progresses and alcohol is consumed. However, unless they are of our own making and we feel entirely comfortable sharing our mishaps, these stories usually come at the expense of someone else and therefore we may be behaving no better than the archetypal builder who denigrates the work of others. Being asked to do that with a prospective employer naturally makes some people uncomfortable. Another idea scrapped.
It’s now been a decade since the classic Fizz Buzz programming exercise entered the mainstream consciousness and yet I’m still amazed at the number of overly complex solutions I’ve had to review from experienced developers. Paradoxically, I’ve also rejected candidates based on this simple programming problem only to discover they’ve been hired because of other forces at play. I consider this a lucky escape and rejoice that a sane hiring process has won out, but once again I feel uncomfortable with the outcome of a screening process designed solely to weed out highly undesirable candidates. I’ve found myself questioning over and over again what signs I’d missed this time around. If the purpose is to hire someone who can write simple code, what does it say when asking them to do just that with a simple problem in their own time ends up going awry? It seems some people really struggle to believe you when you say you want a simple solution to a simple problem; they want to impress you, to show you what they can really do.
My early experiences in the interviewing process (as hirer, not seeker) were definitely predicated on a desire to find someone like myself. I don’t believe this was in a narcissistic kind of way, but more borne out of the need to find someone suitable using the minimal time out from normal duties. Is it any wonder all the heuristics I came up with were really just how I see myself? And then there is the need to feel that we must choose the best candidate from those we have shortlisted as if we were out shopping for a new car and wanted to be sure we had gotten the best deal possible. Too many times a good candidate has gotten away because we hoped that someone later would be even better. Hiring, just like programming it seems, is also subject to the problems of ‘gold plating’.
So, when the next recruitment agent or HR person asks the inevitable question ‘what should I be looking out for to identify the best candidates for you?’ the best I can do is shrug my shoulders. Yes, I can provide some useful heuristics that may help me prioritise candidates through the initial screening process but ultimately it seems I still have to fall back on the most subjective heuristic of all – gut instinct.