The art of programming
My daughter has just had to dramatically narrow down the subjects she does at school.
I faced the same dilemma 40 years ago when I was forced to choose between science and the arts. I thought I’d slammed the door shut on art when I chose Computer Science.
Looking back on four decades in the computer game (or tech as its called these days), I now understand that I was able to maintain the balance between science and art after all.
Twenty two years after having last written a line of code professionally, I picked up the keyboard again last year for my new startup. It was a bit like finding pair of old slippers under the bed. Yes the tools have changed but at heart, programming today is the same as it was half a century ago.
Creativity
Creativity is a phenomenon whereby something new and somehow valuable is formed. The created item may be intangible (such as an idea, a scientific theory, a musical composition, or a joke) or a physical object (such as an invention, a literary work, or a painting)” – Wikipedia
Creating something new is almost always about refactoring, reordering or changing one’s viewpoint of something thats been done before.
In 1917 Marcel Duchamp (as R Mutt) rotated a urinal 90 degrees and submitted it as an artwork to the Society of Independent Artists.
As Beatrice Wood commented:
Whether Mr Mutt with his own hands made the fountain or not has no importance. He CHOSE it. He took an ordinary article of life, placed it so that its useful significance disappeared under the new title and point of view—created a new thought for that object.”
A computer program is created one line at a time. Just as a painting is created one brush stroke at a time, a book, one word at a time, or music, one note at a time… programming is a creative process.
The temptation is to think of the created product of programming as the code itself. The product of writing is not the individual words but the story, the meaning and the feelings that result from that. The same goes for music, fashion, and even business.
Output and outcome are not the same.
Computer code, the written word and the musical score are the output of a creative process. But the purpose and / or the outcome is often something of deeper significance.
The outcome of a version of a completed and working computer program is a function of what the programmer set out to achieve – and how it is received.
The outcome could be to entertain, inform or educate. It could be to get a functional job done within a business context. It could be to help perform a public or charitable service of some sort. It could be to further research … or the pursuit of malign ends. Or just about anything else you can imagine.
Programming is about creating “something new”. Like all new things however the outcome may or may not be valuable.
Craft
Dan Robbins died last week.
Dan was once asked if paint-by-numbers counted as art. “No, it’s only the experience of picking up a brush,” he replied.
Whether we’re talking about painting or performing music or dance or writing there is a set of skills that need to be learned to do it well. In many cases it can take a great deal of time, education and dedication to master those skills.
In painting, these skills might include being able to identify the right combination of tools and materials that are best for the job, and then using them in a proficient way to create a painting of technical merit.
So to create something new (and perhaps valuable) requires a degree of technical skill. This is craft.
The act of programming, like any creative endeavour, is a form of craft.
I am grateful for my early years of learning the principles of computing as well as how to code. Coding without understanding the principles of computing is like painting by numbers.
For me, a programmer is someone who writes code whilst having a perceptive understanding of how software and computers work.
Coding is merely going through the motions. Programming is craft.
But… even if the thing you create requires an exceptional degree of technical skill doesn’t automatically make it art.
When the Bootleg Beatles flawlessly reproduce the look and the sound of the original, they are demonstrating technical skill. But is it art?
Meanwhile, Bjorn Again faithfully recreate Abba in their heyday…
You can become a master craftsman and never create art.
Anyone can buy a replica of the Mona Lisa online for less than $100. This along with 100s of other hand-painted oil paintings, virtually identical to the original are churned out every day in the Chinese village of Dafen. These paintings are produced by highly-skilled craftsman but it’s not necessarily art.
Cargo cult programming is when an “unskilled or novice computer programmer (or one inexperienced with the problem at hand) copies some program code from one place to another with little or no understanding of how it works or whether it is required in its new position.”
Programmers are often referred to as (software) engineers but this is inadequate because although it covers the technical aspect, it doesn’t capture the creative dimension of craft.
Programming is a craft because it requires both technical skill and creativity.
Sincerity
Leo Tolstoy wrote in his essay What Is Art?
… the artist should be impelled by an inner need to express his feeling. … for if the artist is sincere he will express the feeling as he experienced it. And as each man is different from everyone else, his feeling will be individual for everyone else; and the more individual it is — the more the artist has drawn it from the depths of his nature — the more sympathetic and sincere will it be.”
We cannot say the painter, the musician or the programmer is making art unless she cares sincerely about what she is creating.
An artist is “impelled by an inner need to express her feeling”.
She…
… cares intensely about the integrity of the work.
… fears that what she is doing might not work – for her.
And yet, this is still not enough.
If art is the goal then it is not enough to create something with technical mastery that you care deeply about.
The highly skilled Dafen village painter who has the skill to exactly replicate the Mona Lisa on a regular basis is not yet creating art – even if he cares deeply and sincerely about the work.
And neither are Bjorn Again, nor the Bootleg Beatles.
There is one final dimension to art. One last criterion that must be met…
Emotion
Here’s Leo again…
If only the spectators or auditors are infected by the feelings which the author has felt, it is art.
To evoke in oneself a feeling one has once experienced, and having evoked it in oneself, then, by means of movements, lines, colors, sounds, or forms expressed in words, so to transmit that feeling that others may experience the same feeling — this is the activity of art.
Art is a human activity consisting in this, that one man consciously, by means of certain external signs, hands on to others feelings he has lived through, and that other people are infected by these feelings and also experience them.”
Art happens when the artist evokes emotion for herself AND expresses that emotion in a way that connects with the receiver.
The feelings with which the artist infects others may be most various — very strong or very weak, very important or very insignificant, very bad or very good: feelings of love for one’s own country, self-devotion and submission to fate or to God expressed in a drama, raptures of lovers described in a novel, feelings of voluptuousness expressed in a picture, courage expressed in a triumphal march, merriment evoked by a dance, humor evoked by a funny story, the feeling of quietness transmitted by an evening landscape or by a lullaby, or the feeling of admiration evoked by a beautiful arabesque — it is all art.” Leo Tolstoy
Art is when one or more viewers, listeners, or users are connected by a shared emotion with each other and the creator. Only in this case does craft become art.
Only then does the painter, musician or programmer become an artist.
Art isn’t only a painting. Art is anything that’s creative, passionate, and personal. And great art resonates with the viewer, not only with the creator.” Seth Godin
In its broadest sense, art is possible in almost any field.
Seth again…
That’s why Bob Dylan is an artist, but an anonymous corporate hack who dreams up Pop 40 hits on the other side of the glass is merely a marketer. That’s why Tony Hsieh, founder of Zappos, is an artist, while a boiler room of telemarketers is simply a scam.
Tom Peters, corporate gadfly and writer, is an artist, even though his readers are businesspeople. He’s an artist because he takes a stand, he takes the work personally, and he doesn’t care if someone disagrees. His art is part of him, and he feels compelled to share it with you because it’s important, not because he expects you to pay him for it.”
Even if the programmer is a master craftsman (or woman)… is genuinely passionate in her work… and the outcome of the software is truly unique…
Even then, the programmer has not created art unless it evokes, resonates and connects with other people on an emotional level.
Only then does programming transcend craft to become art.
According to Wikipedia a cult is
“A film, book, musical artist, television series or video game, among other things, is said to have a cult following when it has a small but very passionate fanbase. A common component of cult followings is the emotional attachment the fans have to the object of the cult following, often identifying themselves and other fans as members of a community.”
The most obvious type of art produced by programmers is in the field of cult computer games. Games like Star Raiders, released in 1979.
By definition, and in common with art in other forms of media (painting, music, fashion et al) what’s art for you is not necessarily art for me.
Personally I have a soft spot for the Basecamp project management software. This is because it and the purpose that drives its creators resonate with me at an emotional level. I suspect it’s not just me given the usage stats on their website.
I could go on but I will leave it to you to reflect on which (if any) software you consider to be art given the criteria I’ve defined here.
Reconciliation
Coding is writing computer code. Coding is going through the motions. Coding is part of the learning process for programmers. Coding can also be the mindless or shameless copying of the cargo cult programmer.
Programming is creating something new with genuine understanding and hard-won skill.
Programming is a craft when you truly care about what you are creating.
Even if you truly care about your work AND its outcome happens be an emotional connection with others BUT you haven’t created anything new then you are merely copying.
Even if you create something new AND its outcome happens be an emotional connection with others BUT you don’t care then you are merely working.
But… if you create something new AND you deeply care about it AND it results in an emotional connection with others then and only then does programming become art.
(The venn diagram above may be easier to grasp than all this is IF/THEN stuff!)
My eldest daughter is now the same age I was when I thought I had to choose between art and science. She has chosen conventional arts and I’m excited to see where it leads.
As for my younger daughter and anyone else who may feel conflicted between science and the arts then I would urge them to consider programming.
The bottom-line is that you can create art in almost any field including and I would say especially with programming. So, what are you waiting for…
*****
Notes
- This article is the part of a series called Reflections on 40 Years In Tech.
- A few years ago, the programmer and VC Paul Graham wrote about the parallels between art and programming. It struck a chord with me back then and played a part in prompting me to write about my own thoughts on the subject.
- It was Dan Robbins who popularised painting-by-numbers in the 1950s as a means to market paint materials for the company he worked at.