{ End Bracket }: Is Programming an Art? — MSDN Magazine, October 2006

“The reason we say programming remains an art, not a science or an engineering discipline, is because we haven’t as yet been able to break it down into component steps and mechanize it. Once we succeed in that, a new scale of possibility emerges: programs to write programs from people-oriented design languages (PODL), programs to prove program correctness, and to analyze and support semantic query. Until then, however, programming remains an art, or so conventional wisdom has it.”

Wait, what?

“The reason we say programming remains an art, not a science or an engineering discipline, is because we haven’t as yet been able to break it down into component steps and mechanize it.”

With all due respect, Mr. Lippman (and I most certainly do have a lot of respect for you and your work), who’s we? And since when does breaking something down into component steps and mechanizing it turn this same something from art into science? In this regard it almost seems as if you are suggesting that science is defined as the final state instead of a series of experimental steps that help bring about this same mentioned state.

Then again, using the term “final state” isn’t really something that can be applied to this analogy either, as when was the last time anything anybody has ever created through the process of science, or maybe better said, the process of trial and error, stayed in this same “final” form indefinitely? Of course, through the *art* (or is it a science?) of preservation, there are those who can do a pretty good job of keeping the original state of something as close to its original state as possible. But even then its no where near perfect, and in many ways the very act of preservation goes against the very essence of what life is all about,

Change. Transition. Transformation. Progression.

Just to be certain we are both on the same page, lets take a look at the definition of “science”,

