Smart and Gets Things Done by Joel Spolsky
The title "Smart and Gets Things Done" refers to the criterions you look for in a technical interview. These are the candidates you want to hire. But there's more to hiring technical talent than an interview, hence the rest of the book.
First of all, Joel motivates why you should care about finding the best developers. To any programmers who care about their craft this is obvious; there's a tremendous variation not only in productivity but also in quality between programmers. And it's simply not a matter of throwing more man-hours on the problem, let's say by hiring 10 mediocre programmers instead of a really great one. Brooks law provides an economic argument against that idea. Besides that, a great programmer writes code that lesser skilled programmers will never, ever be able to deliver. On some level, most managers understand this. The problem is that almost everyone does little more than paying lip service to the idea. Joel not only understands it, he also bases his company on the idea and provides some rather convincing data and discussions. It's an interesting and important introductory chapter that sets the stage for the rest of the book.
Now that we know who we want, where do we find those great hackers? This may well be the trickiest part of the problem; as Joel points out, great programmers are never on the market. Joel suggests internship as a way of capturing the truly great programmers when they're still in collage, before they even realize that there is a job-market. I like the idea and it seems to work well for Fog Creek (there's even a DVD documenting part of the experience and I do recommend it). Joel also presents the alternative of building your own community. This alternative is marked with a very appropriate asterisk meaning "hard". However, if you get there, your recruiting problems are probably solved.
After getting potential candidates to apply for an open position, it's time to sort out the truly great ones. Joel shares his ideas for sorting resumes and recommends a phone interview before inviting to a more expensive (in terms of both time and money) in-person interview. Joel's writing on the in-person interview (known as the Guerrilla Guide to interviewing) is one of his best essays ever. The most important part is to get the candidate to actually write some code during the interview. I couldn't agree more with that! I've done technical interviewing myself and found it to be an invaluable tool. Not only to sort out programmers that simply don't have it, but also to identify great ones. In an in-person interview, personal traits obviously play a big role. Code provides an honest way beyond those traits, but it has to be done in a fair and representative way. I share much of Joel's opinions on this matter; avoid trivia questions that can be looked up on-line or in a reference manual and focus on the things that actually matter. Joel deems it of vital importance to include a question on pointers and/or recursion. In his experience, pointers and recursion are an aptitude, not a skill. This has been controversial and I'm not sure if Joel is correct. But, it doesn't really matter - if a programmer's any good, he knows both concepts inside out.
The book spans a broad field and it's obvious that many things, like the location of your company, are beyond the control of most managers and technical interviewers. Joel recognizes this and gives solid and honest no-nonsense advices. Like all of Joel's writings this book is humorous, interesting and a true joy to read. I tend to disagree quite often with Joel's technical opinions, but on the softer aspects of the business, he's brilliant. If you're involved in the hiring process, this book will give you a lot of ideas and advices.
Reviewed July 2008