Long term everyone is teaching themselves to code, or picking up skills on the job. Maybe I'm an idiot, but almost every skill that I have has gone almost 100% in and out of cache over the years. Having had a decent foundation at one point is probably helpful, and struggling through a highly mediocre CS PhD (the program at CMU was excellent, but I was pretty shit at the research side) gave me some lifelong skills and interests. However, almost everything that I can do semi-competently now is a product of repeated independent study and learning on the job.
Many of the skills that I now think of as bread-and-butter weren't even a thing when I was an undergraduate or early grad student. SIMD programming was pretty much non-existent on mainstream processors (although I learned some nice parallel prefix stuff in a parallel algorithms course). Computer architecture is hugely different. C++ is nearly unrecognizable - when I started C++ programming, half the language wasn't even really there (no templates, and exceptions exploded in weirdo ways) and the emphasis of how people programmed back then was totally different.
In the end, everyone will either be a self-directed learner or GTFO into management.
The skills you will get from university can be deeper, but I've met plenty of people who managed to escape CS degrees without learning anything profound. They can also be 'wider' - I learned a lot of useful stuff in pure mathematics (graph theory and combinatorics). There's nothing stopping a truly inquisitive person from picking up a lot of this on their own, but the structure of university is good for a lot of folks.