Too often we see job requirements for development positions with a long series of bullet points:
- General Tech X everyone has heard about, 5 years
- Specific Tech Y that came out last year, 3 years
- Specific Framework Z that few people use and only takes 5 days to learn, 5 years
- General thing you were taught in college, 10 years
I can understand this practice from a recruiter’s or HR’s point of view. It is difficult to gauge the skill level of something you have no clue about and you want to filter out as much candidates as possible before having them for an interview. But I do not feel the practice is worthwhile, it’s just lazy.
The skills dilemma
First of all, a specific number of years does not imply skill. You could have written Java code for dead-simple CRUD programs for 5 years, not knowing 50% of what the average Java developer knows and still qualify.
The following phrase I encountered on Programmers StackExchange sums it up nicely:
five times one year of experience
Some people for various reasons will have matured in 5 years, others will have repeated the same experiences and be no farther after five years then they were after one.
Finally, while general experience will teach a developer invaluable lessons, prolonged experience with a specific technology will net diminishing returns after a few years. As more and more features are added to a framework or language, experiences gained five or more years ago will have been with a product that was very different from what it is now. Thus some of these experiences might not even apply today.
The “we feel we need someone yesterday” mentality
What baffles me most is when I see this hard “requirement of experience with certain technologies” coming from someone amongst the more tech inclined crowd.
Hiring talent will be better in the long run. A talented individual will learn the tech faster than an average developer anyway, and when he does, he will be doing a better job. Some common reply to this is: “we need someone to be productive right now”.
If you feel you need someone to be productive right now and don’t care about hiring the best candidate for the long term, maybe you should be hiring a temporary consultant rather than a permanent employee.
Besides, no matter how experienced with said technology, most people will need a ramp-up time to attain maximum productivity when joining an existing project. A smart person will be able to start mastering a new technology while learning all the other intricacies of the project at the same time.
I have seen a company hold out on hiring because they wanted someone with a very specific set of skills and level of experience and couldn’t find one. Suggestions to hire based on talent were dismissed with claims that they couldn’t afford the training time, they had to find someone who would be productive right now.
Months later, they still hadn’t filled the position. Sure, they had tried out some rare candidates who filled the prerequisites; X months with technology Y, X years with framework Z, but none had worked out.
Instead, had they hired someone with skills, intelligence and the right mind set, that person could have learned said framework and have been a productive member of the team by then.
In another situation, I remember doing a phone interview a few years ago for a company developing UI controls for a certain application framework. I was told I was a great candidate and they would have hired me if it wasn’t for my lack of experience with said application framework.
About two or three years later, said framework was pretty much discontinued. I wondered what that UI company was doing since it’s main products were UI controls for an abandoned application framework. Sure enough, they had converted their offerings to HTML 5 / CSS 3.
In such a situation it pays to have a team that is quick on it’s feet, learns quickly and stays up to date on various parallel technologies. Even if your current tech stack doesn’t get abandoned, having a team of quick-learning generalists will allow you to use the right tool for the job for each project, rather than make another Rails app because that’s all the team has ever did.
Smart, determined, result-driven people will get the job done. They’ll also turn around pretty quickly when you suddenly need to change framework, platform or language.
Why settle for someone who fills check boxes on a requirements list? Hire the best possible candidate. If you can do both, excellent, if not prioritize talent.
I’m not saying years of experience do not have a great value. Years of experience have great value. I’m saying talent trumps years of experience with a specific technology.