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