A big issue in modern hiring, IMO, is the combination of diverging specialized platforms and languages combined with overemphasis on keyword-hiring.
When I first got into the industry you had:
---
* old fogey LISP programmers
* old fogey FORTRAN programmers
* old fogey COBOL programmers
* Assembly programmers
* C/Win programmers
* C/Unix programmers
* C/Mac programmers
* some people on the cutting edge looking at this new "C++ thing"
* everyone else
---
I mean, sure you had some specializations but nothing like what you see now. Now you have:
---
* young retro hipster LISP programmers
* JavaScript/Client-Side programmers
* JavaScript/Client-Side/jQuery gurus
* JavaScript node.js programmers
* Python programmers
* Python/Django programmers
* Ruby developers
* RoR developers
* Java/EE programmers
* Java-Android programmers
* Clojure programmers
* Scala programmers
* Perl programmers
* .NET/C#/Win32 programmers
* .NET/C#/Silverlight programmers
* .NET/C#/WP7 programmers
* Objective-C programmers
* C programmers
* Embedded C programmers
* C++ programmers
* Embedded C++ programmers
* Go programmers
* D programmers
* Game Industry programmers (usually C++, often treated as a wholly separate category)
* PHP programmers
* etc
* etc (this is maybe 10% of the list I could generate without getting into the really obscure stuff)
---
Of course a spectacular programmer can pick up a new language/platform quickly and is usually learning non-day-job related programming languages on his or her own time anyway, but I've still both experienced and heard anecdotally of many situations where spectacular programmers were passed over without a second glance because they didn't have "at least X years of KEYWORD-HEAVY-SPECIFIC-TECH". Viable commercial quality languages and platforms are diverging way beyond the ability of even the most passionate programmer to be regularly using all but a small minority of them.