Java tips, observations, bugs and problems from the world of Spring, Weblogic, Oracle, MySQL and many other technologies...

Friday, 11 November 2011

Software is Art

I perhaps shouldn’t mention this, but one of my colleagues sent around an email pointing to a very cool video made, I suspect, by a competitor, and saying how good it was. At about a minute or two in, they showed some code and bragged at about their digital services. So, as a diverting interlude, I did a tongue-in-cheek critic of the code in a screen shot....

...and my colleague’s response was to tell me to forget the code and to look at the artistic, creative beauty of the video. Now it struck me that, not being a developer, he maybe couldn’t see that writing code is a creative process; an art form in it's own right that underpins modern society. Code can have colour, form, pattern and texture. It can have a special elegance and grace, fly incredibly high over panoramic vistas or crash and die in an instant.

Artists who craft code can be grand masters...

... or absolute beginners,

...but they should go about their business with flair, passion and imagination.

If this were the film The Matrix, then I guess that developers would see Neo and Agent Smith’s view of the world...

...knowing how a program’s put together, seeing what makes it tick, appreciating the beauty of its construction. Whereas my colleague and the rest of the non-developers only see the superficial results:

All art requires a medium and code is no different. The only difference between dabbing paint on to canvas and developing software is that the media in which we developers work is invisible to the real world, but it’s there, pervasive and here to stay.

Sure, like any artists, developers have to understand their craft. There are patterns and techniques to learn in the same way as an artist may learn perspective or mixing colours: the SOLID principals, Test Driven Development, The Decorator Pattern. Is it only me that can see something real cool in the idea of ‘tell, don’t ask’?

Once upon a time, there were those who tried to turn software development into an engineering discipline, you used to see jobs advertising for ‘Software Engineers’, but that’s often no longer the case, it seems to be firmly recognised that we don’t engineer things.