What is the value of a Computer Science degree?
snell-pym.org.ukThe phrase "You have to start somewhere" comes to mind. A CS degree is a more formal and substantial pursuit than what you may have picked up doing it yourself. Could you code without a degree? Of course. Are you very likely to be a better developer after completion? Yes.
I think a lot of it comes down to establishing a set of tools that can be used for whatever problem you encounter. No matter the language or the problem you want to have at least a vague idea of how it might actually work. Further, when you in inherit a code base, you want to have the tools to dig in and find out how the thing works. And when problems arise, you want to be able to get inside the black box and ask things like "Does this result make sense."
A big missing piece in a CS degree is an understanding of the SDLC. The use of svn, tagging and build scripts is essential to any software development effort, and yet it is rarely mentioned. Creating elegant algorithms is great fun, but when the client is screaming that the code doesn't work and all you can say is "works on my machine", you'll wish you had the warm blanket of a proper build process.
That's a good point - version control and build/release process management are all too often reinvented from scratch after initial painful experiences in the field!
The diploma and $5.00 will get you a mocha at your average coffee shop. Seriously, the question is too general for a specific answer. Best I can come up with is the classic 'It depends'---specifically on the details of the degree. Is the emphasis on programming? Algorithms (care and feeding there of)? What approach does the degree take towards hardware? Given advances at the quantum level this last takes increasing importance. What does the degree holder plan on doing with same? Will the details attract those who are hiring? Those are just a few of the questions that come to mind without really getting into the problem posed by the question. Think of it as a crap-shoot and roll the dice---see what happens...
Yeah, I agree with @hsmyers - the question is extremely general.
I will say, however, that a CS degree does provide the basic programming and debugging skills necessary for a career in software engineering. The downside is that a 4 year degree is quite pricey, and much of the content of a CS degree is more theoretical and less applied.
I recently had an interesting conversation where a fellow programmer made the argument that CS was splitting into two branches, much like mathematics: applied CS and theoretical CS.
I think this is an oversimplification, but largely correct. A traditional CS degree is about 20% programming skills, and then lots of math problems to solve.
The time is ripe for a good software engineering degree (i.e. applied CS), which would be far more valuable in the job market.
It's a general question, but the linked article explores it from a few angles of different kinds of career :-)
It agrees with your points - a split into applied and theoretical would probably be a good thing. The programmers I work with in the UK seem to come from physics/mathematics backgrounds, or electronic engineering, with just a few CS graduates. All of them (even the CS graduates) feel that a large proportion of what they learnt on the degree is irrelevant to their career going forwards. A degree focussing on practical software engineering would probably be very useful!
I did some research into the options available in the UK and was quite pleased to see that there are some good "Software Development" or "Software Engineering" degrees at Masters level:
http://www.google.co.uk/search?q=msc+software+development
These seem to be a good alternative to "computer science" degrees at the same level.
No troll intended, but it looks nice in a frame. That's all there is to the degree itself.
The experience of getting the degree itself though....