While I was on vacation the other week I was talking to my father-in-law, who works for a company that makes transmissions that go in transfer trucks. He mentioned that he always asks people this question when they are interviewing for a designer position (i.e. mechanical engineer): How much do you work on your own car? I thought this was a pretty good question. If someone is a mechanical engineer, but never spends any time working with their own car, they probably aren’t going to design things as well. They may design things that work from a technical standpoint and meet specifications, but they’ll have lots of quirks because they simply aren’t thinking about how it will be used. For instance, they may put some bolts in a place that would require an extra two hours of labor to get to, when they could have just as easily been somewhere accessible by just opening the hood. That may not be the best example, since I’m not a mechanical engineer, but you get the gist.
I was thinking that if I am ever interviewing programmers, I might ask a similar question. The most obvious modification, “how much time do you spend working on your own computer,” doesn’t really apply to a programming position. Sure lots of programmers take their computers apart and tinker with them, but so do a lot of people who think a hash table is something you smoke.
I came up with two alterations that I think would work:
1. In an industry where some say fifty percent of what you know is obsolete in five years, what do you do to stay current?
2. How much code do you write in your spare time?
I’m not saying by any means that a hiring decision should be based on either of these questions, but I do think a candidate’s responses would be telling. I think it would also be pretty simple to identify whether you are getting BS or a legitimate response. I think the first question is especially important, because most of the people I know who I don’t think are very good programmers probably have no idea what Ruby or AJAX are. They’ve barely heard of C#. You’re lucky if they’ve heard of Firefox. True, they don’t work in web development, but that’s not the point. Most good programmers I know tend to follow geek news and they are familiar with the “latest and greatest” technologies, even if they aren’t using them. You may have been a pretty good COBOL programmer back in the day, but if you didn’t try to keep up with newer stuff, you’re not going to make a good Java programmer. You’ll be stuck maintaining thirty-year-old COBOL code. And if you are stuck working on thirty-year-old COBOL code, that’s your own fault. In the last ten years the internet tubes have been filling up with tons of information: you don’t have to subscribe to trade magazines or anything like that. Just reading Slashdot or Digg or Endgadget from time to time goes a long way. Of course, you’d have to watch out for the person who has heard of Ruby (for example), and lists it as a skill, when all they’ve really done is read the Wikipedia page on it. I think one of the best pieces of resume advice anyone told me was to separate languages you have a strong proficiency in from those you just have a little experience with or haven’t used in years (thanks Peter). If someone lists fifty programming languages, they are probably only proficient in maybe three or four of them. And there are also those who memorize lots of buzzwords and sound smart but really aren’t. You would need to have a pretty good BS detector. But I think that is a prerequisite for conducting interviews anyway.
As for the second question, most of the people I would consider to be good programmers can’t just work on code at work. Most of them have side-projects or a website or something sort of code related that they spend some of their spare time on. The thing I don’t like about the question (at least the way I phrased it) is that it is too leading. A candidate might think “uh oh, they want someone who writes Linux kernels for fun” and might give a BS response, even if they don’t intend to. Incidentally, if you find someone who writes Linux kernels for fun, and they are telling the truth, you should probably hire them even if they drop racial slurs and/or their pants during the interview.
So whadda y’all think? Good idea/bad idea? Am I way off-base? I’ve only been on the interviewee side of an interview before, so I don’t really know what I’m talking about here. In any case, I think these are better questions than “What is your greatest weakness?”
PS: If they answer, “I’m a perfectionist,” they are probably lying.
March 22, 3:09 pm
I actually got both of your questions there in my interview for this job, so I’d say those are good questions. I think it’s good to find someone for a job that enjoys what it is they’ll be working on. If they do that same type of work as their hobby, then it’s pretty telling that they enjoy it.
My question, then, is would you consider me a good programmer? I was just asking based on your next to last paragraph about side-projects and websites and such stuff. I do both of those, but I don’t write Linux kernels, so maybe you wouldn’t hire me.
Maybe we could solve this problem with a paradigm shift to Web 2.0 using a modular Rails approach with a transparent AJAX enhanced Javascript front-end. But then again, that’s just how I (an expert in all things Tube related as you can see from my CV) would do it.
March 22, 4:35 pm
I just meant someone who writes Linux kernels for fun to be a rare exception. A supergeek, if you will. Not someone you’d actually expect to encounter. So yeah I’d say you’re a good programmer, but I might still hire a pantsless racist supergeek over you. Although the cost to HR from having to handle all the law suits might make the supergeek more of a hassle than he’s worth.
Also, integral to paradigm shifting solutions is that they need to be efficiently leveraged in order to maximize return on investment outside the box, otherwise you’ll mitigate your dominance as a best in class brand.