Management that view their people as replaceable “gears” within a machine seems to be the norm these days, but that only applies to low level, mundane jobs that can be handled by robots. Obviously, this shouldn’t be applied to software developers. I would even argue that within any level of a company, it is crucial to recognize and keep your “Grade A” workers! I think I read about this in one of those Harvard Business books, a “Grade A” worker is not only more productive himself, but he also increases the productivity of those that work around him! In the case of a developer, various studies have shown that good developers can be between 10 to 20 times more productive than poor developers! But before we get to the part on how to keep them, the question should be… how to identify them during interviews and hire them?! That’s the question that bothered me the most.
A few years back, when Yahoo!’s stock was doubling every few months and we were hiring like crazy, I read a book that gave me some interesting tips on how to do that. It’s really common-sense stuff actually… First, as the person hiring, you need to identify the characteristics you expect in the person you want for the job, and develop an interview technique that will test for these characteristics. Design some questions that can highlight the desired qualities of the candidate and have HR use those questions instead of their stock ones.
If time allows, after HR and someone from the hiring department had interviewed a candidate, a good next step for potential candidates is audition. Have the candidates present on a topic for 10 – 15 minutes in front of those they are likely to be working with if hired. This is also a good time to ask those theoretical / IQ questions and let the candidate think out loud. Give your team a checklist of questions also can help them focus on specific aspects of the candidate’s performance. Here, if candidates are not going to fit well with the team, it doesn’t matter how good they are, they won’t be productive and may actually decrease the productivity of the team!
Finally, if auditions are not possible, instead of just sitting across a table and ask questions, work with them at a whiteboard! Walk them through some standard scenarios at work and ask them how they would solve the problems. Start with easy ones and increase the level the difficulty, note the level of problem at which they start to have trouble and how they handle it! For developers, have problems that test implementation-level, design-level, and analysis-level thinking.
Both the audition and whiteboard sessions are looking for the ability to think, learn and adapt, more than just the experience or knowledge in a specific field. Hopefully, after these 3 to 4 steps, you’ve identified a few good candidates and also, those candidates will have a good impression of your company due to a good interview process. Once you’ve gotten your good people, a manager’s next challenge is to not lose them! 😀 LOL… May be I’ll write about that later…