If you want to argue that elite schools in particular often over-rotate on the theory and don't do enough to get students hand-on I won't really disagree with you. But there is a distinction from trade schools.
Almost no CS major will get a job that will require them to write their own programming language and compiler from scratch. But having done that, I am way better off than if I spent that semester taking a bootcamp on the latest implementation details of the newest language or framework at the time, which is now obsolete.
The fact is modern companies don't want you to have the ability to acquire a new skill, they want you to have that skill on day one. This is even more true outside the programming realm. It's short sighted and counterproductive long term but when the next quarter's earnings are what matters, long term is but a an abstract concept.
I was expected to learn and become proficient in things like CSS and Javascript and HTML as well despite never taking a class on any of them.
My degree taught me how computing works, from the theory to the logic gates to the math needed to interact with basics in the field.
You know, companies used to spend money "training" their employees to do the things they needed to do. When computers first came around companies had to turn a mountain of secretaries into the very first programmers and computer administrators, and those mostly women bootstrapped the entire information economy. But that investment into human resources could better be spent on the CEOs private plane so they've spent the past 40 years bitching that "waaah waaah higher education doesn't make me cheap little worker bees waaah" as if you are entitled to free labor just because you "run" a business
Straight out of college, the hard truth is that you know virtually nothing, even if it sounds harsh ( and no you’re not a senior engineer after 3 years ). If I find someone who’s really good at c++ out of college, has started learning rust, wants to learn, and has good foundations, I’ll happily hire them.
The only exceptions I can think of are where you're hiring someone specifically to work on language tooling - e.g., to work on the core C++ library team at Google, you probably need some experience with specifically C++ or C and compilers thereof. Those would be very specialized senior roles, though.
For a counterexample, I hired this way for a long time.
Like you said, it works for university students because they don't have experience under their belt yet.
It becomes less effective as you get into more complicated languages/frameworks and you have less time to ramp people up.
In the worst case, we'd invest a lot of time mentoring people in a new language or framework and 6 months later they'd decide they preferred their old language/framework. They'd either leave the company to find a job that fit their preferences, or they'd become disgruntled and spend their days complaining about our language choice or trying to persuade us to rewrite in their preferences.
In other cases, people would try to write everything in the style of their previous language, even if it doesn't match the new language or framework.
It happened enough times that I now prefer candidates who already have proven experience in the language we're using. I won't exclude candidates who don't have experience in it yet, but it's rare that I'll pick a decades-long Python programmer for a Rust position, no matter how much of a Python wizard they are, as long as we have good Rust candidates in the pipeline.
Hiring for theoretical knowledge, hiring for abstract-reasoning skills, and then training ... sounds good in marketing collateral, but only the Googles of the world can afford to do it, and even Google may be changing their tune. (Of course, R1 faculty have never looked for an industry job in their lives.)
If you don't believe me, look at some job listings.
And it hasn't been my experience at all. But code camps are always an option.
This is the kind of thing that sounds great within the purely abstract world of an academic bubble, but falls apart at first contact with reality.
It's important to learn the foundations, but that shouldn't be treated as mutually exclusive with learning practical skills.
The skills you actually need are manuscript writing. Being able to read a dozen scientific articles a day and gleam what they are saying accurately. Being able to convert that into presentations for other people. Using existing knowledge to develop a research proposal that’s actually topical or relevant to the field today.
People don’t get that experience, at most a training wheels on sort of manuscript project in undergrad where you cite 5 things and only your TA is reading it, not peer review. As such for most people, the first few years of PhD are basically spent spinning your wheels in the mud until you gather enough of these untaught soft skills to actually produce work.
So if you consider the whole undergrad plus these first few years lost in the wilderness in gradschool, its like 7 of your best years gone down the drain because the training system for decades has been “figure it out.” Even as bad as today is, its still a little bit better than a few decades ago when people were spending even longer faffing about in PhD programs on average.
Colleges scoff at the idea of becoming "job training schools," but that is exactly what they need to be. The students are, overwhelming, there to "get a good job after college." Only a fraction of them will continue on to spend their entire career in academia.