With programming you can build something gratifying and real at no cost, which, if you're good enough, can actually lead to monetary reward rather quickly. This type of instant and rewarding feedback is immense when it comes to learning something.
Think of every other STEM subject. With Chemistry, sure you can learn about the subject, but to perform experiments you need money to buy materials, and nobody will hire a chemist without a degree. With Physics you're in a similar but different sort of situation, where even if you could afford the materials, you're limited to rather boring experiments along the lines of projectile motion, which doesn't seem to offer an rewards unless you become big on youtube. With engineering, I guess you can build some stuff, and that might actually pay off in the long run and be useful in the short run, but again, material costs.
With programming you just need a computer and you can pretty quickly make something that you can monetize, even simply using free hosting if you're idea is decent enough. With a super minor investment in a market license you can put a good enough app up and start making bank. The only real limit is your brain.
The skills for other career paths do not have this confluence of circumstances. Learning accounting is a lot of bookwork, you can't just "dive in". Learning to be a car mechanic, you have to get dirty, you can't just read a bunch of textbooks. You want to become a martial artist, you can't just kick a tree a bunch and become an expert. But you can do the equivalent for programming and be just fine.
I'd really like to learn quantum mechanics and particle physics, but I see almost no alternative to going back to school. I took lots of Calculus and had two semesters of Physical Chemistry, but I doubt I can rely on that much now. I've thought about hiring a university student as a tutor, but even that seems inadequate...
[1] https://en.wikipedia.org/wiki/Schr%C3%B6dinger_equation
Of course, figuring out how to use that equation may require lots of work but I think that is pretty much it. I 'm no physicist but at least this is were I would start.
It is similar in Electrical Engineering and Mechanical Engineering. In Electrical Engineering pretty much everything derives from Maxwell's equations and in Mechanical Engineering everything derives from Newton's Laws of motion. Everything else is just details.
If you want to learn QM, you should pick up Griffith's "Introduction to Quantum Mechanics" and work through it. It's a readable undergraduate level treatment that hits all the important stuff.
For the world I've lived in for the last 25 years, commercial and contract software development, I would go so far as to say a degree in some sort of computer science is actually a detriment.
Going through the list of co-workers I've had, there is a definite pattern of the ones that were self-taught were better programmers than the ones with degrees. Of course, there were exceptions, but it was when someone caught the programming bug before they went to college.
It seems that the success of our industry caused people to get the idea it was a great degree for getting a good job after college, but they didn't realize it takes passion to stay on the perpetual learning curve. They are often difficult to get good results out of, both technically and personally.
Anecdotally, our current team of 15 the, 5 of the 6 best programmers are self taught, including the excellent lead programmer (well, one of those 5 is a college drop-out, as am I). One of the first programming jobs I had was for a what most of would consider an industry luminary of his day, and he was self taught. When I moved on the next job was run by a self-taught programmer, as is the company I work at today.
I'm not saying a degree in something computery is bad, it just not the advantage the other degrees seem to be. And to a certain degree (no pun intended) I wish it was. It just doesn't seem like a computery degree properly prepares people for the actual rigors they will face.
But in the end, the proof is in the pudding. When you've got to deliver, and the people who deliver best are self-taught, then in really reinforces that assumption.
You have to draw a distinction between programming as a skill and holding an accredited degree in Computer Science. You can certainly learn to program some useful Python without learning advanced Analysis of Algorithm, Abstract Algebra, Type theory, Building compilers and many others at University.
What level of skill is needed is highly dependent on context. There is a vast need for programmers with a freshman or sophomore level of programming skill who have some domain specific knowledge in practically every industry you can think of. Having a degree requirement for most of these positions would result in highly over qualified people and a rapid turnover.
If your project requires skills that only someone with a degree is likely to have then by all means put that as a requirement. But there are many positions that simply do not need upper division skills to get the job done.
I've seen PhD developers who can't code their way out of a wet paper bag so we can all make sweeping judgements :).
What a load of bollocks.