On Software Engineers
And recruiting them
“How do we hire really good Software Engineers?”
A common question I get these days.
In this article, I’ve attempted to answer this question, mostly based on my experience recruiting Software Engineers (SWEs) and Engineering Managers at Facebook (2009–2017). While I focus on the SWE role, many of the ideas presented can be applied to other roles.
C-grade Candidates
Every profession has some core professional skills. For example, a Software Engineer should be able to write code; a Data Scientists should be able to analyse data; a Designer should be able to design Web Sites. The most basic employment candidate is one who has these basic skills for the role. This is what I mean by a C-grade Candidate.
As I mentioned, a SWE should be able to code. The way you test a potential SWE candidate for C-level abilities, is through a “coding interview”. At Facebook, these were known as “Ninja” interviews, consisting of Data Structures and Algorithms questions.
What types of questions? Should we test particular programming languages? What about frameworks?
Whenever a candidate describes themselves as “an expert in Java” or “an expert in Angular JS”, I hear alarm bells ringing. This is because in a world where technology is changing so fast, being rigidly married to a single technology is a sign of inability to adapt, and learn.