Blogs

   Is programming an art or a science? Part II

In Part I of this 2 part series I put forth a standard argument about how programming is a science. In this part I want to explore an argument that says programming is an art. As I mentioned in Part I, this is a thought that I didn't even entertain until I was a good number of years into my career as a programmer. At this point, maybe the argument has some validity. I'll let each of you make your own decision...
More... This topic came up recently as my oldest daughter started looking into colleges. She is a high school senior, due to graduate in just a few weeks. As we looked at colleges I noticed several schools giving Bachelor of Arts degrees for computer science majors. In fact, according to this page at Wikipedia, there are many different degrees that are all considered more or less the same. Anyway, seeing the Bachelor of Arts degree made me think about the argument of whether programming is an art or a science, so naturally I had to create a couple of blog entries about it!

What are some differences between art and science? Do a Google search and you'll get 35,000,000+ hits! After looking at about 30,000,000 of them, give or take 29,999,990, I determined that none of them agree on the specific differences between art and science. However, many seem to agree that science is about right and wrong, while art is about intangibles and individual interpretation. Awesome, computer programs are either right or wrong, so programming must be a science, right? Well, not so fast. What about the fact that you can have millions of ways of doing a program "right" and millions of other ways of doing it "wrong", doesn't that count for something? If science is looking for the one true answer, then a computer program won't do it because we would all code something more than printing "Hello world." very differently.

So, since individualism can show through, and we can all interpret code as either good or bad (and often disagree on that), it must be an art. Only art can have those kinds of differences of opinion, right? Again, not so fast. In Part I we saw how computer programming can follow the scientific method pretty closely, so there has to be something scientific in there.

It is reported that Michelangelo when asked how he created the David sculpture responded, "All you do is start with a block of marble and chip away everything that doesn't look like David." Amazingly, that quote exists in the book "Extreme Programming Refactored" which is obviously about using XP as a programming method. An art quote in a computer programming book!?!?!

Let's consider this for a second. Look at what Michelangelo said. Can it be restated as "when creating something, remove everything that isn't that something." If so, do we have something that vaguely describes an agile programming process? I know it's a bit of a stretch, but if you use a prioritized backlog of items used to create a product, then the items that are most important will get in, and the ones that are least important will be left out. In other words, you will have removed everything that shouldn't have been part of the product in the first place! Hmm, agile processes that sound like an artist's method, now things are really interesting.

Now, just a cultural note - do programmers LOOK more like scientists or artists?

As you can see, some arguments can be made both ways. So what's the answer? Sorry to end with a bit of a cop-out, but my answer is, does it really matter? Whether a programmer is an artist or a scientist, at the end of the day don't we all just want to create great software products? If pressed, I guess I'd like an artistic type to design my GUI since they SEEM more likely to be able to create something usable. I'd rather have a scientist type be working on the low level guts of the system because that SEEMS more likely to create highly efficient code to do the complex tasks. But, I personally know people of each type that do awesome jobs outside those stereotypes, so in the end I really don't care, and neither should you!

Oh, and for those of you wondering, my daughter is going to major in business, so none of this even matters to her.

Technorati Tags: