Blogs

   Is programming an art or a science? Part I

I have a both a Bachelor of Science, and Master of Science degrees in Computer Science. I used to think that was very appropriate because during those years I was very much in tune with the line of thought that said computer programming was a science. Now that I'm older (and hopefully wiser) I'm not so sure.

25 years ago this debate was simple for me because it never even crossed my mind that computer programming could be an art! In this part I of a 2 part series, I'm going to examine the programming as a science argument. In Part II I'll look at the programming as an art argument.
To me - remember, this is just my opinion so there will be people that disagree with it - for anything to be called a science it needs to pass muster with the scientific method.

Here is what Wikipedia has to say about the scientific method:

Wow, that's pretty heady stuff isn't it? But let's break it down as it applies to software. Are characterizations the equivalent of requirements in a project? To me that seems reasonable. Hypotheses could be thought of as our thoughts about how the code would look to meet the requirements. In fact, we could go a step further and say it is the code and the associated data structures, then it seems to fit the mold of a hypothesis even more closely. Predictions are that the code will actually run and do what it is supposed to do. The experiments would consist of the tests that are run to make sure the code and data structures actually do what they are supposed to do.

It sure sounds like programming could be using the scientific method. For those of us that are "agilists" it is even more obvious since Wikipedia specifically mentions iterations! In other words, we do this through multiple iterations until we get the code to match the requirements and pass all the tests. Doesn't that sound like a healthy agile process in the software world?

Even when we aren't using an agile process, don't we create code, see if it works, modify it and try again? Repeating that process until it functions properly. Isn't that what the scientific method tells us to do?

These are exactly the types of thoughts I've had over the years when the question of programming as a science or an art came up. The question is, is it the only argument that is correct? Read the other side of the argument in Part II coming soon!

Technorati Tags: