DEV Community

Néstor Llop Guerra
Néstor Llop Guerra

Posted on

Is programming an art?

I asked this question a while ago on some forums out there in the internet, but no programmers answered. The only answers I got were from people who did not ever experience programming at all.

Some people told me that programming is merely the human response to the necessity of algorithms, and not an emotional or expressive thing.
Others said to me that it is not art because it does not stimulate our senses.
Other people even told me that programming does not give a sensitive POV of the world, and thus it is not an art.
On the other hand, there were people who defended that programming is an art as far as the programmer is an artist.

So, let us get to it. DEVelopers out there, do you think programming is an art? Why?

Top comments (21)

Collapse
 
yhomarth profile image
Yhomarth Reyes

I definitely consider it an art depending of the way of programming.

I have seen code that do a certain process written in different ways.

An example :

if (condition) {
return object.operationA;
}
else {
return object.operationB;
}

when it can be modified in a cleaner way.

return (condition) ? object.operationA : object.operationB;

Obviously they both do the same, however, in the second way it looks aesthetic, clean. Of course, from my spot such a code i consider a art.

Collapse
 
bruncky profile image
Bruno C. Brunckhorst

The thing about that is that the definition of art is not absolute.

Sure, there’s something about art in the dictionary, but even then there are several definitions for it. Let’s look at one of Merriam-Webster’s definitions:

“The conscious use of skill and creative imagination especially in the production of aesthetic objects”

According to this, programming is, in fact, an art. It’s the use of skill and creative imagination — “especially in the production of aesthetic objects” means that it’s not exclusively in the production of such objects.

So, that said, I think that programming is an art :)

Collapse
 
xexyl profile image
xexzy

If you're going to cite the dictionary - not that I would at all trust M-W or really an American English dictionary (but never mind that) - then you have to also consider that that's not the only definition of art. First what you're getting at:

1 [mass noun] the expression or application of human creative skill and imagination, typically in a visual form such as painting or sculpture, producing works to be appreciated primarily for their beauty or emotional power: the art of the Renaissance | great art is concerned with moral imperfections | she studied art in Paris.
• works produced by human creative skill and imagination: his collection of modern art | [as modifier] : an art critic.
• creative activity resulting in the production of paintings, drawings, or sculpture: she's good at art.

But more importantly:

4 a skill at doing a specified thing, typically one acquired through practice: the art of conversation.

Programming therefore most certainly is art. If you want to talk about aesthetics though art certainly is subjective. When I think of programming being an art I think of the latter definition because that's what naturally comes to mind.

Collapse
 
nathanheffley profile image
Nathan Heffley

I would go as far to say that programming satisfies the "aesthetic object" clause as well. I love looking through some really well crafted code and admiring how good it looks.

Collapse
 
gabedunn profile image
Gabe Dunn

My favorite quote on this topic is one that I found on @thepracticaldev 's Instagram account a while ago:

"You might not think that programmers are artists, but programming is an extremely creative profession. It's logic-based creativity." - John Romero.

Collapse
 
miketalbot profile image
Mike Talbot ⭐

Programming is not art - just like hitting a stone with a chisel is not art - what we make, that can be art.

a) We can make something that is artistic like a game or a motion graphic - definitely art
b) We can make an algorithm that expresses a fundamental truth and lets you understand the way the world works in another way. That may not be art for the masses, because they lack the ability or desire to perceive the meaning.

Collapse
 
martinsotirov profile image
Martin Sotirov • Edited

For me, it's about the process, not the end result. If there are multiple ways to approach the problem and each of them is equally valid, then it's art. If there is one correct way dictated by the laws of physics, then it's engineering.

Collapse
 
xexyl profile image
xexzy

Programming most certainly is an art. If any programming is not art it's the programmer that isn't artistic or rather who is at fault.

That's not the best way to put it but it's one way anyway.

Collapse
 
peritract profile image
Dan Keefe

The most fitting definition of poetry I've ever read is Coleridge's: "the best words in the best order." This definition applies equally well to programming.

Not everything written in code is art, but the act of creating something with words is an artistic tool, and beautiful code is art.

Collapse
 
lacanlale profile image
Jonathan Lacanlale

Hopefully I'm not too late to the party but I actually just thought about this in lieu of binge watching Disney documentaries. I do think its an art. I think programming is very much familiar with the creative process in many ways, where iteration after iteration is a sketch and even when the final product is made, there might be flaws that get taken into account in the next project. And that becomes a cycle.

Collapse
 
ytjchan profile image
ytjchan

To add to the discussion, programming has similar problems as art does. Programming can be opinionated, and often can be divided into many -isms, from OOP & FP and different frameworks & languages, to various patterns and indentation style.

Collapse
 
xexyl profile image
xexzy

As a participant/winner of the IOCCC I will say that those who say it's not an art aren't programmers or are very very inexperienced.

