I'll give you my 2 cents worth as I definitely felt the same way and even more so when I went out to work.
A CS degree is probably not required for most work out there. Even though some put it as a requirement to narrow the criteria, more often than not, you won't use the skills you learnt for the degree on your job.
Having said that, Computer Science is not about teaching your programming skills nor equipping you with skills where you can immediately use them. All those sorting algorithms that come with programming languages - they were written and optimized by people with a good understanding of CS concepts (note: they may or may not have a degree).
The algorithms in CS are motivated by real problems. The algorithms came about when researchers faced certain issues(i.e. a faster algorithm is needed etc). The degree just teaches you the techniques that people used in the past - and gives insight on how you can create your own or improve one of the existing ones. The undergraduate degrees merely expose you to the techniques but in reality, you will most likely call some function or routine if you want to do it.
And that's just the algorithms part of CS. There's a whole world of optimizing this and that, how to design a fault-tolerant distributed computing system, etc. Again, you may or may not use this. But to invent/create something like Google BigTable or Google File System etc, it is always handy to have the CS knowledge at hand.
Added note: Of course, you can do this all by yourself but with a professor in front of you (who hopefully is willing to help), you can question the hell out of him/her to get the concepts right. And assignments and tests help train your understanding of these concepts.