I've had this position in other comments, but I'll say it again - College degrees don't teach you how to do a job, and don't necessarily equate to job performance. To that end, it really doesn't matter what kind of degree someone has. A college degree is about broadening horizons, teaching critical thinking, and exploring subjects in slightly more depth in a controlled environment. I had taken plenty what we now call "STEM" courses in the process of pursuing a Harvard undergraduate degree (of which they don't offer a "science" degree in the classical sense anyway!) A greenhorn college grad will have been exposed to many valuable situations, and a college degree says that they can think and have proven that to some number of accredited boards to their satisfaction. They will still need job training, additional learning, and just plan ole' experience. Some people will be just better at certain types of jobs, and not at others. Do people who choose a particular degree type self-select? Maybe, but there are plenty of medieval lit majors out there programming, and they do it just as well as an EE or CS major.
Oh, and grad school is about torture and the ego's of the adviser committee. It means you spent a lot of time as a serf eating ramen noodles. It may mean you know a lot about almost nothing...
We've been arguing this for more than 20 years. Not much has changed, and it's not a new question. Code Slinger vs. Book Knowledge. College of Hard Knocks vs College of Ivy. I'm a greybeard now, and while I won't pretend to answer the whole question, I will provide some perspective...
I was a code slinger type - Right out of high school with some programming knowledge, some commercial success (with the C64), and whole lotta balls. I did some college, but it wasn't for me at the time. It didn't connect with what I wanted to do, which was code. I joined a contracting house, and they sent me all over the country. I learned more in 10 years doing that than any college would ever teach. Databases, Integration, GUI's, network programming, mulithreaded programming, and real-world problems, both programming and political. C, C++, Cobol, Fortran, BASIC, assembly (various), and eventually Java.
In the late 90's, I went back to school. Why? Not to learn programming - I was already at the top of my game. I went back to learn all the other stuff, and to do other things. I took psych courses, math courses, art classes, electronics, music, law, languages (Living: French, Dead: Nahuatl)
Do colleges teach some basics? Sure - Data algorithms and Graphics programming were very useful. Are they realistic? Not really - sometimes horribly so. Massively Parallel Programming was a mess of math decomposition problems I dropped quickly. Did I need them to enter a career of commercial programming? Nope.
I would say college education is not a prediction of coding ability. Having a college degree when you are entering the field can be useful, but having a CS degree IMHO is not any more useful than a general BA or BS. If you go to college, go to get a general education, learn how to think critically, expose yourself to some interesting things - but it is NOT a training program for coders. Technical schools are a whole 'nother thing, and I would avoid them like crazy. My experience is that they do train you, but the training is narrow and short-sighted. In the end, it would be throw-away time, and the student would have very little gained.
College? Sure - go do it. You will be a better person, and you will have some great social experiences. But if you want to code, you need to put the time in yourself and learn the skills. College won't teach you that.