Years ago I ended up in a discussion with someone over whether programming was art or not. He claimed that it was merely a tool for a practical purpose while I claimed that there was beauty in code, unique to the medium.
Watching Andrew Sorensen’s live performance doing GOTO proved me right. Sorensen makes music from programming real time systems in real time with real time output. Changes in the code could be perceived instantaneously. Sorensen would listen to the music and change the code based on this.
Live editing is tough – suddenly timing matters, not only in the execution but also in our input. All changes that are made are based on the immediate feedback that we get, the music that we hear. The observed state is what leads us to the change in the first place. And the changes become irreversible, once they are out there we can’t take them back; no matter the result.
In this way Sorensen added beats, harmonies, and melodies to create a musical performance. All the while the audience could watch the music being coded on screen while listening to the resulting music. When the performance ended the resulting code was not the experience that we had all shared. As Sorensen noted, the changes in the code WAS the performance.
Programming is a journey
But what about the everyday programming? The code we write day-to-day based on requirements and user-needs; where’s the art in that?
For Sorensen the art was in the changes made, the immediacy of the output combined with the tools and objectives of the programmer. In this way the art was in the journey.
Creating good code is a journey; there will be starts and stumbles and lessons along the way. The experience of coding is a journey for the developers, but it results in an end-product for one or more users. This end-product, however, is rarely a journey for our users. Just as with Sorensen’s performance, the end-product is not the experience; not for the developers and not for the users. No end-product ever is.
The artist/programmer has had an art-
journey, but the moment the code leaves the artists hand it becomes a mere craft. It is always the recipient who must take this particular piece of craft and turn in into art.
Developers are artists. Never make your code anything less than art.