Is Programming an Art Form?

Recently, I’ve found out that almost all programmers truly believe that writing code the right way, can be considered an art form. This is my minority report…

Regarding intention… Although art is a term almost impossible to define, Wikipedia claims that art is a product of human activity, made with the intention of stimulating the human senses as well as the human mind, by transmitting emotions or ideas. I never wrote a class to stimulate the human senses, and I never wrote a method with transmitting emotions in mind; you write code simply to make something work, preferably in such a way that will ease testing, debugging, maintenance and future enhancements.

Regarding creativity… It is true that for any given software problem, there are many possible implementation solutions; all have pros and cons; some are more “creative” than others. But… in my book, writing code “the right way” means striving for the most simple solution (KISS principal), following known design patterns (GoF, Fowler, et cetera), standard practices (MS, W3C, et cetera), and sticking to a strict naming convention (MS, Sun, et cetera). Come to think of that, the more creative you’ll be, the more depressed I’ll be when handling your code. So, in my book, the best programmer is actually the less creative guy on the team; the one that copies as much as he can from books written by others. Not exactly your typical artist profile…

Programming sure requires intelligence, knowledge, skill, good judgment, customer awareness, diligence and patience, but I don’t see that as an art form. Besides, don’t you feel that programming is too much a left brain thing?

~~~
p.s. I'm still waiting for Apple’s iWife with a big red mute button as its main feature.

25 comments:

Pasha said...

The wikipedia definition sucks. There is a category of arts that I would call "practical". For example: is architecture art? Are "martial arts", ahem, arts?

Programming belongs to this second group of practical arts.
The similarities to arts are in:
1. The "goal" can be achieved in many ways but there's a sense of "beauty" and "ugliness". Importantly - people can agree on a solution as "beautiful" or not, so there's "taste" involved.
2. There are distinctive "styles" to different programmers.
3. It is hard to define the "beauty" of code, rather, you need to be experienced and skillful yourself to appreciate it.


These are all properties of art, in this case a practial one.

Uri Kalish said...

Hi Pasha,

Regarding architecture:
I think there are two kinds of buildings.
The first is residential houses, where a practical solution will often be a rectangle building with square rooms. This part of architecture is practical, but not very artistic.
The other kind is public buildings like museums or concert halls, where the whole point of the design is to create something that will stimulate the senses and transmit emotions and ideas, and the actual use of the building is just a limitation imposed on the artist.

Regarding martial arts:
Since the invention of gunpowder in the 9th century, I’m not sure how practical can be a warrior imitating a praying mantis trying to confuse an enemy with a semiautomatic machinegun. Anyway, many of the martial arts rely heavily on aesthetics of movements as a major mechanism to assess a fighter.

Regarding 1,2,3;
1. Also true for the many ways to break an egg when making an omelet.
2. Also true for breaking an egg to make an omelet; still a skill, not an art form.
3. I think a piece of art should be judges mostly by the end result, and not by the process that led to it. It should be appreciated by the common man, and not only by skilled professionals that understand the exact mechanism for its creation.

p.s. Dash to Boogie and Shorty.

Moti Karmona said...

"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be. ... The computer resembles the magic of legend in this respect, too. If one character, one pause, of the incantation is not strictly in proper form, the magic doesn't work. Human beings are not accustomed to being perfect, an few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program"

-Frederick P. Brooks, "The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)"


---

P.S. You are just pretending minority report to get comments... ;-)

alex kaplan said...

For me programming is a nightmare.I remember a longly hours I was stirring in the screen,to find "nekuda,psik" that a missed in a program.The algorithms never work,the results that you receive describe the physics of alien universe.

yair.h said...

Art is a subjective term, therefore it is pointless to argue that programming is or is not an art.

Same goes with the question Uri proposed : "Is breaking an egg art?". It is for some.

To conclude: Art is in the eyes of the beholder. What some see as art others see as rubbish.

Uri Kalish said...

Yair,
I think that when people say "This is not art, this is rubbish", they actually mean "I understand this is an art piece, but I simply don't like it".

Uri Kalish said...

Are you comparing painting the Sistine Chapel, to a semi-amusing way to make an omelet?

Zarquon said...

Programming is a science. It can be tested, it can be measured and it can be refined to remove the excess which does not apply to the tasks at hand.
Art is flourish. An expression of self through a medium or a provocation (as has been said elsewhere in here).
Truly beautiful programming will be minimal, clean and replicatable by any other programmer of equal skill. The less of the programmer and the more of the machine, the better.
A craft of skill and pride perhaps, but not an art form. IMO.

Mike said...

Yair.H is right, art is very subjective.

I have a group of friends who consider flatulence a form of art. I know one guy who is quite the artist!

Uri Kalish said...

Many times people say "It's an art" as a figure of speech, when they actually mean a skill.

Carolyn Loveman said...

