When hiring, I often found the CS majors as having an inflated sense of their own abilities, and a general lack of knowledge of how programming is generally done in the real world - hacking on some other schmuck's broken legacy code that nobody can figure out. And a kid who started programming in high school and just kept working at it may have five years of real experience before they get their first job, and does it because he/she can't _stop_ doing it.
I'm really sick of how this seems to come up every time every time people debate the merits of a CS degree. Does it occur to nobody that maybe, just maybe, a fair chunk of the students who chose CS in college are also the kids who started programming in high school (or even earlier!) and have a fair amount of practical experience before they ever get hired because they work on their own projects? And that maybe their CS degree helped open their eyes to new ideas and furthered their learning? I don't understand why so many people on Slashdot insist on creating this false dichotomy, where either a person is passionate about programming and technology and learns a lot on their own or they have a CS degree and never pursue anything outside of their coursework.
Yes, it's true that some CS grads have an overinflated sense of their abilities and are clueless about the real world. But on the flip side of the coin, I've met some *amazingly* egotistical "self-taught" programmers who think they are geniuses because "I taught myself what those fancy pants CS kids *had* to go to school for!" I've seen people like that roll their eyes at "academic" concepts like database normalization and foreign key constraints because they "need to get the job done" and "don't have time for this crap".
All in all, I think I'm a much better developer for having gotten a CS degree. I think the most helpful way of thinking about my degree was understanding that it was a starting point, not an ending point. By the end of my degree, I had been exposed to broad enough range of stuff to be able to dive into subjects I found interesting without feeling like I was having to start at square one. It gave me the practical basis and theoretical problem solving skills to allow me to pick up new languages, technologies, and ideas.