Wednesday, January 21, 2009

Is Computer Science an Oxymoron? Or am I just a moron?

image from http://www.headlineshirts.net/t-shirts/mass-quantities-of-code.htmlYears ago somebody told me that studying Computer Science would help me learn to write software. I believed that and so I spent 4 (er... 6 really) years getting a degree in Computer Science. Fast-forward 5 years after graduation and I am a programmer both professionally and as a hobby. So that advice turned out to be good, right? Wrong. In the past 5 years I have yet to understand how to apply what I learned of Computer Science to being a programmer. In fact since I've been a practicing programmer I have steadily moved away from identifying myself as a Computer Scientist. In my college days I called myself a Computer Scientist. Then when I got my first job I decided I was a Software Engineer. Since I have been at ThoughtWorks I have given up all pretense and I just call myself a programmer, though I have an eye toward the passionate types who call themselves software craftsmen. But what the hell?!? How about that notion of being a Computer Scientist? Was I just crazy? Four years of data structures, algorithm analysis, statistics, math. What was that all about? Ok. I'm not a complete idiot. The connection between Computer Science and Programming is obvious. Computer Science is the study of algorithms and transforming information. And that is central to what I do every day, but it just isn't the way I end up thinking about things. Instead I'm thinking about my tools, (languages, libraries, editors) the people I am trying to help and the problems I want to solve.

I could continue this discussion, but there is a much better writeup than I could do at Phil Windley's Blog about this. It discusses a talk given by Alan Kay, a real Computer Scientist. Do yourself a favor and go read it.

5 comments:

Anonymous said...

The first day you get into an argument with one of your coworkers about how context switching works in a multitasking OS and how this applies to your thread pool problem.

And you want to rip your hair out because he just doesn't get it and then you find out his college degree was in Musical appreciation.

Then you'll appreciate your ComSci degree.

Kris said...

I would certainly agree that it's not necessary to have a degree in computer science, but it takes more time from a curious and motivated individual to cover the information that we are forced to learn in the process of getting a computer science degree.

btw, my business card has my title as "Software Craftsman"

Unknown said...

Thanks for using the image of our "Mass Quantities of Code" T-shirt in your post. We recently decided to use a creative commons license for our web content, and you (as far as i can tell) are the first to make use of it! Thanks,

Nick
headlineshirt.net

Shlomo said...

nicholas,

I have almost bought that shirt a couple times, but never quite pull the trigger. Anyway, It is a great graphic. Keep up the good work.

Dean Wampler said...

Coming from a physics background (long ago), I see the relationship between computer science and software engineering/craftsmanship/whatever as analogous to the relationship between physics and electrical/mechanical/... engineering. Our discipline is still too young to realize we need to bifurcate.