You CAN self-teach yourself to be a very proficient and successful programmer. I have a MS in Mech Eng, with only 3 IT-related courses out of more than 170 credit hours. And yet…because of my practice and job, I’m also a 2-million line+ coder, in FORTRAN, C, C++, Java, Allen Bradley SLC, Parallax 8-bit, and (shudder) Intel assembly.
Am I good at it? Damn staight. Did I lean any of it in College? Nope. Would I recommend people do what I did to learn programming?
Nope.
I think the primary source of disagreement in this thread is really the terms and absolutes. Yes, there are many people out there who can learn very well on the job, or on their own. To do this effectively, you must have a certain discipline and ability to learn on the fly, that many do not have. But yes, it can be done.
College is, in a sense, a source for serving as a “weed-out” process, and also a source for learning problem-solving skills, workign as a team, and having access to detailed help and instruction through the learning process. If the IT program is set up well, and has decent instructors, you can learn many things, in an environment with mentors/professors that will help you to actually understand what you are doing.
One possible downside of College are the “squishier” classes - the whole host of liberal arts classes which may not be of interest to a technically-minded person. But one upside is the fact that you can take higher math and physics courses, and these are not often easy to learn on your own. Nor, are they often things that you learn on the job.
The unfortunate thing is that learning on the job sometimes only teaches you how to do tasks for that particular job, and limits or narrows your focus. With College, the goal at least is to give you a broad base from which to start.
And, of course, rightfully or not a College degree is more and more the “minimum standard” for hiring programmers.
In answer to an earlier question:
It’s irrelevant what I want, because for the programmer position at my corporation, a 4-year College Degree is mandatory. I could hire the person with the 4-years of experience - and they would start as a “tech”, and make about $10k less a year. And they could never become a manager of a project either, regardless of how worthy they are. Is that fair? Nope. But it is the way these things are in many, if not all, of my peer companies.