Well you are assuming everyone wants to be a programmer their whole life. CS is far more then programming (in fact most people would say it's a minor part of CS)..
You don't need a college degree to work as a programmer, especially as a CRUD programmer. You don't need a college degree to be a sysadmin either. These are probably the most common "computer" jobs out there. But they are also IMO very boring.
But here is some examples where a college degree really helps.
Any kind of research position. For instance, Microsoft researchers [all?] have PH.D. degrees. This is true for many/most other companies as well, and most definitely for University research (well at least BS/BA degree, but most have PH.D. and are called
"professor" or "research professor").
Mangorial positions often require at least a BA/BS. Sometimes they even want Masters degree.
Some companies wont even hire programmers without a BSCS. This may become more common if the demand for programmers decreases.
At least in the federal government (and many local governments), simply having a college degree means you make often make more money with the same exact job title and responsibilities. What this means is you CAN get a job without the college degree, but
you'll make less! The incentive pay is proportional to your academic level: High School (lowest pay), Bachelors (mid), Masters (mid-high), Doctorate (pretty high). Sometimes this has a huge effect on your pay, entry level college graduate can make more then
H.S. programmer with 20 years experience. (Federal government tend to not value experience as much as education, from my "experience" with them.)
Another good example is the military. What separates an enlisted person from an officer? Well, really, [mostly] the college degree (Bachelors degree). Even the most big shot enlisted solider with 30 years tour E-9, still is of lower rank then the lowest
ranked officer O-1 and on his/her first day of duty with just a Bachelors degree. So at least in the military, experience is much less important then academic achievements.
Of course I am just talking about pay & benefits, which having a college degree is a bit more then that. University education is not job training. It's something different.
> Well you are assuming everyone wants to be a programmer their whole life.
No. Actually I think being able to program is a requirement. For managerial positions of I.T. (which is common target on most people's career path), most company's entry position is a PM (Companies seldom hires high position with less than 5 years of experience.).
If you're in-charge of a project and your programming skill is not good enough to read the codes, just imagine what mess could happen to the project. And if you can't understand the difficulties of the people under you, I doubt the overall morale of team will
be good as well.
I've seen inexperienced people with higher education level, hate to program, yet choosen PM position and dreamt to climb to higher position wreaked all kinds of havoc ranged from mis-calculated man-day to gradual deformation of program structure within programs.
Promising "seemingly simple" function with impossibly little workday adds huge unnecessary stress to the whole team as well.
And no, at least in the short future, the demand ratio for non-BSCS holders for programming positions will increase. The economy situation is not good. I predict more companies will want to hire non-BSCS holders who can do the job for lower wages. This will
cut down the cost and allow price drop in SI packages, hence making the company more competitive for new contracts.
Agreed on other things. Just as I said, if you climb to higher position, the knowledge you gain from CS degree will be more relevent.