The Software Hiring Handbook
This book is a guide to conducting a job interview for various positions in the software industry. As technology continues to evolve and the number of programming languages, hardware platforms, and standards continues to increase, it is becoming necessary for a software manager to rely on team members for evaluating candidates on a technical level. In many cases, these team members, while having technical skills, may not have sufficient interviewing skills to successfully evaluate a candidate. The book's approach is to first classify the various skill sets that candidates may possess. These include both technical skills, as well as "soft skills" such as communication and general problem solving skills. Next, various positions are analyzed in light of these skills, to identify skills that are most important for a given position. Various screening and questioning techniques are then presented. Post-interview evaluation methods are then covered. An appendix provides a concise list of questions, as well as what t
he question is intended to reveal about the candidate. This book is intended to be something software developers can read fairly easily and quickly. A software manager can provide this book to his or her team to quickly improve the team's interviewing skills. When the team's interviewing skills improve, good hiring choices are made, thereby helping the overall success of their department and company.

Review By: Peter Clark
08/11/2008Hiring new employees is the single most important thing that managers do. The benefits of making a great choice and the risks of making a poor one are enormous. The process itself requires juggling a huge number of variables. The people making the decisions are typically under-trained for the task, and are doing it under pressure while trying to keep the rest of their jobs afloat.
"The Software Hiring Handbook" by Michael Kahn is quite simply one of the most approachable books I have ever read on the hiring process. I like it so much that I have recommended it to our Human Resources department, and I have purchased additional copies to give to software engineers and supervisors who need to make hiring decisions.
The book is organized into several broad areas. After two brief introductory chapters, the book dives into two chapters on defining requirements for the position to be filled. The first of these discusses general attributes of candidates: experience, skill sets, and soft skills like communication and team work. The second chapter covers typical positions in a software organization. It links the attributes discussed in general in the previous chapter to concrete positions. If you follow the guidelines in the first two chapters, you will develop a clear description of the person you are looking for.
The remaining chapters cover the hiring process itself, starting with pre-screening. This chapter discusses how to whittle down a stack of resumes to a manageable number of face-to-face interviews. The focus is on eliminating candidates. It shows how to evaluate resumes and how to use a resume to conduct a telephone prescreen of the candidate. It gives concrete advice on how to conduct a telephone interview and how to interpret the answers you receive.
The following chapters focus on the face-to-face interview process. The first of these cover different “styles” on interview: behavioral (what did you do when this happened), situational (how would you react in this situation), and stress (acting rude, insulting and/or crazy and seeing how the candidate reacts). The chapter covers how to ask questions in a way that the candidate shouldn't offer the “expected” answer and how to get the candidate to talk about other topics you want to explore.
A brief chapter explains how to plan for a face-to-face interview, followed by a lengthy chapter that covers different types of questions. The author also covers how to probe a candidate’s skills in programming language (using a keyword test), debugging (error-ridden code evaluation), and process. Many of the questions have no “right” answer, but the author explains how to evaluate the candidate’s response.
The book ends with a short chapter that covers how to complete your selection of a job candidate. This is probably the weakest chapter of the book. I suspect the author feels (correctly, in my estimation) that if you have followed the advice in the preceding chapters, the strength of each candidate should be fairly obvious.
There are several things that the book does not try to cover. For example, it doesn't cover the legal pitfalls of the hiring process, although it does give a list of questions that should never be asked and why they shouldn't. It also does not cover how to structure an offer to a candidate or how to evaluate a position against benchmark salary data. I guess that the author figures that his job is to help you identify the fish you want in the ocean. How you catch it is up to you.
This is a short (153 page) book. It could easily be read in an afternoon. This is precisely its charm--it is incredibly concise and to-the-point. It can be used as both a primer on the hiring process for software professionals, as well as a refresher for people who already have training or experience in hiring.