Theory matters after all...
There are many discussions developers have with each other that always make for interesting discussions. One of the best ones is "How much does a Computer Science degree matter?" If you argue that it's really important, you'll invariably have your argument countered with anecdotes of 'some idiot who was totally Ivorty Tower" and examples of people who were self taught and complete bad asses.
I definitely know many many examples of the latter. I'm pretty skeptical about the former which I'll get to in a minute. I don't consider myself a bad ass or guru in any sense, but I've had a pretty successful career and been able to excel in every job I've held. I'm kind of a hybrid though b/c I have taken 30 credit hours of CS even though most of what I know is self taught. However had I not had the education that I did, I know there's more than a few subjects I would have had a lot more trouble with. Outside of the formal education, there's a lot of vicarious learning thrust upon you while taking college courses and at least in my case, I'm pretty sure a good bit of my success is attributable directly to my education. I work/have worked with more than a few folks though who had little or no formal CS education and are far better developers than I am. Experience and learning are ultimately what matter and at the end of the day, if you learn to create effective classes for instance, it doesn't much matter if you learned to creat them in a class room or at work. Ultimately, the reason this always makes for such a good discussion is precisely because there are so many excellent examples to support either side of the argument.
One thing I hear a lot though are people that criticize people that 'think they are still in college', 'all theory' 'too much textbook' or 'ivory tower'. I have yet to meet or work with someone who's so well educated that they are poor at development. Like most things, I think good theory makes good practice. What I have come across however is posers who hide behind big words. In every single case where I've been told someone is 'all theory' and had the opportunity to work with this person, what I've found is that they aren't all theory at all. They are all 'use words and phrases they don't understand to compensate for their disturbing level of ignorance'. In most cases, these folks learned just enough to sound like they know what they are talking about (to others that aren't familiar with the theory they claim to espouse). A few notable examples come to mind, in most cases, I've run into and/or heard from friends about this more times than I care to remember:
Tonight though, I was flipping through Wired and came across an article which proves that without a firm command of theory, you're going to be in over your head in some cases. Even cooler than the article is the source code they posted with it . I'm not very familiar with the .jpg file format, but this article really got me thinking. I mean, I would never have even thought to look for such things. The code isn't really all that complex, but understanding what it's doing and why is something you aren't just going to figure out on your own. At least I know I wouldn't. Not surprising, Neal Krawetz the guy who performed this analysis has a Ph.D in Computer Science. Read the article, look at the source code, hit his web site - seems to me this is true Ivory Tower stuff and it's pretty darned impressive if you ask me.