My CS prof once asked our class, about eighty or so freshman CS majors, who wants to be a programmer. Some rose their hands; I did not. He then told those people to put their hands down. He informed us that a programmer is the sort of person who goes to ITT Tech or some place like that and who are doomed to be a code monkey in a cubicle. We should aspire to be computer scientists.

I think this is a very important point. Merely learning how to program in a language or two isn't going to get you anywhere, professionally that is. If your sole goal is programming as a hobby, more power to you. But if you're considering a career in computers, you'll want a good deal of formal education on more abstract subjects.