Your line of thought relies very strongly on the assumption that the skills of software engineers are tied to the particular language or framework they are using. Surely that's just complete nonsense?
> the skills of software engineers are tied to the particular language or framework they are using
Well, not all of them of course, but yes, knowledge of a particular language matters.
For example:
a) idiomatic code in a given language is easier to maintain, a programmer who doesn't know this language won't write idiomatic code for awhile
b) lack of knowledge of available libraries may result in reinventing them poorly, leading to NIH syndrome, which is bad for maintainability... and just bad in general
c) std lib of a language is a special case here: without having memorized what it has to offer you're going to work many times slower due to having to google all the time
and so on.
You can either know a lot of languages and technologies and bet your career on ability to learn new things very quickly, or you can be content with one language and become a master in using it. In the latter case much of your skills do become tied to the language and particular technology, so just be sure to pick one which is not going to stop being popular in a year.
Well, I wasn't thinking of specific skills for a given language/framework, but maybe more how those frameworks help you evolve along with the tech landscape.
I started my career around 15 years ago, working on a complex server system written in C++. The important skills back then were all about managing concurrency using mutexes, RW locks, events, and so forth.
Fast forward to now (with lots going on in between), and I find myself working again on server software, but this time the approach is much different: now for dealing with concurrency I'm relying on immutable state, and using Futures or actor systems to coordinate parallel work. It's been years since I've had problems with a deadlock.
Bottom line, it's true that a good programmer doesn't care about language or framework, since he can pick those up pretty fast anyway. But it's a skill that needs practising, and I've seen people neglect this and then regret it later.
Well, not all of them of course, but yes, knowledge of a particular language matters.
For example:
a) idiomatic code in a given language is easier to maintain, a programmer who doesn't know this language won't write idiomatic code for awhile
b) lack of knowledge of available libraries may result in reinventing them poorly, leading to NIH syndrome, which is bad for maintainability... and just bad in general
c) std lib of a language is a special case here: without having memorized what it has to offer you're going to work many times slower due to having to google all the time
and so on.
You can either know a lot of languages and technologies and bet your career on ability to learn new things very quickly, or you can be content with one language and become a master in using it. In the latter case much of your skills do become tied to the language and particular technology, so just be sure to pick one which is not going to stop being popular in a year.