Starting from many years ago I started to notice a very interesting trait in IT industry hiring (here by IT industry I mean positions that require extensive software coding) – the interviewer could potentially go straight into “let’s solve some coding challenges” without much exchange of greetings. The process of the entire interview could concentrate on a very concrete and thought-intensive problem and you are expected to solve it in an unambiguous way by writing down your compilable code and explain why and how it works. This is unimaginable in even neighboring industries like electrical engineering, not to mention finance, consulting and other fields that pay more attention to soft skills. I am not saying that doing code challenges is the only component of all technological hiring in the IT industry (though in many cases it is the sole part), yet everybody working in this realm knows that if you show any signs of weakness in this part companies do not bother moving forward to assess other (glittering) facets of you.
The style of this type of hiring has incurred much criticism, especially by some senior level professionals who argue that coding at toy scale, no matter how proficient you can do, does not necessarily reflect your true engineering capabilities. In 2015 there was news that Google turned down Max Howell, the author of Homebrew, because he was “unable to flip a binary search tree on whiteboard”, so ironic that someone who “created tools for Google engineers’ daily use is denied a position in the company”. From a logical point of view, it’s hard to believe that guy could not code flipping a binary tree with bare hands. I would rather guess that such a trivial coding challenge made the coding guru irritated that the whole interview process became an unpleasant journey from then on.
Yet, given the scale of Google, such hiring process is fully understandable and almost inevitable to a giant tech business. Simply put, companies at the scale Google can afford to lose any talent. An optimized hiring workflow is all about hiring best talents statistically, and we all know that if something is statistical, there is no guarantee anymore – you could be the false positive or false negative. Recruiters are told to hire the best 10% in the job market, not Person XYZ who ranked No. 1 (in fame) in the industry.
Now we can take a look at how these tech giants, bearing in mind the goal to hire the best talents statistically, settled with the interview schemes we see today. Why are they so obsessed with coding challenges, some of which are even so hard and obsolete that you rarely think about and make use of in your daily work. A plausible argument to this is – these coding challenges test your fundamental knowledge. For example, how can you expect someone to comprehend and improve a distributed database system if he/she has no idea about implementing an in-order traversal of a binary search tree? But this viewpoint becomes vulnerable as coding challenges are evolving to be unprecedentedly difficult as time goes by. Nowadays, even recruiters recommend professional interviewees using several weeks “sharpening coding skills” before embarking on a real interview. The funny thing is – as a programmer who exercises coding at work each day, why would I be advised to devote extra time to prepare for a coding challenge? Superficially, it says at least two things. First, the code challenge is a digression from your work routine; second, the code challenge is hard and if you don’t prepare well, you fail. This seemingly irrational coding challenge, I would argue, is actually quite effective in terms of being effectively selective. Remember the famous reasoning about a peacock’s ostentatious tail that has no survival advantage in nature? It’s all about show-off – if the peacock can live with such a useless drag without being preyed, it must have got incredible surviving skills. The same logic applies to here – if you are able to devote a couple of hours to interview preparation after work for several weeks (without being fired by your current employer), grasp so many coding gotchas and tricks, and perform well in 5 consecutive intensive interviews – wow, you are the smart, energetic guy we would want to hire! None the less, If you happen to belong to the fraction of people that do amazing things in big projects but perform awkwardly in coding challenges, sorry, life is too short (also too costly) to tailor our hiring process for you. In fact, a grueling hiring process not only filters down the most adaptive candidates (with regard to a fierce career competition) but also distills the group of people who are seriously considering a career move. After all, who would want to go through such daunting process if all they want is taking a random shot?
Back to Max Howell’s rejection by Google, the implicit message Google conveyed to Mr. Max Howell might contain another fold – if you are mad at being asked to flip a binary tree on the whiteboard, we have reasons to believe you might have problems in executing your superordinate’s instructions. Technology must be submissive to capital: this is called Capitalism.