This kind of relates back to the Specialist vs. Generalist questions, which I know that Both is the correct answer for, but I am coming at it from a different direction. I do the interviewing for new software development candidates, and we currently evaluate heavily for specific language skills and knowledge and look for specific language experience as one of the criteria for hiring. We also look for the candidate to be a well rounded generalist, but that is secondary to them be a great specialist. This is all fine and good and we have hired a number of really fabulous programmers and are not hurting to hire anyone else.
But I have been thinking. If I am presented with two candidates, the first being a specialist in our language, but very little other experience (poor generalist), and the other candidate being a fantastic generalist, with only passing knowledge in our language (but specialization in other languages with similar characteristics), while everything else is equal, which would be a better hire?
We have no plans of switching languages, so other language skills are not directly applicable. Generally I am leaning towards the specialist, because they have less to learn, but I am wondering if the fantastic generalist (with other specialties) might be as good of if not a better choice.
My thinking is that of the skills required to do the job:
- Framework specific experience
- Language specific experience
- General software development skills
- General software debugging skills
- Good design skills
- Domain specific knowledge (or target industry)
- Understanding of the existing code base
The ones at the start of the list are documented much better (thus easier and quicker to learn) than the ones at the end of the list. So much more so, I would say a generalist who excels at #3, #4 & #5 would be much more valuable than someone only with skills in #1 & #2 (even if those are very deep skills) since those are easily discovered through reference documentation. Granted it seems unlikely that someone would have good skills in #1 & #2 without some of #3, 4 & 5.
With #7 & #6 being the hardest to gain, that makes existing employees way more valuable than new hires, no matter how good their skills are in the first few areas.
At my previous job they hired me in part for my specific language experience, but shortly after I was hired they got a new manager who decided he liked some new shiny Microsoft language, so we started rewriting everything. My specific language skills were no longer relevant, but I still found myself promoted to the lead developer over other developers with more specific language skills in the language du jour.
All things being equal in generalization, when there is a specific language in use it makes more sense to hire a developer who has specialization as one who does not.
The question:
Enough explaining my position. I am curious what the consensus is on Stack Overflow. Is it more important to hire for language specific skills? Should language specific skills even be a criteria in hiring? Is it better to have developers focused on development in one language once they are hired, or should they be moved between different projects (in the same domain) that use different languages? If you have a project in a different language, but the same domain, and it is canceled, should the developers be laid off, or retrained in another project that uses a completely different language that they don't have skills in?
Thanks!