>This creates a distinction of caste: the "regular programmers" are relegated to maintenance work, never trusted to touch any of the mathematical and CS-degree-requiring parts of their own discipline.
Perhaps it's because people with formal training and degrees often have better skills than some random kid who taught himself javascript and thinks that that makes him a software engineer?
Mind you, I'm talking about how companies like Google and Facebook treat the people in their "Software Engineer" role, here. They already have a minimum hiring bar that ensures "formal training and degrees", and in fact ensures the skills themselves. They do ridiculous technical interviews that ensure the "average programmer" at these companies could probably code every part of the distributed system underlying a NASA Mars rover mission by themselves.
And then, having found all this great talent, they let it rot, under-employed in maintenance work. Because they were hired to "do programming", not to "do data science" or "do machine-learning" or any of the other 'specialized disciplines' that they could totally pick up given about two hours, given how freakishly intelligent they already have been proven to be.
(If you're wondering, this isn't bitterness; I've never worked for these companies myself. I'm just summarizing a number of rants I've heard from others.)
Perhaps it's because people with formal training and degrees often have better skills than some random kid who taught himself javascript and thinks that that makes him a software engineer?