I just read Brian’s post titled “The art of science (or the science of art)”, which reminded me of certain discussions I had over dinner at the workshop in South Africa, particularly with Carli Deysel, from ThoughtWorks.
On the very first evening, as we were talking about our mutual aspirations to change the world and help people in our industry (!), she posed the classic question: Is code art? Is there code that can be considered as such?
She seemed surprised to hear that I categorically didn’t think so. After all, we were just talking very passionately about our profession and the creativity and skills it requires; so why not?
I quickly learned that if you try to debate with Carli, you better have a solid point. LOL, she easily crushed my weak attempts to make my case. Luckily, Andrea Provaglio joined the conversation and supported my view. He pointed out that we can certainly find beauty in code. But aesthetic appreciation alone is not sufficient to define something as “Art”.
In hindsight, my biggest grief with defining code as art, is that code has a functional purpose. It is born to be useful; it solves problems; it creates opportunities. Code is like any “how-to” books: it has a function and a limited time-span.
Poetry, on the other side, is (functionally) totally worthless; we don’t “need” it. I can’t read a poetry book to learn how to do something. Yet, some of these books are simply immortal because they force us to reflect on who we are; they deepen our understanding of our human condition; they may even make us cry unexpectedly while truly touching our souls.
In other words:
If writing software is about problem solving, then code will never be art. At best, we (the developers) create beautiful hammers.
Claudio, I think you have a good argument for saying code is not an art. However, how do you feel about coding as an art? Use coding/programming/software development in that context.
I like to think of coding as an art, but then I am not thinking about beautiful code. Instead I see the process of creating software as an art, in the same way as I would call the process of a chef composing a new recipe an art. I wrote a short post about the art of creating a blended whisky reminding me of creating software.
But maybe I am stretching the word ‘art’ here?
Can a fine piece of furniture be art? A chair is surely useful. So is a table or a dresser. Can architecture be art? Buildings are definitely useful. Can a car be a piece or art?
I think your argument is based on a questionable assumption: that art is by definition useless. In ancient history, poetry was written as propaganda.
In short, I think Carli had it right.
Interesting, but is this a useful comparison to make?
Hey guys, you all make really good suggestions. Maybe I am totally on the wrong path. Maybe the reasons I explained are not valid. I hear, I listen, I can change.
@Chris: I can see your point, my concept of art is perhaps a bit restrictive. In various disciplines, only the best, the most creative, the one who taps on unique talents is sometimes called an “artist”. I suppose this is a way to pay tribute to people who are beyond everyone else in their fields. I can accept that. It is kind of curious to see how painters, non-technical writers or musicians are naturally called artist, almost independently from how good or average they are.
@Jimmy: Thanks for pointing out that my basic assumptions are probably flawed. Having said that, I’m still not sure we are left with the “truth” (if there is any). Carli opened the discussion with an exploratory question. She didn’t attempt to make an argument in her favor, but she limited herself to prove me wrong. Does this make her right? Apparently Socrates introduced this clever (but dangerous) technique to the Western way of thinking: if you remove all that is wrong, you are left with the truth.
Well guys, since I was quoted I think I have to jump into the discussion!
In short, I think we are walking a very slippery floor here and we technical people would be probably better off leaving the task of defining what is art and what is not to others.
However, I can tell you what I was thinking when I made my comment to Carli. I think that functional design is one thing, aesthetics is another and art is one another. Of course, the line between functional design and aesthetics is blurred, and so is the line between aesthetics and art; but they are different things.
To me, art is when the artist is able to create an emotional connection with the observer. Art is all about people and you can tell a piece of art from something aesthetically nice because art makes a connection with you, it talks to you, it touches strings inside of you. Art crosses the boundaries between people, design or aesthetics don’t. At least that’s what is art to me.
That’s why I agree with Claudio that code is not art, because code is not about our heart and soul. But code can definitely be esthetically beautiful and it takes a lot craftsmanship to create it; and the boundaries between craftsmanship and art are also somewhat blurred.
Interesting insight. Can’t seem wrap my head around the hammer part though. My suggestion.
If writing software is about problem solving, then code will never be art. At best, we (the developers) create functional art.
Mmm…calling it “functional art” would imply that it is indeed a form of art. Maybe it is, I really don’t know at this stage. I kind of like Andrea’s idea that maybe we should be leaving the task of defining what it really is to others. Defining the highest expressions of our own work as a form art sounds frankly a bit pretentious to me.
From another perspective, that of a programmer for instance, code can make an emotional connection with the observer. Same counts for executing code seen from the perspective of the end user.
Eheh, it looks like this topic is still hot in our office as well 😀
I can see how running programs such as, maybe, certain games, for example, might produce some deep emotional impact on their user and maybe go beyond pure craftmanship. Or is it just entertainment?
All art is functional (or purposeful, perhaps) because it serves a purpose which transcends the physical boundaries of our existence. It makes us realise that we are more than just 3 dimensions, because the evocation of emotion created by a work of art is surreal and we only know how to describe the experience using everyday vocabulary. The actual experience is abstracted from this world. Code does not do that for me.
Art is also open to interpretation, unique to the observer. Often, an interpretation is completely divergent from the original intention of the artist. Be this poetry, oil on canvas, a building, photograph or advert. What about code? I think not. What about a design or model? No, again. I am leaning into Andrea’s court here. Code is not open to interpretation. It is intended to be absolutely precise. If not, imagine what unit tests would look like for arty code 🙂
We often express emotionally loaded adjectives such as “beautiful” or “elegant” when we achieve great designs and implementations. But this is just a overloaded statement of satisfaction in the context of achievement. It is not a statement of art.
This is a very old debate that resurfaces from time to time, and I’ve given a good deal of thought to the matter.
It’s possible to bend words to strengthen a particular viewpoint but if we stick with standard definitions it’s clear to me that program code is not art, nor is software development an artistic endeavor.
The main definition of the word “art” is a thing whose primary purpose is the expression of aesthetic beauty or significance. Clearly, a piece of art can be used for non-artistic purposes. For example, you could use a sculpture as a chair or use a painting as an umbrella. Conversely you could use non-art (e.g. a chair or automobile) for artistic purposes. These exceptions do not change the fundamental meaning of the word “art” however.
I’ve found that most people who believe code is art feel that way because code is the product of a creative process. They feel their personal efforts are diminished by saying that code isn’t art. I can’t change those feelings, but I believe that code can be just as creative and intellectually beautiful without being labeled as art.
If code isn’t art, what is it? Code is essentially a set of instructions that a computer uses to perform a task (or set of tasks). Functionality is the primary goal of a program, not aesthetic beauty. This is true of engineering endeavors as well, such as designing a television or an aircraft engine.
So, then, is programming a type of engineering? Well, no. Engineering is defined as the practical application of pure sciences such as physics or chemistry. Computer hardware is rooted in scientific principles but software isn’t. In software, there is nothing akin to Ohm’s Law (electronics) or the Bernouli Principle (physics). Programming is much closer to math than it is to science.
Despite the lack of “software science” it’s possible to apply some engineering techniques to software development. Some people use this approach, but agreement about the “right” principles and techniques is far from universal. I’d like the phrase “software engineer” to be more than an oxymoron, but the software industry is still too young and immature for that.
The best term that describes software development is “craft”. The dictionary defines a craft as a trade or occupation that requires special skill. To anyone who feels slighted by this definition, let me say that “craft” does not imply lowly, unprofessional or old-fashioned. Software craftsmanship is an important, challenging skill in today’s world!
I consider myself a scientist by nature. I have an electrical engineering degree and was orginally hired as an “engineer”. Later, in art school my teacher called me an “artiste”. After nearly 30 years in this business, I apply the same discipline and creativity to software development no matter what my title is.
The attribute of “Art” is subjective and best measured individually on a spectrum rating rather than as 100% “Art” or 0%, and that some cases of code can have an “Art” rating rightfully applied. I can think of one case from the perl monks ( http://www.perlmonks.org/index.pl?node_id=45213 ) that I believe would deserve a significant “Art” rating and some code is more artful than other code, but for the majority of cases the code itself does not have a significant Art value.
However, a Digital Artist can use code along with a computing machine, data set and set of input devices (keyboard, mouse, camera, photoshop software) to produce Digital Art. The Digital Art’s primary purpose is the expression of aesthetic beauty or significance (think random-seeded screensaver designs, music-seeded visualizations, human-controlled games/entertainment, CGI movies…). These types of digital artists are even awarded at the Oscars in categories such as Best Visual Effects, Animated, Film Editing and Sound Effects.
An artist abstracted is a black box function whose input is non-art, and output is art. The input data/paint and in some cases even the individual human body itself is not enough to be considered the Artist. The artist could be God creating the Universe, a project team (programmers, designers, project managers, producers, clients) creating a movie/visualization/music/game/virtual world/soundtrack, artist and customer creating commissioned Renaissance portraits… artist and a set of experiences, materials and inputs create an output expression of art.
Like a paintbrush, camera, scanner, photoshop, data set, website server, HD display screen, printer and frame, code is just another tool that the modern digital artist uses to produce art. It can have art qualities, like how some canvas is better than others, and even be sculpted into art, but for the vast majority part is not art.
Why don’t coders stop pretending thay are artists or creative designers? This argument annoys me. Code is NOT art…of course it’s not…it’s code, a set of alpha and numeric characters put together in such a way as to order or program a computer to perform certain functions or display elements in a certain fashion when viewed in a browser. It’s a tool. You wouldn’t say ‘Quarkxpress is art’, or Dreamweaver is art would you?
I’m not sure the argument that art is not functional is true. I would totally agree that, by it’s nature, a beautiful piece of carved furniture or a well designed building is art and most people would agree with this since those objects are generally pleasing to the eye. I also feel most people would agree with the fact that something that is aesthetically beautiful could be deemed as being a ‘work of art’. Yes you might look at a website and think the design is beautiful or ‘delicious’ but those things that make it so attractive, the colours, the typefaces, the imagery have all been created by a person a designer, someone who has the artistic talent to visualise what those elements as a whole should look like and where they should be placed in order to create a fantastic picture. The code is what puts all of those created elements together to make them work on the internet. Some of you may say…’but hold on the code (CSS) can style up what would be otherwise boring html’ This is true but that CSS code just uses pr-edesigned fonts, colours and images.
Quarkxpress uses CSS and in fact I believe was the pre-curser to the use of CSS in webdesign. Now…I wouldn’t say for one moment that the guys (however intelligent and talented they are) who program the code for Quark could be classed as artists or designers.
To use a very simple analogy I see the difference between code and art as this: I remember as a child having one of those puzzles where a set of squares had to be maneovered in order to build an image. The image had been pre-designed and printed and the puzzle was usually sold with the image already distorted. Well…I see the person who had designed or created the image in it’s complete state as a creative designer or artist and the person who moves the squares around to build the image as a coder. Even though he/she played a very important role in completing the picture they weren’t involved in the creation of the initial image or ‘art’.
I think coding is a skill and an immensely important one especially with regards to website design. There are some superb creative designers that have mastered the art of coding and would therefore call themselves ‘web designers’ or even ‘web developers’ (I’m not sure how far they could become submersed in the practice of coding before risking the danger of rendering themselves ‘stagnent’ as creative designers). Then there are those designers who wish to remain just visualists, those who are quite happy to swim in the sea of print design and media and every so often create ‘look and feel’ comps for web design projects.
Of course then there are those people who have had no training or experience working as creative designers as such but may have attended a course in web design after completing a degree in an I.T. related subject. They may try their best at being creative designers, some of them, if they have an ounce of creativity within them may just scrape through and fool others into thinking that’s exactly what they are. However I truely believe that creativity is something you are either born with or not. It’s not something you can learn. You can learn to use a piece of software and create layouts, yes, but true creativity isn’t somthing you can download or take an online tutorial on.
So…let me reiterate the fact that code is code and art is art, it’s as simple as that…well that’s my opinion anyway!
Thanks for reading. 😉
Hi Marc, thanks so much for sharing your opinion here. When I generally talk about creativity I often distinguish between artistic creativity and, say, other types of creativity (i.e. the ability to generate ideas). I’m fundamentally convinced that you can develop both.
Artistic creativity needs some inborn traits but it is generally a base and needs constant development. A lot of classic artist work really hard to develop their talents.
The other type of creativity, the ability to generate quality ideas, on the other side, is a skill that should can can be developed with the appropriate tools and mindset.
Ultimately, I like to think that writing code is a craft, nothing less, nothing more.