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.