Toward an art of software development

What is art? Technical mastery, innovation, expression, beauty. Those are the words that come to mind. Art is about emotions, not rationality. About how it makes you feel, rather than how well it works.

In The Pragmatic Programmer, Andy Hunt and Dave Thomas say: "the construction of software should be an engineering discipline", but that "it doesn’t preclude individual craftsmanship". It is assumed by many that software development is purely an engineering discipline.

I do not agree.

"Art" comes from the Ancient Greek word "Techně", which implies the technical mastery of a craft. It is quite incredible to understand that artists were in fact, at first, artisans. The border between craftsmanship and art is thin: an artist was someone able to perform a given work at a higher quality level than others. Excellence was the criteria. Artisanal products (such as textiles) could be perceived as much more precious than paintings or sculptures. In a sense, any artisan can become an artist.

On the other hand, the meaning of a word is tied to its historical context, so defining art from its etymology might be self-limiting. Let's have a look at another approach.

In his book Living with Art, Mark Getlein proposes six functions of contemporary artists:

1) Create places for some human purpose

2) Create extraordinary versions of ordinary objects

3) Record and commemorate

4) Give tangible form to the unknown

5) Give tangible form to feelings

6) Refresh our vision and help see the world in new ways

I could make parallels with software for each point above. My key takeaway is that art is about communicating ideas and storing information as well. Roman artists made sculptures of emperors to "store" this information and allow them to access immortality in some way. Art is something you interact with. Not only physically.

Similarly, software aesthetics exists. Paul Graham says it better than anyone:

Hackers, likewise, can learn to program by looking at good programs [...] paintings are created by gradual refinement [...] Great software, likewise, requires a fanatical devotion to beauty. If you look inside good software, you find that parts no one is ever supposed to see are beautiful too. [...] It drives me crazy to see code that's badly indented, or that uses ugly variable names. [...] Most makers make things for a human audience. And to engage an audience you have to understand what they need. Nearly all the greatest paintings are paintings of people, for example, because people are what people are interested in.

I can see many parallels between the Maker movement and how artisans reached the artist status in the first place.

Craftsmen belong to guilds. Artists have patrons.

Engineers belong to companies. Makers strive to live from their own products.

Software development has reached a stage where it is not necessary to be part of a company to make tech products.

Hackers are breaking pre-established rules and express themselves throughout their own form of expression. Just like great artists use art as a catharsis, makers create products to solve their own problems.

Companies become either increasingly atomic or increasingly big. There is less and less in-between.

"Artists ship," says Steve Jobs. So do makers.

So while I admit that hacking doesn't seem as cool as painting now, we should remember that painting itself didn't seem as cool in its glory days as it does now.

Paul Graham

In Ancient Greece, each art form was personified by a Muse. Nine Muses, but none to represent painting and sculpture.

Sculptors and painters were held in low regard, somewhere between freemen and slaves, their work regarded as mere manual labor.

In Our Time: The Artist BBC Radio 4, TX 28 March 2002

Sounds familiar?

What if, instead of marketing software development as a pure engineering practice, we promoted it as an art?

Could it inspire a whole new generation of product-oriented programmers willing to solve important problems?

Developers, start creating. Don't fall into elitism, but be proud of your job. Because maybe one day, the future generations will be able to look at us and see pioneers of a software art.