Recruiting is one of the "necessary evils" in the business world. Today's job market is particularly challenging because every candidate is being told how to market themselves and get their "dream job". Unfortunately, there are also no universal truths to picking the perfect new team member. Despite all the challenges that come with recruiting, it can and should be viewed as an opportunity to improve the team in some way.
Hiring for an applications development team is particularly challenging because of many factors:
- Applications development has become such a diverse field that it can be difficult to spot a candidate with the right skills.
- Application developers tend to be socially challenged.
- Application developers are often arrogant and hard to convince that there are things they do not know.
- Because the industry is so lucrative, there are many people in the application developer community that should not be there.
One of the biggest reasons there is no "silver bullet" solution is because each team is looking for something different, and each team has something different to offer new team members. Some openings have hundreds of applicants, many of which would be a great addition, and the trick is to pick the best candidate. Other openings have very few applicants, none of which are perfect, and the trick is to pick the best candidate. Often, the situation associated with an opening lies somewhere in between, but the recurring theme is the same: the trick is to pick the best candidate.
Recruiting starts with some deep thinking about what is desired in a candidate. Teams vary widely in this regard. Some teams focus on "heads down productivity", where a team member is considered good if they can produce 8+ hours a day of code with a defect rate < 10%. Some teams focus on the "marketability" of its members, where the developer being able to talk to the customer and help sell the product/service is the priority.
When filling a "senior" role on a small developer team, the candidate should be easy to talk to and able to communicate clearly. They will be required to lead projects, and help formulate standards, processes and procedures so they should have some project management ability as well as a strong method of organization and attention to detail. The team member will have to understand more of the business, and be able to operate more independently. A "senior" level developer should be someone that can be a backup to the supervisor or manager. Their technical prowess and experience should be advanced.
When filling a "mid-level" role on a small developer team, the candidate should be capable of some project management, and demonstrate that they understand processes and procedures. Communication, organization and attention to detail are very important. Their technical prowess and experience should be significant.
When filling a "junior" role on a small developer team, the candidate can be much less experienced, and their communications skills can be less advanced. The developer should still have a good technical knowledge foundation.
Once the candidates make it past the initial screening, they should demonstrate three main qualities:
- Ability - Technical ability is very important, though the abilities required and the level of competence with those abilities will vary from role to role. This is also the only one of these three qualities that can be learned.
- Intelligence - Intelligence goes hand in hand with ability, especially the ability to learn new things. This is one of the most important traits of a technical employee. This quality will let you know how easily the applicant can learn new skills or remain current with their existing skills.
- Passion - The best technical team members will demonstrate passion for technology. The passion does not have to be directly related to the job, but it helps. A passion for technology leads to the desire to improve ability.
Interview questions should be open ended and vague. The candidate will share more and show more of their intelligence, ability and passion if they are allowed to speak freely. Likewise a poor candidate will often be exposed when they start to stumble.
No matter the size of the applicant pool, technical testing should be devised specifically for the desired role; and should be required of all developer candidates. Thorough technical testing is most important for high demand roles with many applicants, but for smaller teams with fewer applicants, the testing can be more abstract. Large applicant pools will contain more viable applicants and thorough technical testing can often prove the difference between two otherwise equal developers. The ability to learn the necessary technical skills is always more important than the skills the applicant starts with, but having a "head start" can save a lot of training time. In either case, the testing should be observed. The interviewer can learn more from how the applicant works to solve the problem than they can from whether or not the applicant got the answer right. The ability to trouble shoot the problem is as important as the ability to write a good while loop. Likewise, it is very telling to see how a candidate handles the pressure of being observed during the process. A good casual developer will sometimes collapse into distracted incoherence where a cool, level headed applicant may be able to extend the calm demeanor to future meetings and presentations.
Hiring a new team member is rarely fun, but with a little practice and preparation, the danger of selecting the wrong person can be mitigated; and the situation can be transformed from a "necessary evil" into an exciting opportunity.
No comments:
Post a Comment