”Creating software is like creating art,” said one of my colleagues recently, a statement that would probably make a lot of people frown, or even laugh out loud. But he did have a point. There are good reasons to consider the process of software development as more than just putting lines of code into some files. I would even dare to say that it resembles the act of creating art. Let me talk you through my thoughts on the subject.
I could compare it to a team-based art like theater. Most plays are the collective creation of multiple performers, stage designers, sound engineers, an organizing crew, and many more. Likewise, most complex business software is brought into life by many different people, each with their own specialisms and responsibilities. Even where the text of a play is established, it’s the people on stage and behind the scenes who give “color” to it. This is also true of software developers.
I admit that teamwork is an obvious one and can be found in many disciplines. So, let’s try to draw a parallel with a more individual art such as painting. I would then focus on the craft involved. I’m not an active painter myself, and there are probably hundreds of different techniques available to create a painting, but I’m sure one way of painting involves using a layering technique: first paint the larger areas, then gradually add more detail, and finally apply the finishing touches. Similarly, software is not developed using an everything-at-once approach. For example, we first set out the general architecture, create some rough outlines, before filling in the blocks and finally adding the detail.
A phenomenon we see among software developers is that when we return to the same work some time later, we might feel that some of it could be further improved or refined. We then make changes to details left and right, in an iterative process that requires reflection, in the same way as artists might return to their creation.
Although there are coding guidelines and checks to guarantee that software meets a series of general expectations and quality requirements (for example to allow others to work on it further), any piece of software code also bears particular characteristics that are an indication of who wrote it. I imagine that painters too have an array of techniques and best practices at their disposal, but there are no two painters 100% alike.
Just like art, software code always betrays the time in which it was created, with the tools used acting as time stamps. The invention of new instruments and techniques allow the creation of music that couldn't even be imagined before. The sound of the second half of the 20th century would have been totally different without synthesizers, electrical amplifiers, or drum samples. This is true for software too. Tooling improves over time, bringing greater possibilities with it.
Certainly, there are also significant differences. Business software serves a specific serious purpose, whereas a work of art always retains a little bit of mystery. Beauty? Wonder? Emotion? Surprise? Elation? Bewilderment? Engagement? Protest? It can be so many things.
But let’s be honest, just like good artists, the best software developers create timeless pieces of genuine beauty. Whatever the time they’re living in and the tools they have at their disposal, the best software developers manage to write code that even after many years still brings a smile to their colleagues’ faces. Isn’t that art? To me it is!
Biography
Joining OMP in 2013, Robin currently specializes in developing software solutions and overseeing projects to help packaging companies optimize their supply chains. He is a specialist in everything embedded, which turned out to be useful for OMP’s Manufacturing Execution System, and its machine links.