There are, roughly, two types of programmers. One type was in the computer club at high school and got a computer science degree (or two or three). The other type, well, didn't--they were English majors, college dropouts, busboys, artists, odd-job-doers. (Cue Captain Renault: "That makes Rick a citizen of the world.")
My advice to young people is to get a computer science degree, if for no other reason than you can avoid those odd jobs and get right to the programming. And it also gives you an early chance to find out if you were, in fact, born a programmer.
Re:Agreed
bluto on 2007-09-04T15:25:56
I'll admit, I've worked with one guy with a BSCS+MSCS that didn't know how to program his way out of a wet paper bag, but you are absolutely wrong saying that getting a CS degree is a waste of time if you just want to program.I started teaching myself when I was a young teenager, and all I've wanted to do since then is program. For a while I seriously thought about going into other fields (strangely, physics was one of them), but I drank the cool-aid and chose CS. I learned a huge amount of practical programming with both my degrees (MSCS almost 2 decades later) from people with expertise that I couldn't pick up on my own. Sure, there's a fair amount of stuff you won't use, or at least think you won't. During my MSCS, I had the opportunity to learn from two guys that were the best in their field. I wouldn't trade that experience for a degree in any other field or some "more efficient" way of becoming a good programmer.
Re:Agreed
educated_foo on 2007-09-06T05:02:49
I think there's a huge and crucial difference between "wanting to program" (i.e. to finance other pursuits) and "loving to program" (i.e. what you seem to express). You probably know far more about programming than you need to in order to get the job done.Anyways, here is a sample undergrad curriculum. I'd say about half of it could be skipped without significant loss in programming ability: about half of the math requirements (e.g. calculus), the physics, almost all the hardware/EE, and some of the random electives. Just the "hello computer" courses, algorithms, a couple of systems courses, and the senior project would probably be enough.