Tuesday, February 26, 2013

Software as Art

Alright, I might be stretching it a little to postulate that software can be art, but give me a chance …

I’ve had this idea in my head for a while that writing computer software is a form of art and deeply creative. Occasionally I have described what I’m about to write to a few people as well. I was reminded of this again while watching a video on www.code.org. In that video, which is encouraging young people to consider a career in software development, there are ideas and philosophies that I can align with.

So let me build an analogy. There are hundreds of languages in the world. Each language begins with an alphabet, a set of characters or symbols. Then these characters are combined into words which have a meaning. The compilation of all those meanings becomes a dictionary. Those words are grouped in types, such as nouns, verbs, adjectives, etc. To do anything with those words requires grammar, a set of rules on how words can be used together. All this learning and none of it has been used in any communication!

Then we take those words and use our minds and hearts to create something – sentences, paragraphs, Haiku, poetry, plays, books, short stories, epics, songs, and so on. Each one is a creative effort. Even the mere idea of composing a sentence such as this one requires a great deal of creativity since it’s likely a sentence rarely if ever repeated before. Of course some are more artistic than others, some touch us and resonate more than others. But that’s language and art all mixed together.

In software development there are also languages, dozens of them. Again each language has an alphabet, most often Latin. Then for each language the characters are combined into words which have a meaning within the software language, though the set of words is much smaller. Again those words are grouped into types such as conditional statements, mathematical, logical, and so on. Software languages also have a distinct grammar of how to put those words together. There is one piece that is highly unique about software and that is it allows those who write software to create new words or concepts by combining the prescribed words using the rules of the grammar for that language! That’s cool.

While spoken/written languages are primarily about communication, one of the essences of software is to solve a problem. It may be a superfluous problem like Angry Birds, or something specialized like the software for the Space Shuttle. For any problem there are thousands and thousands of ways to solve the problem, everyone would most likely solve it quite uniquely. It’s the same with spoken/written words – there are thousands and thousands of ways to express the same idea.

So software is about problem solving, not necessarily about logic as everyone presumes so quickly. Problem solving of this kind to me is just as creative as writing a poem or an epic story. How can the design be made elegant and efficient, and even beautiful? I know I’ve looked at code other people have written and admired what they’ve done; and I’ve seen spaghetti code that boggles my mind as well. Of course software is rarely seen at this level – it all gets compiled into programs that run on computer or phones which has no resemblance to the actual code that was written. To me there is beauty, and creativity, and art in software which unfortunately most people will never see, much less understand. Maybe I’ve turned your opinion just a little – ask me and I’ll show you my code sometime (can I use that as  pickup line;-).

Maybe we could take code and put it up on our refrigerators, or frame it and hang it on the walls of our house like any other art!

Proud to be a software artist.

No comments:

Post a Comment