Thursday, August 9, 2007

Get good results by hiring experience

Takeaway: The job market has never been more competitive, so management now has a pool of viable candidates. The pool is often divided among experienced developers with no exposure to the necessary tools and those with little experience but who know the buzzwords.


The tables have turned and tech employers now enjoy the upper hand in the battle for job candidates. Gone are large salary demands, perks, hiring bonuses, and the need to offer stock options. The economic downturn and resulting layoffs in the IT industry has flooded the job market with experienced job seekers, so management has become more stringent in the interview process. Each job opening demands a certain level of competence, so the manager must decide what type of person they want before beginning the interview process.

As a project manager, I recently served as the interviewer for an application developer position with a focus on .NET. Throughout the process, I recognized a trend in the candidates. First, there were a number of individuals with plenty of development experience but no experience with .NET. On the other hand, there were plenty of candidates with little experience but who were familiar with .NET. The buzzwords (e.g., ASP.NET, C#, etc.) are easy to drop, with no real working knowledge of the technology. .NET is such a hot technology that even somewhat experienced candidates are hard to find. So, which candidate is the better choice when you’re in a hiring crunch: The experienced developer with no exposure to .NET or the relatively inexperienced developer who knows all the right buzzwords?

The value of diverse experience in programming languages
As a developer, I believe developers need to learn more than one language. In fact, one article I recently read suggested that a developer should learn a new language every one to two years. You may find this idea ludicrous, but it has merit.

Application development is more than the core language or syntax; it is a way of thinking. And this thought process is improved over time as more and more development projects are tackled. In addition, using a new programming language often introduces new concepts that may or may not be useful in other languages. In fact, a whole area of study, called patterns, concentrates on common programming problems.

With that said, an experienced developer, fluent in more than one programming environment, displays the ability to learn. Also, having a general idea of application development makes it easier to tackle problems. Saying “I am a self-starter” is a standard response in the interview process, but the experienced individual actually demonstrates this ability.

A real-world example
As a project manager, it is my job to ensure that projects are on the right course and all team members are productive. On a recent project, one junior, relatively inexperienced developer worked furiously on a piece of code that worked with text values. His patience was exhausted after many hours, so he turned to the more experienced developer for possible help. The experienced developer suggested the use of regular expressions to solve the problem. Regular expressions are a relatively new concept for Windows developers, but they have lived in the UNIX world and other languages for years. At that point, the problem was quickly solved and the younger programmer gained a piece of valuable knowledge to be reused over and over again. Though the inexperience of the junior developer could have been detrimental to the team, this type of mentoring is beneficial for both senior and junior developers—it's beneficial for the junior member to learn, and it's good for the project if a problem is quickly resolved with the aid of an experienced team member. It’s therefore vital for managers to emphasize this type of communication within the team.

Test the candidate
A final point to consider is verifying individuals' credentials to ensure that you don’t have novice candidates trying to pass themselves off as more experienced than they actually are. I have already discussed my preference for experience, but do you take a person’s word that they have developed with Java, C++, and Ada? I say no, but you may disagree (and regret it—e.g., when the new hire ultimately can’t do the job). Developers usually enjoy quizzing prospective candidates, so tap your present staff if possible for a kind of team interview. In addition, there are a variety of online services that can help with candidate testing—Brainbench is the most prevalent. You could also accept certifications in place of an actual test. Whether or not a test or certification is accepted, it does provide a measurement of a person’s proficiency in the given technology.

How does a newbie get a break?
At this point, you may be wondering why a person with relatively little experience would ever be hired. There are opportunities for greenhorns on development teams. Ideally, a project would have a mixture of new and experienced developers with the more experienced individuals assuming roles of leadership. This is often achieved by using a more experienced person as the Technical Lead on a project. Less experienced developers get direction (including technical specification or design) from this person. This allows the new developers to lean on the experienced individuals for help.

Making the decision
Assembling a project team or adding a new employee (or consultant) to the team is a time-consuming process that is unique to each organization. A mixture of both experienced and inexperienced persons can yield good results, but a time-sensitive project requires the know-how to get the job done—when you can’t afford to lose time to on-the-job training. In the end, an experienced individual is much more valuable to the team when compared with the alternative, which can be detrimental to the project.

No comments: