The Clean Code Blog

by Robert C. Martin (Uncle Bob)

The Ruby Colored Box

31 January 2012

I recently read a blog about a guy who had a bad interview. The blog was well written and pretty funny. He metaphorically described the interview in terms of a mexican chef being grilled about how to make crème brûlée. He made a bunch of interesting points about how unfair the interview was, and how you shouldn’t ask a mexican chef how to cook pastry.

The blog was in two parts, the mexican chef metaphor, and then a rant. By the time I got to the end of the metaphor I was pretty much thinking that the author was a bit of a whiner. OK, so the interview was unfair. What interview isn’t? Why would any employer want to conduct a “fair” interview. I’m certainly not fair when I interview people. I put them under all kinds of stresses, and throw lots of strange issues at them. I want to see how they behave when confronted with unfamiliar problems. I want to know if they can extrapolate their experience into a new domain.

But I also understood his point. I’ve been to interviews where I’ve bombed, and can remember thinking they were unfair at the time. They weren’t, it’s just that interviewers aren’t trying to find the first person who might fit. They’re trying to find the one person who stands out. That means they’re going to pass over a lot of good people. That’s just the breaks of the game.

But then I got to the rant, and I read this:

My attitude is if I’m a good Ruby programmer, and you’re trying to hire me when the supply for Ruby programmers is low and demand is high, that before you even talk to me you’ve spent at least 10 minutes Googling for my name, looking at my code, and figuring out who I am, rather than spending an hour subjecting me to a series of ad hoc programming questions in areas I may or may not specialize in. That 10 minutes of Google will tell you a lot more than asking me to come in and scribble stuff on a whiteboard.

I think this process has left me a bit more discerning about the companies I’ll actually interview with. When you’re trying to hire talented developers in a scarce market, please do your due diligence and don’t insult somebody skilled by asking them to do a degrading whiteboard interview instead of looking at code they have freely available on the Internet or just looking over their shoulder as they code on a computer, preferably their own, at least the first time you get to know them. You may even learn something.

The last thing I want is to hire someone who thinks I owe them a job. Does this guy really think he’s so hot that I’m going to do research on him before I meet him? Am I supposed to kneel down and kiss his sandals for granting me an audience? Just who does he think he is?

Oh! He’s a Ruby Programmer! That explains it! Of course I should kiss his sandals. He’s a Ruby Programmer. He’s on GitHub. Oooooohhhh!.

Dear Employers in search of Ruby Programmers:

You don’t need Ruby Programmers! You just need programmers! Any decent programmer can learn Ruby in a week. And Rails only takes a little longer. Don’t hire these prima donnas who think they’re God’s gift to Ruby shops. They’re not. They’re just generally inexperienced kids who happened to learn a pretty easy language and a pretty easy framework.

Instead, find some programmers who have been around the block a few times. They should know multiple languages, and be able to deal with many different and novel situations. Don’t worry if they don’t know Ruby, they’ll know it, and Rails, within a month. If you like you can temporarily hire some super-expensive consultant to teach them if you like. They’ll learn quickly, with or without.

What you are looking for, if I may drop back into the metaphor, are mexican chefs who don’t panic when you ask them how to prepare crème brûlée. It’s ok if they don’t know (though don’t let them know that!). What you are looking for is whether or not they can extrapolate from their experience. In other words, to drop back out of the metaphor, if you are interviewing a Ruby programmer, your first questions to him should not be about Ruby.

Ask him something outside his comfort zone, and see if he can extrapolate. Ask him, to write The Sieve of Eratosthenes in C. If he doesn’t know C, give him a copy of K&R and come back in 20 min. He won’t have the right answer; but that’s not what you are looking for. You are looking to see whether or not he has the experience and resourcefulness to fruitfully attack the problem. You are looking to see if he can think outside the Ruby colored box.