It really is like the difference between a degree in physics and being a car mechanic. You can be a great car mechanic without a degree in physics, but the intent of the physics degree isn't to create great car mechanics.
I was probably a better C programmer at age 15 than most professional programmers I've run across in my career. With that said I didn't know about the Halting problem nor the Chomsky Hierarchy nor even things like amortized cost nor really any asymptotic complexity analysis. Do any of those things help me at my day job... maybe a little, but not much. Certainly I'd be better served reading the .NET Fx docs or Java docs or some JQuery books. But that's not why I got a degree in CS.
It's not a misunderstanding. You just can't get a degree in programming. 90% [1] of students in CS departments are there to be industry coders.
[1] True bogus fact.
But in the case of programming, it's the opposite. Computer Science is a subset of what you need to know to be a programmer.
Are you getting at the pursuit of higher understanding angle i.e. separating the pragmatic pursuit of workplace advancement from the more selfless or idealistic pursuit of knowledge?
It's goal is to take great ideas over time and teach those ideas to new students of the field. And computer science as a field is more about the science of computing, than it is about programming. Generally programming is taught as a way to understand different manifestations of computing.
To answer your first question, pursuing a profession in programming doesn't require a CS degree. And it's probably only marginally beneficial to improving the quality of your work in _most_ programming jobs. I do think we can view programming as more of a vocational skill. There will be some jobs that require CS backgrounds, but for the most part it's a lot closer to writing in that there is a suitable job for almost every level of skill.
The second biggest benefit was that I was introduced to psychology as a science, and not some pseudo-intellectual horsing around as it was made out to be in high school. Ditto for economics. Taken together with the other cultural studies I dropped in on, it was something that's been fairly difficult to replicate now that I'm out of school. I'm actively trying to recreate at least some part of that experience now (using technology of course ;).
The clincher is that my alumni meetups have been nowhere near as enlightening as college was. I sometimes wonder if some people took boring pills during graduation, or if it really was the diversity that brought it out in people.
In all, college is what you make of it, just like real life.
You also have to consider that many people do not attend college out of a pure monetary cost-benefit analysis. Besides, even if one did, it's heavily subsidized by Uncle Sam, so until the bubble hits its peak* (like housing), it's still a fairly safe bet.
*I believe humanities and other equally non-vocational degrees have already peaked.
the whole argument about whether or not school is necessary is ridiculous. each case has its own variables. the zoho case he references, they setup their own academy to TRAIN their people to work the way they needed.
Fred Brooks claimed that education and training for programmers was extremely beneficial - but he was writing in a time when many programmers were writing operating systems and compilers. Additionally, structured programming (ie. without gotos) was a (relatively) new idea. Therefore, I tend to think that today, when the vast majority of programming tasks aren't nearly so difficult and our tools have improved so much, and good practices are generally known, that programming is much easier, and training isn't nearly as important as it was.
Even for creating new ideas and tools (eg. Thompson's regex search; pagerank), it's more a matter of being super-smart, IMHO. Of course, it helps if you know the basis of the idea (eg. what a regular expression is). If you want to prove those ideas, however, I think academic training is very helpful - but in mathematics, not computer science.
I'd say that depends on what problem one is working on. I see algorithmic problems come up all the time, and I occasionally see a total failure on an algorithmic issue among the (largely college-educated) people I work with.
A lot of the time it's a formal requirement to a job application.
//hs dropouts represent!