Developers generally fit into two broad categories -- those who learned to program on their own at age 10 or so and those who decided to pursue a CS degree because the job pays well or they like playing video games. 7 years of experience beats 4 years of college and 3 years experience pretty much every time.
Unfortunately, a huge amount of CS degree time is spent dealing with those with no experience (We have remedial Math or English classes, why not remedial programming classes?). When I hit college (pursuing EE with CS on the side), I already had almost a decade of programming under my belt. I coasted through anything programming related (I'd already found and read books on the theoretical side of programming, so even those weren't that interesting).
At the end of the college road, the people with college only were mostly worthless. They may be able to parrot the big-O notation, but they couldn't tell if a function would be efficient. They could talk about design patterns, but they couldn't handle systems more complex than a couple files. That's nothing against them, I (and others who had been programming from an early age) simply had a lot more experience in thinking in that way (and over time, most of them have become much better).
We need to introduce programming to all children at an early age. Not because everyone can code (that's not at all backed by any studies I've ever seen), but because lots of kids don't find out that they have a knack for programming until college (or not at all).
If most CS students had been programming since middle school, CS could drop a bunch of the remedial classes and focus on the finer parts of programming. Many so-called masters classes are within easy reach if you have some programming time under your belt. Companies would be a lot more willing to hire a dev out of college if they knew college was worth something. Until that happens, I don't think a degree is actually better.