It seems to me that the specialist that's most needed is the "full stack programmer"
It used to be like this, back in the day. When I started doing Java professionally (1996, yes really) anyone who did Java did all of Java and could reasonably be working on a GUI one day, a network server the next, databases, native code, compiler internals...
Fast forward to say 2001 and the game has changed, now there are specialists, I did JDBC and Swing and never touched mobile edition, and barely touched EJBs, etc etc. It just got too big. Greybeards I know tell me stories like that on the Mac, System 6 was the last MacOS where one person could hold the entire thing in his or her head. Come System 7 you had to specialize.
Maybe nowadays you can be full-stack in something relatively simple, e.g. LAMP but even then, the L is Linux and the guys who do both LAMP websites and Linux kernel hacking you could probably count on one hand.
It used to be like this, back in the day. When I started doing Java professionally (1996, yes really) anyone who did Java did all of Java and could reasonably be working on a GUI one day, a network server the next, databases, native code, compiler internals...
Fast forward to say 2001 and the game has changed, now there are specialists, I did JDBC and Swing and never touched mobile edition, and barely touched EJBs, etc etc. It just got too big. Greybeards I know tell me stories like that on the Mac, System 6 was the last MacOS where one person could hold the entire thing in his or her head. Come System 7 you had to specialize.
Maybe nowadays you can be full-stack in something relatively simple, e.g. LAMP but even then, the L is Linux and the guys who do both LAMP websites and Linux kernel hacking you could probably count on one hand.