No emotion? I have no idea where they get that idea. What about game programmers (I'm one of them)? They think that that involves no emotion when you are creating another world? These people are beyond ignorant - they don't have a clue about human emotion or more likely emotion full stop.

Debugging is an art too.

Basically anyone who thinks programming is not an art isn't in the position to say that programming is not an art and therefore should not be considered worthy of being asked the question.

Simple as that.

Collapse
 
redeving profile image
Kelvin Thompson

The best concept of code as art, to me, was expressed in a science fiction book (one of my favorites, and favorite author):

play.google.com/store/books/detail...

There's no way I could summarize it properly (I tend to put the F- back into Art half the time it seems!) You'll have to read it. But there was one part that when the code was visualized to its fullest, it looked like a perfectly rotating piece of DNA. Very cool! But again you can't really get it unless you read it.

Collapse
 
rhymes profile image
rhymes • Edited

Great question Néstor!

TLDR; Sometimes? Probably not most of the time. You can use programming to create art, programming itself... not really

Disclaimer: I think many devs confuse creativity with art but that's another argument.

Let's start with these two definitions, which I personally agree on (otherwise "everything is art" and there wouldn't be a need for classification or discussion):

Defining art can be difficult. Aestheticians and art philosophers often engage in disputes about how to define art. By its original and broadest definition, art (from the Latin ars, meaning "skill" or "craft") is the product or process of the effective application of a body of knowledge, most often using a set of skills; this meaning is preserved in such phrases as "liberal arts" and "martial arts". However, in the modern use of the word, which rose to prominence after 1750, “art” is commonly understood to be skill used to produce an aesthetic result (Hatcher, 1999).

The second, more narrow, more recent sense of the word “art” is roughly as an abbreviation for creative art or “fine art.” Here we mean that skill is being used to express the artist’s creativity, or to engage the audience’s aesthetic sensibilities.

