I partially agree with your points.
"A generalist was a specialist at some point."
It's true but when you choose to become a generalist, you spend a lot of time on different technologies, you will never dive deep as a specialist. This may not be a problem for easier domain like mobile or frontend development but for cutting edge skills like deep learning, compiler, etc, you have to put much more time to master them, so become a specialist would be a better choice.
Being a generalist doesn’t bar you
from being a specialist.
Compilers are something I know (a little) about. Here are two examples of prominent generalists who work in the field of compilers.
Anders Hejlsberg designed/architected Turbo Pascal, Delphi, C# and TypeScript.
Rich Hickey was a .NET specialist before he created Clojure.
We’d normally view them as specialists but wouldn’t you also consider them generalists?
You might never get the chance to hire Hejlsberg or Hickey into your team, but there are many, many developers out there who have the same problem-solving mindset.
Maybe what I’m trying to say is that if you’re a novice developer trying to choose between generalising or specialising, then don’t worry - because it’s a false dichotomy. Just do whichever you feel is best for you at the moment. There will be always be more time later to shift gear.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.