I would argue that a bachelors or masters in computer science was not designed to produce programmers, in the same way that a degree in physics doesn't let you start building bridges. On the other, it's also hard to build bridges without physics.
I don't think you would get great values in those public speaking and business classes. I personally agree that people who want to do those things better just start doing it (although, the article tells a different story about the cook). Introductory science courses (which I would otherwise not being able to learn on my own) were certainly worth the price I paid for. I was in a public university and those 3-credit hours courses used to cost me about 800 USD per. There are not many other things that I could better spend my money - I think those are of great value (Although the MOOCs have shown that the price point for really good basic education could be set much lower, but with some trade-offs.)
Out of curiosity, why do you think you would not be able to learn introductory science without spending $800 on a uni course?
I had a lot of a-ha moments in college like that. That is to say, the example above is for something I knew that I didn't know, there were many a-ha of something I didn't know I didn't know. Science courses are often dense and not everyone can easily gasp ideas in the textbooks or online resources without help. I wouldn't know to look up and study chaos theory, game theory, and many other interesting ideas without a primer in college. Plus, being able to interact and ask and see as things progress when the professor explains the problem is quite worth the money to me. Again, MOOC can provide some of those, but with trade-offs (I can't interrupt the professor to ask something everyone understands, but I don't). MOOC was not an option when I went to college though.
The issue I have with the requirement of a college degree that so many companies impose is that the degree proves nothing other than that the applicant can go through a long drawn-out process of getting a degree. It says nothing of their competency. I've interviewed multiple candidates for software engineering roles that had a bachelors or masters degrees in Computer Science, and more often than not, they can talk for hours about theories behind programming concepts or data structures, but when given a fairly trivial coding challenge, they fall flat on their face. When I graduated college, I was one of those people, but luckily I recognized that quickly and spent countless hours learning new languages and frameworks until I felt I could build a fully functional piece of software by myself.
In my experience, I often prefer candidates straight out of a short vocational computer science program or self-taught programmers to work on my team. Going 4+ years before actually putting concepts into practice is way too long. There are plenty of unaccredited programs that only take a few months and often churn out much more competent candidates than a four year uni program.
tl;dr: People spend way to much time talking about doing things rather than doing things.