sci·ence (sī'əns) pronunciation
n.

   1.
         1. The observation, identification, description, experimental investigation, and theoretical explanation of phenomena.
         2. Such activities restricted to a class of natural phenomena.
         3. Such activities applied to an object of inquiry or study.
   2. Methodological activity, discipline, or study: I've got packing a suitcase down to a science.
   3. An activity that appears to require study and method: the science of purchasing.
   4. Knowledge, especially that gained through experience.
   5. Science Christian Science.

“The reason we say programming remains an art, not a science or an engineering discipline, is because we haven’t as yet been able to break it down into component steps and mechanize it.”

When I read the above definition, and then read this statement, I am at a loss as to how this conclusion even makes any sense. Science is not the component steps or the mechanization of these steps (I believe the term ‘macro’ or ‘algorithm’ would provide better defintion of these items) but the process of making a determination as to what these component steps are and how to go about mechanizing them, the macro or algorithm representing a particular snapshot, or static state of these macros and algorithms, though most definitely in no way do they represent their final state, as if life is not represented by the terms “Change. Transition. Transformation. Progression.” (and I believe that it is, though is more than *just* these, quite obviously), then it most certainly can be represented by a series of revisions, each building upon the last (though sometimes this means taking several steps back before being able to move several++ (pun intended ;) steps forward), which ultimately leads us back to the same mentioned terms “Change. Transition. Transformation. Progression.”

Setting this aside, lets look at the definition of “art”,

art (ärt) pronunciation
n.

   1. Human effort to imitate, supplement, alter, or counteract the work of nature.
   2.
         1. The conscious production or arrangement of sounds, colors, forms, movements, or other elements in a manner that affects the sense of beauty, specifically the production of the beautiful in a graphic or plastic medium.
         2. The study of these activities.
         3. The product of these activities; human works of beauty considered as a group.
   3. High quality of conception or execution, as found in works of beauty; aesthetic value.
   4. A field or category of art, such as music, ballet, or literature.
   5. A nonscientific branch of learning; one of the liberal arts.
   6.
         1. A system of principles and methods employed in the performance of a set of activities: the art of building.
         2. A trade or craft that applies such a system of principles and methods: the art of the lexicographer.
   7.
         1. Skill that is attained by study, practice, or observation: the art of the baker; the blacksmith's art.
         2. Skill arising from the exercise of intuitive faculties: "Self-criticism is an art not many are qualified to practice" (Joyce Carol Oates).
   8.
         1. arts Artful devices, stratagems, and tricks.
         2. Artful contrivance; cunning.
   9. Printing. Illustrative material.

“The reason we say programming remains an art, not a science or an engineering discipline, is because we haven’t as yet been able to break it down into component steps and mechanize it.”

So if this were true, then could we state that art is the represented by that in which has not been broken down into mechanized, component steps?

I don’t think it does, but lets step back a bit from all of this and try to understand why there could be such a difference of opinion as well as definition in regards to the terms “art” and “science.”

Is art the result or the process?

It’s both.

Is science the result or the process?

Again, it’s both.

It seems that people forget that writing code is a form of ‘Art’. While Art is defined differently by each individual (which is the point, btw…), there is one thing we Artists all have in common.

We like to keep changing things. We like to adapt things. We like to refine things. We like to…

I’m sure you get the point.

Now apply this to software platforms. Which platform is best suited to deal with the constantly changing climate that is the Art and Science of Software Development?

When Donald Knuth began to think about, write about, develop, and teach software development, he obviously had a choice of what to call the series of titles he would begin to publish as a result of his work.

Just in case**, the series title he chose?

> The Art of Computer Programming <

Now maybe I'm wrong, but I don't believe it was by accident, or some strange coincidence that he chose the series title that he did. So why did he choose the title?

Can't say I know for sure, but I'll give it a shot anyway...

>> The Beginning of The End, Is the End of The Beginning >> In The Beginning, Art Was Change >> If Change There Was, There Art Began >> Where Art Began, So Too Was The Artist >> Else Not Began Art, Was There Change? Let Us Compute >> Computer, Let Programs Change Where Art Begins >> Begins Art Where Change, Programs Let Computers Change Where Art Begins >> Begins Art, Where Change, Computers Let Artists Change Where Art Begins >> The Changing Art >> The Changing Artist >> The Artist is Changing The Art >> The Art of Computer Programming << Programming is Art << Art is Created by Artists. << By Artists Changing Creations, Art Form Appears << Appearance of Form Creates Change in Art << Art is The Changing Form of Appearance << Where There Is Change in Appearance, There is Art << Where There is Art, There Is Change << Change There Is, So Artists There Be << Be There Artists, There Is Change, Where There's Change There is Art, Where Theres Art, It Begins << The End of The Beginning is The Beginning of the End <<

The above is from a comment I made a while back to my own post in regards to the differences between the Java language and platform and the .NET languages and platform.

Of course, since that time a ton of things have happened which hold significant potential in making the analysis in regards to the differences between Java and .NET a moot point. But that doesn’t change the underlying message, which is this,

Art and Science are defined in many ways, some of which can be seen as one in the same, others of which most certainly can not be seen as one in the same. But without a doubt, there is one common trait between both Art and Science that is most definitely the same (or is it most definitely different? ;),

The ongoing process and result of change.

With this in mind, what makes programming both art and science is the simple fact that art and science are both the process of creation, as well as the resulting creation in and of itself.

Now, one could argue that there’s nothing about a word processor or a spreadsheet that even closely resembles art. Then again, one could counter argue that it’s the process of creating this word processor or spreadsheet that represents the art, not (necessarily) the resulting creation of this process.

Of course, there is no single definition for art, an ever changing list of terms and definitions, each representing a single snapshot in time and space. In this regard, art can not truly be defined, only appreciated, and from this viewpoint a word processor, spreadsheet, or any other software application for that matter can easily be seen as a representation of art, dependent, of course, on ones own perspective.

Ultimately, that last statement; “ones own perspective” is the underlying point in all of this,

“Is Programming an Art?”

Yes!

Or is it no?

Art is change, and change is a matter of perspective — As individuals we each perceive things just a little bit different than that in which other perceive them. It’s what makes life such and interesting and wonderful process (or is it result? I can never get those two right!)

So again,

“Is Programming an Art?”

“Yes!” and “No!”, all at the same time.

Thanks for reading. :)