I tend to agree, and for strong performers/individuals (or just people who are willing to learn quickly/go outside of their comfort zone), it is often possible to become proficient at many ‘specialized’ roles. Especially with softer things, like moving between Java/C#/Kotlin/Swift, or Android/iOS development. There’s a lot involved in each ecosystem, but there’s also a lot of commonality. And, frankly, we shouldn’t pretend like the average contributor on every team is a genius.
There are still roles that probably do require actually specializing to become great at (e.g. graphics/game engine dev comes to mind) but those roles are comparably rare. Most of the Android/iOS/Java/C#/React/JS/TypeScript/etc developers I’ve met could become proficient in any of those other technologies, they just choose not to, perhaps out of comfort. FWIW, in my personal experience, willingness to learn new things/broaden perspective & skill base (a.k.a. being a generalist) is correlated with job performance to the point where ‘not in my job description’ and ‘no I won’t learn UIKit, I’m an Android developer’ stand out as major red flags. “I don’t have time to learn React because I need to familiarize myself with the 8 new types of pointers C++ added this release’ feels a little more reasonable, but again, the great C++ developers I’ve met are still willing to get their hands dirty in other areas.
Tl;dr specialists are (usually) generalists with an attitude problem