ATTENTION: The following text is only discussing the value of degree in Computer Science world and not mentioning any other fields.
It is not a secret that if you want to make good money you must be an expert. An expert that would be difficult to replace with another candidate. If you really can master one of the skills you own it should be the one which helps you to make the living. The one which people would recognize you for. And there is no way that people would actually value you for “knowing something about computers” or “some knowledge of C++ and Java”. If you are an expert, you an expert at one thing.
It may sounds absurd for some people but here is my thought: a degree will not make one an expert in a real world of computer technologies. And one of the reasons is because it is too general.
Right now I am working on my degree and taking classes which are required for it: Java, C++, Assembly (yes, the very old language which NASA uses for their rovers), Data Structures, C. I am also taking math, physics and a huge amount of general education classes in order to get a computer science degree. Apparently, I need to learn all these languages, sciences and gain some knowledge of music, art and history in order to be considered good in computer science.
All these classes will not make an expert out of you and here is why. Taking Java, C++ and Assembly classes I have learnt all the basics of each language. It is cool, but I have no idea how to use them in real world. Place yourself in this situation and think. Can you make a real valuable project in C++ after taking a C++ class? Can you actually write a useful app for Android after taking Java class? And no, I am not talking about that stupid lab you have made which counts days of week or how many units you took that quarter. I am talking about some real things which actual tech-companies do. It is great that you are taking all these classes but, honestly, it is useless in terms of real world just because you can not solve real-life complex problems with them. And that is because all you know about all these languages is just some general knowledge. Knowing how to declare a variable in each of this languages will not help on a job interview, where companies actually seek for experts on the open position.
My concerns on the topic are coming from the fact that each of these languages is a very complex subject. And in order to make something really useful with a particular technology you must know it very-very well. You must be passionate about it and love doing it. The fact that you slightly go over all possible languages and sciences on the way for your degree won’t make an expert out of you. Instead, it is much-much better to know something one but know it like a boss.
It is truth — here is why the most paid people are actual professionals, no matter if they have a degree or not. You will spend ages mastering only one thing and especially in computer-science where technologies always expanding and throwing something new at you.
In no way I want to say that degrees are bad for you. But I want to say that degrees will not make miracles for you in the tech-industry where you must be a prodigy in some field. That is why most tech-companies do not care if you have a degree anymore and count it only as a bonus for your candidate. They can see how good you are just by talking to you and seeing which work you have actually done and they don’t need degree to proof it.
My hope for the future: Computer Science programs at school would actually give you specific knowledge in a chosen field, instead of forcing you to learn all the general material they could offer.