I would also like to quote some of the history greatest thinkers and artists (so we widen a bit our perspective as they don't always agree with each other):

Art begins with resistance — at the point where resistance is overcome. No human masterpiece has ever been created without great labor.
– André Gide

Art evokes the mystery without which the world would not exist
– René Magritte

and one of my favorite quotes from the ever legendary poet Rilke:

"A work of art is good if it has arisen out of necessity. That is the only way one can judge it. So, dear Sir, I can’t give you any advice but this: to go into yourself and see how deep the place is from which your life flows; at its source you will find the answer to, the question of whether you must create. Accept that answer, just as it is given to you, without trying to interpret it. Perhaps you will discover that you are called to be an artist. Then take that destiny upon yourself, and bear it, its burden and its greatness, without ever asking what reward might come from outside. For the creator must be a world for himself and must find everything in himself and in Nature, to whom his whole life is devoted."
— Rainer Maria Rilke

I'm not an expert in art history but as a "consumer of art" if I were to add my own definition it would be a combination of aesthetics and sparked emotions with this introspective requirement (which can be conscious or not).

An example (in my opinion) of an artist who uses programming as a medium is Jonathan Harris.

How do you decide that whatever you're looking at or listening to is art or not?

Collapse
 
shaunagordon profile image
Shauna Gordon

I don't think any of what you've put here is at odds with the idea that programming is an art unto itself. In fact, I think most of it supports the idea.

By its original and broadest definition, art (from the Latin ars, meaning "skill" or "craft") is the product or process of the effective application of a body of knowledge, most often using a set of skills; this meaning is preserved in such phrases as "liberal arts" and "martial arts". However, in the modern use of the word, which rose to prominence after 1750, “art” is commonly understood to be skill used to produce an aesthetic result (Hatcher, 1999).

The second, more narrow, more recent sense of the word “art” is roughly as an abbreviation for creative art or “fine art.” Here we mean that skill is being used to express the artist’s creativity, or to engage the audience’s aesthetic sensibilities.

The first definition defines programming, itself -- the effective application of a body of knowledge, most often using a set of skills. A programmer is the quintessential knowledge worker, and programming is, without a doubt, a skilled craft.

The second definition doesn't contradict programming as an art, either, unless you also use it to claim that things like writing are not art, either. I think here, though, where things get fuzzy is on who is the audience.

A non-technical end user isn't going to care about the code itself (which is where I think a lot of people are drawing the line on "programming isn't an art, but it can be used to create art"), but they do care about the aesthetics of what the code makes (generally, the UI), even if they don't totally realize it. But a software product isn't just a pretty UI, it is also the expression of one's creativity. That UI is pretty (and engages the audience's aesthetic sensibilities -- or challenges them) because it's an artistic process. In fact, formally-trained designers have a lot of the same training that formally-trained visual artists get.

But there's another audience that most people don't think about it -- other programmers. Those who come after the original author of a given piece of code. For that audience, the code is the aesthetic. Hell, we have entire languages that were written to look good while also doing the work of being a programming language. We have style guides that rival the style manuals for writers in both breadth and depth. And the process for writing code is nearly identical to the process for writing prose (rough draft, edit cycles that include things like removal of superfluous bits and refining other bits, "finished" state).

Let's take a look at this quote that you included, in more depth:

"A work of art is good if it has arisen out of necessity. That is the only way one can judge it. So, dear Sir, I can’t give you any advice but this: to go into yourself and see how deep the place is from which your life flows; at its source you will find the answer to, the question of whether you must create. Accept that answer, just as it is given to you, without trying to interpret it. Perhaps you will discover that you are called to be an artist. Then take that destiny upon yourself, and bear it, its burden and its greatness, without ever asking what reward might come from outside. For the creator must be a world for himself and must find everything in himself and in Nature, to whom his whole life is devoted."
— Rainer Maria Rilke

This is programming, too, especially when considering those who are programmers by passion. This is also where programming overlaps with other forms of art. In both cases, it's an act of creation, and those driven to such fields are driven to make in general. While one can learn how to be an author or a painter or a programmer without having a passion for it, there's a pretty stark difference between them and the ones who are called to it.

Collapse
 
rhymes profile image
rhymes • Edited

The first definition defines programming, itself -- the effective application of a body of knowledge, most often using a set of skills. A programmer is the quintessential knowledge worker, and programming is, without a doubt, a skilled craft.

Yeah, programming is definitely a skilled craft.

The second definition doesn't contradict programming as an art, either, unless you also use it to claim that things like writing are not art, either. I think here, though, where things get fuzzy is on who is the audience.

I do think there's a difference between artistic writing (there are some who only consider poetry a form of art, not fiction writing, I would include both) and programming. I think there's a difference between the creativity of the creator and the final product. You can be a creative person and not create art, both if you use painting or instructions for a compiler.

Can you create art accidentally? Probably.

But a software product isn't just a pretty UI, it is also the expression of one's creativity. That UI is pretty (and engages the audience's aesthetic sensibilities -- or challenges them) because it's an artistic process. In fact, formally-trained designers have a lot of the same training that formally-trained visual artists get.

Sure! But I don't consider design an art. I think where our definitions don't align is the distinction that I make between the craft itself (programming or design) and the final product. I agree with you that the the code itself doesn't matter (we all agree that you can create a bad user experience with awesome looking code and viceversa).

What I'm tyring to say in my previous comment is that intention is what makes it art. Or at least the desire to self express oneself. If I make an aestethically beautiful design of an interior, am I making art or just beautiful interior design? Same goes for web design, industrial design and so on.

I don't think that a pretty UI is inherentely art, otherwise everything is art because everything is beautiful to someone (or at least we can argu we can find at least a person among the billions we are who would deem a thing beatiful).

Hell, we have entire languages that were written to look good while also doing the work of being a programming language. We have style guides that rival the style manuals for writers in both breadth and depth.

But what does "look good" means? It's also entirely subjective, right? Is this good?

def f():
  print("hello")

so, if this is good to me and you, does it make it automatically art? I don't think so.
Also, you know better than I do that for any single "combined group of text that makes up a unit of work which include statements and/or functions" (let's say a file in a programming language) we can find tons of people who would disagree. I personally think Scala is ugly to read, others might disagree. I don't think we're any closer to the real of art, it doesn't matter who's right on Scala.

And the process for writing code is nearly identical to the process for writing prose (rough draft, edit cycles that include things like removal of superfluous bits and refining other bits, "finished" state).

Again, this to me is skilled craft, not necessarily art. I'm not saying I am right and you are wrong. I'm saying that art is a step forward skilled craft, and it's also mutable in time.

Let's take architecture for example: is the house I'm living in art? Definitely not. If I were living in a Ghery's building would that make me a person living inside a piece of art? Some would say so, others would disagree :-D

This is programming, too, especially when considering those who are programmers by passion. This is also where programming overlaps with other forms of art. In both cases, it's an act of creation, and those driven to such fields are driven to make in general. While one can learn how to be an author or a painter or a programmer without having a passion for it, there's a pretty stark difference between them and the ones who are called to it.

I don't think that passion inherently makes it art though. It makes you a passionate hobbist (or a passionate professional). Otherwise all passionate programmers would be artists, no?

If your passion leads to create art with programming, then it's art, otherwise it's just a (potentially useful) program :-) I put "potentially useful" in parenthesis, not related to art itself, but related to the fact that one could have a tremendous amont of passion towards something and: either not still be good at it, or produce something that doesn't work. After all a program can work or not work.

A piece of art doesn't even have that requirement, it doesn't need to be "practically useful".

I think we can be both right and wrong at the same time though, as there's no strict definition for any of these concepts