The issue is that you have too many universities. Not everyone should be going to college, not even most people. Leave it for the top 20,30% of people to test into, and then pay for their education. This includes mandatory research on something useful. You don't write a senior thesis (literature analysis doesn't count), you don't get a degree, and have to pay back all that money. So you better be damn sure you're smart enough to do college and motivated enough to use it.
High school is fucked up too, but thats a completely different story.
I don't entirely agree with you, but I do think there has been too much of a focus on university and not enough on apprenticeships--because companies don't want to train people anymore. The US used to have Supreme Court Justices who'd never been to law school, they'd just had an apprenticeship.
On the other hand, I've seen a lot of comp sci people say they think the self taught software developers with lots of certs types aren't as good as people who've been to college.
The problem with law school in the US is there's no regulations on it. There's laws about how many doctors there can be, but not lawyers, so shady schools will open up law programs (since it doesn't require equipment it's cheap), enroll lots of students and make tons of money, and then throw them out into the world to flounder.
Apprenticeships force companies to share the risk with the public, and makes them responsible for the quality of the lawyers/dancers/plumbers they produce. Also reduces waste, you only learn what is needed, saving years of your life and a lot of money.
Comp sci requires tiers of certs. From basic code monkey (python, scripting, vb.net, no theory, game modding, high school) to software engineer (oop, practical theory, vocational and apprenticeships) to computer scientist (lots of math and theory, basically a subset of a math degree and taught at uni).
You also need to break the field up laterally. Certs for:
* operating systems dev - c, some theory relevant to oses, some compilers instruction, operating systems practicum
* embedded systems dev - c, asm, vhdl, reverse enginnering, basic electrical stuff (no clue)
* database design - itself should have tiers from admin to dev
* info systems which spans both hardware and software
I think unis should exist only as entities supported by industries and states to produce workers that require lots of investment. Everything else you can learn online, in a library. Apprenticeships for the remaining fields. This way a motivated guy could teach himself practical stuff until a uni or company decides to take a risk on him and pay to learn higher tiers or an apprenticeship.
K-12 is a shitshow, basically babysitting. Should be grouped together based on abilities and inclinations, not age. More like 1 through 9, then you try a bunch of 2 week long mini-apprenticeships in 10th, then choose one in 11th and keep at it in 12th.
Thus you get a shallow intro knowledge of a lot of a few fields, and you take steps towards mastery in one.
Those so inclined and gifted start training for intro uni tests (literally college prep for a change) in 11th and 12th, and once they pass they can start uni.
Simple and cheaper than the existing system.