CS came easy to me and so I got a CS degree.
Hindsight I wish I had challenged myself to get a degree in something that didn't come easy.
I dont appreciate my degree and I blow off the fact that I even have one. It means nothing to me.
I have a 14 year old son whom I am pushing to challenge himself and be more well rounded than I was. He is learning C++, yes but he plays basketball, loves MotoGP, learning to cook and overall learning how to talk and argue his points :-)
Most of the content has been easy although I have learnt a lot of techniques and algorithms (especially in AI) so it's not been completely worthless.
I thought I wanted the piece of paper, but I found out that I really enjoy pushing myself to learn new things.
I went into the degree having done a lot of programming and found the first year of CS fairly easy. However, I was lucky as Glasgow allows you to switch between degrees almost at will as long as you meet the requirements for it during the first 2 years (1st year courses generally only make up 1/3rd of the credits, and 2nd year courses make up 1/2 of the credits for that year).This meant that I was able to peruse Maths, Physics and CS in my first year, and Electrical Engineering and CS during my second year - it was only in the final 2 years that CS became my only focus.
Essentially, I didn't need to decide which degree I would do until the start of my 3rd year, by which point the course had ramped up to the 4 hours sleep per night level, I was loving every moment of being pushed to the edge, and I was very sure that CS was the right choice for me.
Practically speaking, I came out of the degree having covered a bit of just about everything, and in a position to quickly learn anything that I don't already know. I probably could have become better at programming, but a much less capable thinker if I'd spent the 4 years working.
I don't think that every developers needs a CS degree, however I'd say that if you want to tackle really hard problems, the ones that most people wouldn't even dream of solving, then a CS degree is probably the best tool in your box.
For example - understanding source control and working with it is something that SHOULD be happening in classes. Every teacher should leverage git (https://github.com/edu) for managing/submission of code.
But there are two things I got from university that were invaluable:
1.) People. The people I met at uni are still my best friends today and a diverse bunch of talented and interesting folk. The social aspect was invaluable.
2.) Learning how to learn. By the end of my second year I felt I had the cognitive and critical thinking skills to tackle new topics without the aid of a professor guiding me. I take this skill somewhat for granted and it has been a critical part of my success in the workplace. Some people are born with this capacity for self-learning, I wasnt, I got it at university. So there is still something to be said about the old brick-and-mortar educational paradigm.
In the 20 years since I have, at some point, found almost every subject that was covered useful. Most useful of all, though, was the education in critical thinking, critical systems thinking and soft systems. The lessons I learned there are ones I still use every day. Almost every job in technology involves, in some form, solving complex problems in complex, continually changing environments with many participants with differing interests, motivations and capabilities. This has stood me in good stead from my first job as a developer to my current role managing large programs of work.
My intuition is that school marginally helped by day-to-day coding, but gave me the tools I needed to dig deeper. It was invaluable to take operating systems, and learn about the nitty gritty internals of how a modern OS worked, along with the details of CPU caching. I probably could have learned the information outside of school, but it would have been a much longer process, and I might have large gaps in my knowledge.
In any case, once people are more than a few years out of university, they've forgotten enough that it doesn't seem to make a huge difference. Experience, receptiveness, and willingness to continue learning become bigger factors.
After a few years of work and motivated self-study, a bachelors degree begins to fade into relative insignificance.
This would mostly be the theory, OS, and compiler courses. If you know the full stack and the connections between them, it makes it much easier to pick up new things. Getting a CS degree let me spend 4 years of my life understanding the fundamentals.
I understand that you can learn all this stuff on your own, but pretty much nobody does. And having all this knowledge makes it substantially easier to learn new things (something I do quite a bit nowadays).
Best way is to stay passionate about CS and join a degree for some other studies, like business or law, hence bringing out your full potential.
I am, for sure, going to regret taking my CS degree.
Now if you are starting your own company and think you will be the next Zuckerberg/Gates/Jobs, then it's a different story.