Developers are the heart of any project. So, what are the key aspects that one needs to keep in mind while hiring developers?
Define target team composition:
Team composition does not merely mean technical skills composition ( eg .five JSP developers, two EJB developers, one DBA), but also includes the larger 'capability composition' of the team. A good team in my experience could have the following capability composition-
· Killers- 5%. Killers typically are very intelligent, driven, ambitious and love being in the limelight. You will find them working weekends learning new skills. Although tempting, do not try to saturate the team with killers. Too many killers create 'people' issues. Most medium sized teams need one or atmost two killers. De-risking tip: If your estimation is aggressive make sure you have a couple of killers on hand!
· Stars- 20% Stars are potential killers, but lack the drive needed to be one. Talented but easy going, one typically hears them say 'I have finished my work, so please let me go at 5:30 itself'.
· Backbones-60% Aspiring and committed, with good attitudes, backbones stand ready to make sacrifices in order to meet set expectations. They typically prefer semi-routine work with well defined tasks. They are crucial when a project is what I would call the 'slog overs' stage.
· Greenhorns-15% Fresh or relatively fresh, they bring youthful enthusiasm and energy to the team. They are your talent bed of future stars, backbones and killers.
Depending on project complexity, deliverable aggressiveness and cost imperatives one would choose an appropriate team composition. Defining the same upfront ensures balance and consistency with respect to other project parameters.
Define your target 'hard' skills wishlist
You could either be hiring for an existing project, or creating a buffer for future requirements. Depending on your immediate need and projected future needs, prepare a target 'hard' skill list in descending order of importance. This could look like:
SKILL SKILL LEVEL [1-10]
Session ejb- design, development and deployment. 8
ANT build scripting- development, execution and
maintenance. 5
JSP-design and development. 3
CMM-5 quality procedures. 2
Prepare an interview plan: Set expectations
Identify technical recruiters and make sure there is consensus with respect to skill levels needed for individual roles and what these skill levels mean in practical terms. e.g An EJB developer with skill level '7' would, apart from basics, be able to solve issues involving transaction management and would understand exception handling in the context of transactional failures. Driving consensus helps ensure consistency across interviewers. I have seen interviewers providing vastly different ratings for the same candidate while testing similar skill areas.
Partition responsibilities for assessing specific skills to different interviewers. It makes little sense to have three rounds of technical interviews, with all the interviewers focussing on exactely the same area.
Identify job specific soft skills needed:
Every software professional is expected to have good interpersonal and communication skills. Thanks for the news eh ? Well, one needs to move away from these cliches and get down to specifics. eg. A build engineer needs lots of patience, good coordination ability and the willingness to put in long hours. Make sure your panel tests these aspects.
Seek to identify strengths not weaknesses:
The goal of an interview is to find out what the candidate knows, not what he does'nt know. Avoid out of the blue questions like 'Can you tell me something about Aspect oriented programming ?'. Such tactics may be used to shock a candidate with an attitude problem, but are of little use from a regular evaluation perspective.
Test ancillaries in addition to core skills:
A 'web tier' developer that does not know javascript is not a 'web tier' developer. I have seen developers spending inordinate amounts of time on seemingly 'peripheral' tasks like HTML/javascript and SQL queries. Make sure you test candidates on these little 'extras' that usually get taken for granted.
Test application ability in addition to concepts
Most interviewers merely test concepts. Use mini case studies to test the ability of the candidate to apply the concepts. As far as possible, relate your questions to the candidate's project profile.
Make sure you test work ethic!
I have seen a great deal of time getting wasted because of lack of adherence to process, poor time management and inefficient inter-developer coordination. Ask the candidate to take you through a typical work day in detail. Ideally relate this to a case study.
Do not be biased towards referrals
There could be a tendency to apply lower standards for employee referred candidates. People refer candidates to get the referral bonus not to ensure the best possible fit. Apply the same standards to one and all.
While hiring freshers(<1 year) go for talent
Freshers are sometimes subjected to 'computer sciency' tests and programming languages tests. In my experience, recruiting from premier institutes through IQ tests would be a better choice. I have seen smart freshers with good attitudes scaling up in weeks.
As Frederick P. Brooks articulates in the 'The Mythical Man Month' : The difference between an average developer and a great one is an order of magnitude. Happy hiring!
Career Project Management