Very nice content you have here keep up the great work.

Uri Kalish said...

Thanks!
:-)

aksn1p3r said...

In response to the title, i didnt read the content...
Programming is a skill that only logical thinkers can adapt to, any fool can draw... without logic.

creechmark said...

I love Mona Lisa and have actually seen it at the Louvre. Your comments about the "art" of programming are right on. The KISS principle is really just Ockam's Razor, and something we should always remind ourselves about. Given any number of explanations for anything, the simplest solution is usually best.

I am a lover of children's literature said...

The answer is simple when you ask what does art do? One, it brings out peoples emotions, be it pain, sadness, joy, hope, etc. It brings out their deepest hopes and fears.

Well, I notice that software can do all of that. Ever see people line up for blocks to get their hand on an Apple OS upgrade like Leopard? I have, for example just watch people operate the iPhone which is more software than hardware. The gasps of wonder on their faces as they play with the software is just as moving as the Mona Lisa makes some people feel.

Games like Halo 3 the same thing. Just watch a teen boy playing a game and you will see every kind of emotion complete with body language so I say yes, software can bring out everything a great painting, etc. can therefore it is art just as surely as a painting can, therefore it is equally art.

homar said...

i do not think programming is an art. it is ore of a tool for arts. for instance, the software developed for animation is not an art itself, it is just a tool used to create art works. if programming can be considered as an art form, then the method of manfacturing paints should also be considered as an art form.

floydcraig said...

Congratulations! You Are A Winner! You have won a Floyds Best Blogger Award!
See Your Award Here: http://floydssecrets.blogspot.com

jimmy choo said...

nice artikel in,

full of information. Hope will see more interesting article by you in future. anyway you also can submit your article into www.timestreets.com/article for free or any article directory to promote your article.
nice experiance here. wish your luck

http://timestreets.com/
http://timestreets.com/forum/

Krokodil said...

I agree with Homar, but you guys create tools for us that we could never practice our art with. I want to move into drawing with electronic drawingpad straight onto my PC - see, I'm such an IT ignoramus, I don't even know what it is called. You guys make it possible for me to use such technology however.

I love you blog! The piece about being called up really touched me. I am South African and had a boyfriend who, after completing 2 years of conscripted service, had to go back for called up duty for a month every year. I hated that. Especially since I was a dissident.

Krokodil said...

I made a mistake. I meant you create tools we can't do without!

Ekim said...

"Good Artists copy, great artists steal" ~William Shakespeare
Also the motto on a sign above the door at Microsoft.
Is Bill Gates an artist, a craftsman or a thief? Probably depends on who you ask. I think it's less an issue of semantics and more an issue of perception.

Scott Beckstead said...

My art, my poetry, and my programming cannot be separated in my mind. I write poetry to please myself, to move my emotions. I don't care if you perceive the art the same with my programming. There is more than one efficient way to skin a small feline creature. So if you fail to perceive the art in my poetry, my pictures or my programming, it is your loss.

artsfish said...

Ok... I had to think about this one. As an artist with extreme geek tendencies, I often find myself tweaking code on my sites.

I usually find this task unbearably tedious.

My first reaction was to say no - programming isn't an art. But then I drew a parallel to the work I often do in the theater as a lighting designer.

What I do is just one part of a collaborative artistic effort. What I do is creative; I design a light plot - but the tech that hangs the lights for me is a functional contributor, not artistic. In effect, he or she is somewhat like the programmer - assembling all the necessary bits to create a functional program - or in this case, light plot, which leads to a unified artistic production.

The reviewers can then fight over whether it is "art" or not.

So.... as part of a contribution to an artistic collaboration, I would have to say that programming while perhaps not an art itself is a vital component to an artistic collaboration. Apple comes to mind, -the Unix based code is beautiful because it supports the aesthetic whole of (in my opinion) the absolutely gorgeous iMac.

"Art" is subjective. I have often found the works on the walls of established museums to fall far outside what I personally would consider art. The Tate in London comes to mind. Many pieces simply made wonder why or how they were parked in such expensive real estate..........

So...it's a dicey subject, but that's my 50 cents worth..........

john said...

I think programming is both science, math and art. I say this because you are creating something very nice and thats art is all about.

The Authoring Auctioneer said...

For me, art is creation from raw materials where there was nothing before. The resulting product may be practical, useful, or just something that the mind, eyes, or ears can appreciate. It's a very subjective term.

However, I will always stand by my claim that "found art" is not art. Throwing feces on a statue of Mary or dunking the American flag (or anyone's flag) in a jar of urine is not art. That's just an expression of anger.

As far as code, well, there's a difference. The programmer may write code to get something to function. Perhaps the art comes in when another person takes that functioning code and creates something beautiful with it.

There is no right or wrong answer to this question of art, which is one reason why art is so important. It should not just stimulate the senses and emotions, but the intellect as well.