allenc allencheung

Right Talent for the Job

If it’s not evident already, I think and write a lot about the interview and hiring process for engineers at software companies. Getting good people in the door, verifying their greatness, and then convincing them to your cause is actually a difficult problem for everybody involved; most engineers loathe the interview process, both as the people asking the questions or the ones answering them.

So when a newly-hired engineer suggests that his status as a Microsoft employee is a sign that hiring is broken for every other firm he interviewed, that all the companies which didn’t give him an offer did him grave injustice, I agree with him in sentiment if not in method.

Now, it’s pretty easy to dismiss the point and attack the author’s naiveté: Microsoft has lost its status as a technical powerhouse in the community, and throwing out their name as a counterpoint to every other company that passed on the guy isn’t exactly a bulletproof argument[1]. But throw in any other firm with a reputation for hiring smart, technical people, and I believe the same point still applies: just because you made it to Google/Facebook/Apple, it does not mean that you are “good enough” for every other software company.

Anecdotally, I’ve both been rejected by companies – post-Google – and I’ve also given “do not hire” feedback to Googlers and Xooglers alike. If you can list Google or Facebook or Microsoft on your resume, all that tells me is that you were good enough to pass their (admittedly rigorous) interview process whenever; it says very little about your current skills and disposition, your current goals and aspirations, and why you’d be a valuable addition to the team. I’d expect you to know your technical a’s and b’s, but that’s not to say we won’t make you go through the technical interview anyway.

The problem is the underlying assumption that a software engineer can be mapped onto a linear scale, and companies have a “cutoff bar” where they would only hire people above a certain percentile (Amazon makes this rather explicit with the “bar raiser” interviewer). Intuitively, we know that good software development is a multi-dimensional problem, with raw technical ability being a major but singular facet. Some companies look for good communicators; others find value in collaboration and generalist developers; yet others want to highly specialized skills for very specific niches. Even when talking about coding, some place emphasis on testing, some want algorithmic expertise, and others look for architectural design prowess[2].

A company’s interview process is only good relative to how well it reflects on its current workers; it should give high marks to candidates that would fit well with the company, regardless of reputation. Sure, most of the time, “it’s not a good fit” is just recruiter euphemism for “you failed to meet the technical bar”, but sometimes it really does mean that you would not fit well within the company’s culture and methods of development, its people and product and style[3].

You may be a prefix trie when what they really wanted a hashmap.

Footnotes    (↑ returns to text)

  1. It was the first thing I thought of as I was reading the post, and later vindicated by a cursory glance at the comments.
  2. Of course, an ideal candidate would be good at all these areas, but somebody like that really would be hired by every company he or she comes across, and I’m not convinced someone like that exists, or if they do, in sufficiently large quantities.
  3. But maybe you don’t want to be a brogrammer.
By allen
allenc allencheung