Re: Specialist or generalist?
The specialization has gotten out of control in IT. There are so many technologies now and companies seem to want to match up exactly with what you have done. It used to be if you were a programmer, it didn't matter what language because it was assumed you could program in any language, whether you'd ever done it before or not. Now, as @Bob says, a Python programmer can't possibly code in PHP or Ext JS, at least in minds of HR.
That started to change, slowly at first, when Object Oriented Programming came into existence. Some of the old guys like myself from COBOL/RPG on mainframe days just couldn't adjust to that style. When Java use exploded that really came to a head. Now there are dozens of other languages like Java, knowing java doesn't necessarily get you any of those jobs.
Then Touch/mobile exploded on the scene, requiring a completely different paradigm on how you write the UI and programs, regardless of programming language. Now a Java programmer can't get a Java programming job because he never wrote Touch/smartphone apps before.
You can't keep up as an IT person anymore, it is not possible. I just laugh when I see all these self professed experts on security, mobile development and (my favorite) cloud. You're an expert? Really? And exactly how did you become an "expert"? Schools don't have experts teaching in very many places. You didn't read yourself into becoming an expert. The only true experts were just poor saps like ourselves who found themsleves thrust into the bleeding edge of one of these technologies and learned enough to complete a project. But most are hardly "experts", not like they have worked on same technology for 20-30 years like most of old timers used to do.
I have no idea what the fix is for this mindset. What is a new person entering IT supposed to focus on these days? Because chances are extremely high what they learn won't be used 5 years from now.