If you interview developers for job positions, chances are you suck at it. Did I get your attention? Good.
I don’t like to make sweeping generalizations, because some of you are probably pretty good at it, but I find more and more that people who interview developers are completely missing the point. As I am about to hire new developers myself, I’ve begun to reflect on what I think is important in hiring good engineers. But before I talk about what is important, let’s talk about what I think is unimportant.
Brickmakers
The next time you are in an interview and the interviewer says, “Please write me a function that sorts these values from…”, politely tell them that this is not the right position for you and leave. An interviewer that asks this type of question (and a lot of them do) is invariably someone who has no concept of the bigger picture of modern software development. This question does nothing more than to prove that you can solve a really insignificant problem. Seriously, when was the last time you wrote a sorting algorithm at your job? If you have written one recently then you are either a) not taking advantage of the power of your language or b) really bad at using Google to find code.
Functions and algorithms are bricks, and interviewers that ask these types of questions are looking for Brickmakers (and are usually Brickmakers themselves). Brickmakers are those who can build the most beautiful bricks in the quickest and most elegant way– bricks that look like a million bucks sitting on a shelf all alone. Brickmakers believe that everyone should be well versed in brick making because; well because EVERYONE should know how to make a brick, right? They also believe that if you can’t build a simple little brick, then you really can’t be that smart.
Bricklayers
Frank Lloyd Wright was a pretty bright guy, and as far as I know he never built a brick in his life. Modern software projects are becoming too large and complex to waste valuable time building bricks! A good modern developer is someone who can see the big picture, make sense of complexity and assemble little pieces into something substantial and meaningful. I call these people Bricklayers.
Bricklayers don’t get bogged down in the minutiae. At the end of the day Bricklayers don’t sit back and admire the beauty in the bricks. They see the beauty in the finished product. A good Bricklayer developer will understand the importance of good class organization, structure and overall design. They understand that most projects fail because of large scale and systemic problems rather than a less-than-optimally written function.
To put it simply: Bricklayers are people know how to design and build finished products, not commodities.
Interviewing Brick Layers
So how do I find and interview brick layers? I find that the best way to interview brick layers is not to interview them at all. I treat developers like artists. I would never ask an artist to prove themselves by painting a picture on the spot, and I would never ask a developer to do likewise. In my world, a good portfolio is king. If your portfolio is top-notch, then I only need to establish two things during the “interview”:
1) Do you comprehend what you built? Or in more simple terms, did you really build it yourself?
2) Are you a person I would enjoy working with?
So remember the next time you interview a developer to ask yourself– am I hiring Brickmakers or Bricklayers? I’ll spend my money on a master Bricklayer and buy my bricks at Home Depot.
Cheers,
-jim
P.S. Josh, in case you’re wondering, this does not apply to you : )