I have a degree in computer science.  It has been great for opening doors, getting a job.  As far as helping me in the professional field of C# .NET programming (the most popular platform and language in the area I work if not the entire united states on hands down the most popular OS in the world) its hardly useful.  Why do you think it helps you as a programmer in your professional career (outside spouting off to prims algorithm to impress some interviewer)?

In today's world adaptation, a quick mind, strong communication, OO and fundamental design skills enable a developer to write software that a customer will accept.  These skills are only skimmed over in the cs program.  In my mind, reading a 500 page C# book by Wrox offers far more useable a skillset than 4 years of the comp sci math blaster courses.  Many disagree.  So, why does a computer science degree matter?

Why a computer science degree?:


I worked with a developer who stored thousands of items in a HashTable and then only iterated through the values. He never accessed through a hash. He obviously didn't know how a HashTable worked or why you would use one - a CS degree might help with that.
When working with regular expressions, it seems easier for people with exposure to basic automata theory and formal languages to reason about what's going on and troubleshoot their expressions - a CS degree might help with that.
A developer fresh from school may be able to decompose problems in various paradigm mindsets (OO, functional, logical) immediately, while a new non-degree developer needs experience before they can do the same.
Schools teach computational complexity. Non-degree developers may feel what's best but a formal understanding is sometimes nice, especially when explaining results to a colleague.
A degree offers an introduction to many models of the machine - hardware, OS, common data structures, networking, VMs. With these models in the back of your mind, it's easier to develop a hunch where a problem lives when something goes wrong. Again, non-degree developers build the same models but it takes time.
Expert guidance through any discipline may help the learner avoid dead-ends and missed topics. Reading is great but it's no substitute for a great teacher.


This is not to say that a CS degree is necessary to be a great developer. Hardly. Some of the best developers I've worked with have no degree. A degree gives you a running start. By the time you graduate, you've (hopefully) written a fair amount of code in various languages and environments to solve many types of problems. This puts you well on your way to the 10,000 hours required to be an expert.

A second benefit is that it shows employers you're able to commit to a long-term goal and succeed. In many companies, I believe that's more important than what you learned.
