Wednesday, August 22, 2007

How to Hire (Programmers)

I've been interviewed for software development positions many times since I started working in the so-called IT industry. Generally I've been disappointed by the kinds of questions people ask. Either they ask lots of soft questions or they ask very academic "puzzle" types of questions. The problem with the soft questions is that a good talker can come up with convincing answers even if he/she is utterly incompetent. On the other hand, the puzzle questions leave me cold. It's quite possible to be good at solving such puzzles without being a good developer, and vice versa. Often the puzzle questions, if they have anything to do with programming at all, emphasize how to optimize certain algorithms. The truth is that an over-emphasis on optimization is one of the most common problems I see. It makes code much harder to work with, often without a tangible benefit. Don't get me wrong, I'm not saying that being able to communicate with people isn't important or that one ought to hire dumb people, but I think the industry lacks a sense of the overall qualities to look for. Thankfully, Marc Andreessen, of Netscape fame, has written (in my opinion) the definitive guide to hiring software developers.