Wil Shipley answers a reader's question
about whether or not they should attend college and study computer science, and whether or not it's worth actually getting the degree. In addition to his ultimate conclusion:
Are you going to use the lessons you learned in CS in 'real-world' programming? Yes. Not all of them, but the ones you do use are going to make a HUGE difference. The delta between programmers who know when to use a hash table and those who don't is enormous. The delta between programmers who understand the O(n) stuff and those who don't is also huge. Too many programs are written by programmers who, frankly, suck at theory, and they write slow, crappy programs as a result. Get a solid basis in the science before you become a programmer.
which I totally have to agree with, I'd add a bunch of things.
Do you HAVE to get a degree in computer science to work in the industry, develop Mac applications, etc.? No, you really don't. But here's what actually studying it in school will give you, above all else: a solid background in the science of developing software. How to write better, tighter, cleaner code. How to think about the "big picture." How to plan and actually design things, rather than just throwing things together. How to work on projects with a team, and with other people's code. The advantages are many.
Granted, some people will have these skills naturally, but that vast majority won't, and attending a good C.S. program will teach you the basics that you will use for the rest of your career. Instead of just learning one programming language, you'll learn the theory that will allow you do easily use ANY programming language, without much struggle.
One thing that you'll have to be aware of, though, is that a lot of good programs will require you to also study math and science, and this can be a detraction. But they do it in the spirit of "well-roundedness." They also do it because it adds more theory and problem solving skills to your kit, and that's what computer science really is, problem solving. Some programs can be really tough, and not everyone will be like Wil who "literally got an 'A' for showing up." My computer science class started with around 54 students. By the end of a very punishing first year, that number was cut in half, because people realized that it wasn't for them, and that there was actually work involved.
Still, it's worth it. And you'll see the fruits of your education throughout your career. You'll see the fruits when you compare your clean, well organized code to the sometimes sloppy code of someone who didn't go to school (I know, this is a generalization, but in general, I've found the code of people who went to school to be be much better than that of those who didn't). You'll see the fruits when you are being considered for a position along with someone who has similar experience, but no degree. And you'll see the fruits of your study because when you REALLY have a strong foundation in software development, all the basics will come so easily, you'll be able to concentrate on solving the real problems, and that's what makes software development enjoyable.