Is Programming Art? 462
chromatic writes "A constant question for software developers is 'What is the nature of programming?' Is it art or science? Does creativity or engineering lead the design and implementation of a program? John Littler talked to several well-known and well-respected programmers (including Guido van Rossum, Andy Hunt, Bjarne Stroustrup, Paul Graham, and Richard Stallman) to find their answers; he shares their thoughts and his own in Art and Computer Programming." From the article: "What the heck is art anyway, at least as most people understand it? What do people mean when they say 'art'? A straw poll showed a fair degree of consensus--art is craft plus a special degree of inspiration. This pretty much explains immediately why only art students and art critics at a certain sort of paper favor conceptual art. Conceptual art, of course, often lacks a craft component as people usually understand the term."
Not a fine art (Score:5, Insightful)
"I would describe programming as a craft, which is a kind of art, but not a fine art. Craft means making useful objects with perhaps decorative touches. Fine art means making things purely for their beauty."
When you have to take functionality into account, it often kills the artistic side of the creation.
Drivel (Score:2, Insightful)
It's like a janitor contemplating whether a clean hall is art. Why not spend your time examining better methods of developing portable/maintainable code or something. I mean really, let's say you get your answer. "It is art" or "It isn't art", what has been accomplished other than the ability to puff up about what you do?
This is no different than a bunch of tools contemplating what makes them l337.
BTW I'm not arguing for or against whether it is art. I strike only on the sillyness of the question.
Emotion? (Score:3, Insightful)
While Windows sometimes makes me cry, to what degree does programming convey emotion?
It's engineering (Score:5, Insightful)
Re:Not a fine art (Score:5, Insightful)
The Picasso programmer: As a whole the system works, but each piece is a warped view of reality.
The Jackson Pollack programmer: Throws code at the system, trying to see what works.
The Georges Seurat programmer: When you step back from the system, you can see the overall pattern, but close up each piece is totally distinct from all of the others. (Actually, this is a pretty good description of OO design).
The Michalangelo programmer: Has a grand, sweeping view of what the system should do, but each piece is done in such meticulous detail that it takes years to finish anything.
Similar: Is an essay art? (Score:5, Insightful)
You just have to remember the appeal of art of this sort is MUCH smaller... you need to understand it to really enjoy it... and unlike abstract art or modern art (where very few understand it and very many say they do)
So, yes, it is an art form... for a very small subset of the population.
My two cents, anyway...
Re:Not a fine art (Score:5, Insightful)
That would mean that architecture, furniture design, etc lacks in the artistic side? I dont think this is the case at all - giving something functionality doesnt remove the artistic side, they complement each other and are not mutualy exclusive.
The Perfect Slashdot Story (Score:5, Insightful)
That's like a story that's titled, "Chocolate Ice Cream, better than Vanilla?"
Art is subjective. If you believe that some part of science is subjective as well, then you understand that there is no easy answer to the question posed. If you think science has no subjectivity, then welcome to the food fight!
Quality: It's a Numbers Game [whattofix.com]
Re:Drivel (Score:5, Insightful)
How about things like quines, or programs that are valid and working programs in more than one language at once?
Aren't these things art? If not, why not? A programming language is, per se, just a tool - just like a brush. You can use brushes to simply coat things with paint, and there are many people who do just that for a living; but you can also use them to create art. The same goes for programming languages, doesn't it?
No, it's a craft (Score:3, Insightful)
Art is aesthetic, not useful. While you can use those aesthetics for a useful purpose (e.g. selling it to people who appreciate those aesthetics), that doesn't mean it's intrinsically useful.
Programming is a craft. It is useful, which distinguishes it from art. A certain sense of aesthetics, skill and experience is necessary to program effectively, which distinguishes it from merely being a profession.
CS is science. Design is art (Score:5, Insightful)
The design of a computer program is an art. There is no defined standard for what is or is not good design, its not falsifiable. And its not something that can be taught by rote in a college course. Picking the right design for your specifications and requirements is an art, and one that too few people really understand.
Of course it is ... (Score:3, Insightful)
Similarly, designing a complex system looks to an outsider like merely writing one line of code after another. It is only when you step back and see how the lines of code merge into a subroutine, and subroutines coalesce into cogent modules, and these modules get connected together to become a useful system that you can see the art. One square centimeter of yellow paint is not art, that square in the middle of one piece in a series of paintings on a theme is.
There are a lot more housepainters than artists. There are a lot more coders than there are hackers.
Re:Both! (Score:2, Insightful)
Re:Emotion? (Score:3, Insightful)
So a book of poems or prose can never be good art?
The Recurring Three Words (Score:3, Insightful)
from wikipedia:
"Mathematical rigour is often cited as a kind of gold standard for mathematical proof. It has a history, being traced back to Greek mathematics, where it is said to have been invented. Complete rigour, it is often said, became available in mathematics at the start of the twentieth century. This relies on the axiomatic method, and the subsequent development of pure mathematics under the axiomatic umbrella. With the aid of computers, it is possible to check proofs mechanically; throwing the possible flaws back onto machine errors that are considered unlikely events. Indeed, mathematical rigour may be defined as amenability to algorithmic checking of correctness. Formal rigour is the introduction of high degrees of completeness by means of a formal language. Most mathematical arguments are presented as prototypes of formally rigorous proofs, on the grounds that too much formality may in fact obscure what is being said."
Robustness [wikipedia.org]
from wikipedia:
"In computing terms, robustness is reliability or being available seven days a week, twenty-four hours a day. Robustness is an important characterists of the internet because network design is a key factor in the availability of data."
This also can translate into portability.
Elegance
from wikipedia:
"The proof of a mathematical theorem is considered elegant if it is surprisingly simple yet effective and constructive; similarly, a computer program or algorithm is elegant if it uses a small amount of intuitive code to great effect."
Euclidean Geometry was long thought to demonstrate all three qualities. If one wants to attribute art to elegance then programming can be said to be art.
2 more actualy (Score:2, Insightful)
C.) and like art many people seem to actively pursue the work of some of these programmers and place high values on their works. However, they do so with little regard as to weather the works belong to the "crap" or the "skilled" categories.
When it comes to art... (Score:3, Insightful)
Re:Drivel (Score:5, Insightful)
Have to programs, "Comp Sci", which would remain what is is, and "Programming" which would focus much more on "real world" issues. Think of it kinda like Physics vs Engineering.
It's not art (Score:4, Insightful)
Maybe I am a strange software developer, but these are not the questions going on through my mind at night. Maybe "how can I improve the design" or "what does the customer really want from this product" but usually it's "how can I get that cute girl back to my place". Seriously though, these people have too much time on their hands. I didn't RTFA, so it may be brilliant. But programming is definitely a science. The thing is, that as programmers, we can recognize beauty in the design and implementation of a program. In that sense, to us, it can be beautiful. We might say the programmer is so good that he is an artist. But this is true in any field. We have someone install our networks and truly, he is an artist. He takes the spaghetti of thousands of cables and makes it so neat and logical it would make an artist weep. But is it art? No...that's a stupid question.
Re:Drivel (Score:3, Insightful)
Programmers come from vastly different backgrounds (Score:4, Insightful)
Unlike a lot of coder geeks I know, though, I got A's in advanced english classes, AND art classes
My boss at my former job used to play football and now codes. Can you imagine?!?! Football! While I spent summers geeking out, he was learning what a button-hook was. The horror. lol. (i pretty much have zero interest in sports. it seems like a lot of pointy-haired types do, though. oh well, to each his own)
Meanwhile, the two coders I know who I used to secretly idolize because they actually WERE cs majors, got tired of coding and are now both getting MBA's (which seems like a boring thing to do, were I to do it). Their complaint was that coders get shit on at corporate jobs, and they were just tired of the whole design/code/test/deploy/debug/support cycle.
Screw 'em, they also liked football
I know what they're talking about in the former case of feeling taken-advantage of (not to mention that I am TIRED, TIRED of working with Microsoft-only technology, from an ideological/stuck-in-the-Microsoft-bubble standpoint!), and my solution to that is probably going to happen soon. Take my savings, quit my corporate job (which has done nothing for my technical development lately) and code freelance for a while. Wish me luck (I'm a little nervous), I have a few ideas and I'll be starting by diving headfirst into Ruby/Rails and seeing where that takes me
Perhaps I'll never be a millionaire (or perhaps I will), but building stuff (the craft of it, and the type of creativity required at times) that someone else thinks is cool really floats my boat.
Who cares what programming "is", as long as people stop frickin' stereotyping us. The only thing that all programmers have in common, is that they program. The rest of it, like the difficulty in dating the opposite sex, is just positive correlation
programming is like architecture (Score:3, Insightful)
The vast majority of buildings are just buildings. But every once in a while, a building is a work of art.
One of the things I like about architecture (and computer programming) is that the buildings always serve a purpose. They don't arise out of the ether to express a purely abstract thought, but arise from the need to create something useful.
But don't delude yourself by thinking that you're an artist just because you're a computer programmer. The vast majority of buildings are cinder-block, minimum-cost affairs, and the same is true for code.
What would Mozart have thought? (Score:5, Insightful)
The content of programming is perhaps too instrumental (i.e., interesting for its usefulness more than its inherent qualities) to rise to the level of art. But this may be changing with the state-of-the-art games. In a hundred years, people may look back at today's game developers as the inventors of a new art form!
Art Is What You Can Get Away With (Score:3, Insightful)
View of a BS + BFA (Score:3, Insightful)
Several years later, I went back to college, this time studying graphic design and illustration, with a foundation of ye olde fine arts thrown in. I was only mildly surprised to have an instructor start talking about the Fibonacci numbers and the Golden Section. It learned that there are even objective and verifiable standards for what humans usually perceive as "balanced", "unsettling", and even "beautiful". This doesn't mean that art can be verified quantifiably, but it does mean it isn't 100% subjective, either. (Rob Liefeld is a bad artist. Full stop.)
"What is art?" is a subject that will get even art students into heated debate with each other. But if you include architecture and poetry (and I think most people would), then programming has to be at least within the grey fringe.
Personally, I don't care much for attempts to distinguish between (for example) fine art, commercial art, design, craft, etc. Part of that's because I took classes that arguably included each of these, and what I was doing in one or another them wasn't fundamentally different. My art school has majors in Furniture Design, Sculpture, Illustration, Photography, Painting, Interior Design, Graphic Design, etc. and hardly anyone around here tries to separate them into categories of craft/art/design etc.
There's art in science; there's science in art. That's certainly the way Leondardo approached his life's work, and it's how I try to approach mine.
Re:Not a fine art (Score:2, Insightful)
I'm sure there are artistic programmers out there doing great things, but in my experience, I would rather work with plodding, methodical people than creative geniuses. Of course, this wouldn't be true of all "genres" of programming, but probably true for most.
I've seen code burning off the shores of Orion (Score:2, Insightful)
And I've also seen rusting hulks of code, slapped together with variable names like A1, A2, A3, A4 - used for text, numeric, array, and object types at the same time.
Programming is an Art and a Science. Darned few artists out there at the best of times, and not that many scientists either, sadly.
Re:It's engineering (Score:5, Insightful)
I grew up in a family of artists (Score:3, Insightful)
More of a continuum. (Score:5, Insightful)
functionality mixed with aesthetics in the middle
And at the other end, 100% pure aesthetics with no functionality (apart for the materials used).
Of course, why limit it to one dimension? How about 2 dimensions (a square). In one corner, a bad woodworker who is also a bad artist will make a crappy, ugly chair.
In the opposite corner, you have a very skilled woodworker who is also a very good artist who makes a very beautiful, yet very functional chair.
In the other corners are a bad-woodworker but good good-artist and a good-woodworker but bad-artist.
Re:Not a fine art (Score:1, Insightful)
Art is a work, created by a craftsman, with the intent to communicate truth.
Comes from this Posole blog post (with more specifics)...
http://wohba.com/posole/2004/08/is-it-art.html [wohba.com]
Why choose? (Score:2, Insightful)
I'd suggest that the word 'craft' is the best chosen, because when I see really good code, it's like looking at really good craftmanship.
Programming Is Zen Painting (Score:3, Insightful)
The difference is that a painting is not as easily changed as a computer program. So the program may evolve toward perfection (refactoring) over time, while the painting only has one shot at it. But then, when you consider it, they are all perfect...
Re:ENOUGH IS ENOUGH! (Score:3, Insightful)
I still can't get the scriptmonkeys around here to grasp the notion of structured programming, let alone OO or functional. The state of the art does not evolve as much as the industry likes to pretend it does. Just because they rev the apps every couple years does not mean the whole industry changes.
Re:It's not art (Score:2, Insightful)
As you say, all scientists can find beauty in their field. And isn't recognizing beauty making an aesthetic judgement that suggests there is an artistic element in what's being judged? E.g., the most efficient algorithms may not be the most elegant. (Define "elegance" -- it's a subjective aesthetic judgement, just like beauty. That's not to say that subjectivity necessarily == art, though. But the aesthetic element certainly suggests art.)
Furthermore, is science necessarily mutually exclusive with art? Remember, this art/science dichotomy is a fairly recent invention of western society. Sometime during the Enlightenment, I believe, we started deciding that they were separate things.
I found the whole article a little strange, because the author didn't spend nearly enough time trying to pin down a solid definition of art, which is what the entire thing depends on. I think we all agree on what programming is -- we just don't agree on what art is.
Re:Not a fine art (Score:2, Insightful)
Re:It's engineering (Score:3, Insightful)
Also, engineers have responsibility. I've spoken to high ranking programmers at prestigious silicon valley companies, and one actually said "I could put in code that EATS BABIES and I would never get fired for it. Even if someone went line by line through the code and caught it, I'd never get in trouble for it because we have so many levels that everything has to pass through and be signed off on."
I don't understand that. If I designed some widget that exploded, I would get in trouble. Certified engineers have it even tougher, they can lose their license if they screw up. Engineers have responsiblity after their ship date, programmers don't seem to have that care.
In short, it is not engineering. Its an art. A special kind of art, one that I cannot possibly perform, but art nonetheless.
Misleading Question (Score:3, Insightful)
Re:Drivel (Score:2, Insightful)
Most of us try to achieve artistic code (Score:2, Insightful)
The programmer as an artist, not as a technician (Score:3, Insightful)
Then one day my boss was chewing my ass off for God knows why, and he complained that the problem with programmers is that they are artists and that opens a huge can of worms. We argued about it for a while but he left me convinced that yes, real programmers are artists, not technicians.
When was the last time you read a bit of hacked together code that looked so nasty that it made you smile? Sure, it looked like hell, but it got the job done. You could probably recognize who actually wrote that particular piece of code because eventually the great programmers develop their own particular style.
When was the last time you read a tiny little bit of code, a really small function that did just one lousy little thing, but not only it did the job, but it took you a split second to figure out what the hell the programmer was thinking when he/she wrote it? That's art.
If programming was purely technical, then we would never get into the zone in the middle of the god damn night, or solve a problem while in the can or taking a shower.
More Drivel: (Score:3, Insightful)
Re:It's engineering (Score:3, Insightful)
I don't think building a bridge can be considered "simple" but that's not my point.
Expanding on the bridge / software analogy, a bridge would not be nearly as beautiful to look at if:
1) The load requirement was doubled halfway through the project
2) To pay for #1, you are asked to save money by building fewer support columns (which you've already constructed)
3) 12 months after construction begins, the specs change and you must now include train tracks
4) Near the end of the project: the customer just got new boats, and they won't fit under the bridge, can you make it a drawbridge? We can allow another 2 months for this last-minute addition...
Re:It's engineering (Score:1, Insightful)
So in summary, get off your high horse. If I am not an engineer, then neither are you. Probably the only people who can truely call themselves engineers by your definition are civil engineers with PE licenses.
Art (Score:3, Insightful)
In truth, art today has merged with marketing and advertising. To be an artist today is to be a master of communication, a master networker.
The question is not is programming art but rather can somebody convince you that programming is art.
Re:Not a fine art (Score:2, Insightful)
The instructions in this case are not practical, since there is no practical intent behind them, nor is anything practical accomplished. The CPU, much like a paintbrush, is neither practical nor impractical on its own. It is simply a vessel through which the intentions of the programmer - practical or otherwise - are expressed.
Re:More of a continuum. (Score:4, Insightful)
It's about focus and the amount of care taken. If someone cares about aesthetics, then they tend to make more aesthetic things. If they care about functionality, then they will make things with greater functionality. If they care about robustness, they will make things that are more robust. If they care about speed, they will make things faster. If they care about cost, they will make things more cheaply. Not all of these things can be combined, of course.
Here's an idea - (Score:2, Insightful)
Art is about context, not about materials or even content.
I both program and I've recently graduated with a degree in Painting and Drawing.
Re:No, it's a craft (Score:3, Insightful)
Think about a large engineering project like the Brooklyn Bridge. The lead engineer designed the bridge to be not just functional but beautiful as well. Or consider something like the Guggenheim, in which the architect didn't just build a safe building, he built it in such a way that it would shape the way in which people could view the art it held.
Software development works the same way. You're not just building something functional, you're shaping a user's experience, and creating something that is (hopefully) aesthetically pleasing.
Of course, as I said, some talent is required, and as with most things, 99% of what you see is pure crap. There's one Guggenheim, but there are a million strip malls. But that's life I guess.
Art Is Imagination Followed By Engineering (Score:3, Insightful)
The only thing "artistic" about art is the decision what to be "artistic" about. Everything else is engineering - putting together known quantities of known materials to generate a desired effect.
HOW you put together those materials - say, for least cost to greatest effect - might be imaginative, but it's still engineering in my view.
Any programmer who think he's doing "art" is probably a piss-poor programmer - and probably has never documented a single program in his life.
Which is just about every programmer I've ever known, seen, heard about or read about.
Re:Drivel (Score:3, Insightful)
If people only did that which served a useful purpose, life would be a much poorer thing, I think.
Re:Not a fine art (Score:3, Insightful)
Then you'd be wrong. The Miata is a fugly car, IMO. The Z4 is OK looking, but the Miata was definitely built for women. It is far too small, has no spectacular features, and hasn't changed its basic style (which is certainly basic) since it was introduced, except for the depressed hood and headlight restyling in the 2nd Gens.
It looks like a chopped-up Saturn!