PDA

View Full Version : Can software programming be "art"?


yosemite
09-20-2003, 11:55 PM
Simple question, actually. This topic was brought up in a different thread, and I was urged to start a new thread asking about it. So here goes.

I'm not a software programmer so I have no first-hand knowledge of what all goes into it.

Do you think that software programming is an "art," in the same way that music, writing and painting is an "art"? Can it be as "artistic" as a Van Gogh painting, a symphony by Mahler, or a poem by Sylvia Plath? My hunch is that very little (if any) programming is similar to a Van Gogh painting on an artistic level. However, I have never done any programming. I'd like to hear from those who do, or from those who have more knowledge than I do about the subject.

I'm curious to know what others think of this.

Bryan Ekers
09-21-2003, 12:07 AM
I've always thought it had the potential for art (or at least elegance) when your program uses some novel approach to solve a problem in about one-fiftieth the time your computer instructor expected.

yosemite
09-21-2003, 12:15 AM
That sounds pretty cool. And definitely inventive and creative.

I believe that software design can be creative, but I am curious if any software programmers feel the deep personal connection to their programming that many artists feel towards their artwork. (And musicians feel towards their music, poets and writers feel towards their writing, etc.) Some art is full of the emotion of the artist; each brush stroke is a unique physical expression of the way the artist feels. And same with color, composition, and symbolism, layers of meaning, yadda yadda yadda with the artsy-fartsy stuff. The subject matter is personal; the way they express themselves (either visually, musically or with words) is telling their very personal story in their own unique way.

Can software programming do this too?

TJdude825
09-21-2003, 12:47 AM
The thread title immediately reminded me of "Hackers and Painters (http://www.paulgraham.com/hp.html)," an article by Paul Graham: Hacking and painting have a lot in common. In fact, of all the different types of people I've known, hackers and painters are among the most alike. What hackers and painters have in common is that they're both makers.

He doesn't argue that writing programs is art, just that it's a lot more like an art than it is like a science.

JThunder
09-21-2003, 12:48 AM
I most certainly do. There's something about a well-crafted, well-designed, well-written piece of software that sings out in beauty. I feel the same way about a well-designed circuit or mechanism.

Mind you, I'm not just talking about whether the danged thing works or not. I'm talking about whether the design is elegant, in a way that transcends its mere adequacy to a task.

Zenster
09-21-2003, 12:48 AM
To me, art and elegance are largely identical. The ability to nest command loop structures and format display output into readily assimilated information is much the same as art. Both require that the originator develop a concise and unambiguous representation of how certain perceptions or impressions shall be captured and portrayed. A good painting or performance seem to demand much of the same.

Elegantly encoded processing instructions embody much (if not all) of what art stands for. I view craft as a direct and inseperable offshoot of art. Therefore, programming indeed constitutes art and in many ways surpasses much of the dreck that passes for it these days.

yosemite
09-21-2003, 12:54 AM
OK, this is very enlightening, but I also want to know if there is a deep emotion--a personal expression that is present in the creative of software. To re-quote myself:Some art is full of the emotion of the artist; each brush stroke is a unique physical expression of the way the artist feels. And same with color, composition, and symbolism, layers of meaning, yadda yadda yadda with the artsy-fartsy stuff. The subject matter is personal; the way they express themselves (either visually, musically or with words) is telling their very personal story in their own unique way.
I understand that there are different kinds of art. There's the "elegant design" kind of art. There's the "creative craftsmanship" kind of art. (I do a lot of pottery that could fit into that category.) I never doubted that software programming was "creative," I just wanted to know if it could be deeply personal and emotional.

What I'm talking about is the gut-wrenching-my-heart-on-my-sleeve and every-paint-stroke-has-my-blood-in-it kind of art. The really personal stuff. The stuff that has symbolism; tells a personal story in a personal way. Does any software programming fit that category?

Achernar
09-21-2003, 01:00 AM
I don't think that programming as an art form has anywhere near the breadth of expression as any of the art forms listed in the OP. How the heck can you represent sadness with a program?

I agree that elegance is aesthetic, though. I consider programming to be as artistic as structural engineering, and less so than out-and-out architecture.

Spiny Norman
09-21-2003, 01:16 AM
Back when dinosaurs roamed the Earth, I used to write code for a living. And yes, it can approach art, but it rarely does. There are a few demi-gods out there who have developed some amazing algorithms (Dijkstra's Shortest-Path algorithm brought tears to my eyes - it's an exquisitely beautiful piece of thinking).

Truly great programmers can aspire to be artists perhaps a few times in their lives. Merely very good programmers are more like master artisans in my mind - they craft well-written, clear, concise, precise, efficient, reusable code. Sometimes they get to make really interesting bits of code with all sorts of spiffy algorithms, but even the best of programmers find him/herself spending many hours making "bread-and-butter" code, the simple but important stuff that strings the nifty bits together.

And programming resembles art (or craftsmanship) in that you very often struggle with expressing a more or less clear vision using an imperfect medium - i.e., the programming environment constrains your creativity.

Robot Arm
09-21-2003, 01:24 AM
I think Achernar has it about right. A computer program can be a work of art in the same way as a suspension bridge or an Eames chair, and probably harder to appreciate. I don't write programs as an emotional outlet, but I've written some that I am proud of.

For an interesting take on this very subject, read The Story of Mel (http://www.jargon.net/jargonfile/t/TheStoryofMel.html).

Now, will a computer program ever be recognized and enshrined for its design? I've been to the Cooper-Hewitt Museum in New York City, and the Museum of Modern Art had (probably still has) a section on industrial design. I'm sure that the iMac, at least the case, monitor and keyboard, would qualify for display in either of those places. Is there any computer program whose interface and usability (not its underlying code) reaches that level of style and elegance?

rowrrbazzle
09-21-2003, 01:52 AM
Here's my perspective as a business applications programmer.

The programming I do is as much art as the graphics for an advertisement are art. For me, personal expression or interpretation really don't enter into it. The primary purpose of most programming, unlike art, is practical and/or commercial, and good programmers generally try to program as efficiently as possible without being unnecessarily obscure (to make maintenance easier). IIRC, Donald Knuth has said programming is more of a craft (even though he published a series of books titled "The Art of Computer Programming" which were basically a collection of techniques). I'm perfectly satisfied to think of myself as a craftsman rather than an artist.

I suppose some might say there is a kind of "art" to finding the balance between function, efficiency, and clarity.

In my line of work just plain good programming can be hard to find, so when I do good work I get a great feeling of accomplishment. Most of the time I'm too busy just trying to get the freaking program to work to think about anything else! :) In fact, problems tend to occur more when you start thinking about some unusual technique rather than getting the job done.

Finally, FWIW, the computer scientist Edsger Dijkstra said "Elegance in programming isn't a luxury - it's a necessity."

yosemite
09-21-2003, 02:11 AM
Wow. Thanks everyone. This has been very enlightening.

I guess I can sort of relate (a little--just a little!) to the differences between the different kinds of "art" because of my pottery.

Pottery is, (in my personal view) often a "craft." (But some of it can be very arty--I'll get to that later.) A lot of the pottery I have done is throwing on the potter's wheel. Now, there's a certain amount of "talent" or "aptitude" that goes into throwing, but mostly it's practice and technical skill. Later on, you can get more creative with how functional you want the pottery to be. How round should the bowl be, how thick should the lip of the mug be, how subtle should the curve of the handle be. You also choose which kind of glaze to use, to be attractive but also practical (not going to chip off, no lead in the glaze, etc.). All this stuff was very creative and fun for me to do, but also practical.

I've done pottery that was "creative" and I was very proud of it, but it wasn't the same kind of pottery that I sometimes did--the "fine art" pottery. This usually involved me painting with glazes on a plate, mug or bowl. The "painting" could be of a very evocative or emotional subject. This, to me, was more than a "craft." Throwing on the wheel and making a nice bowl was more of a "craft."

A lot of friends of mine did pottery that were highly decorated and embelished. A lot of it was more like scupture than just "pottery." One guy did a whole series of plates expressing his feelings about the Catholic Church (guaranteed to make any nun turn red in the face). Another lady did a piece that expressed her sadness that she would never have any children. Very, very emotional subjects, and very personal too.

I think there are, as some of you have mentioned, different kinds of "art." The "craftmanship/creative" kind, and then the emotional personal story kind of art. I've done both, and they both are edifying in their own way.

Horseflesh
09-21-2003, 02:19 AM
The only type of software I can think of that would come close to the OP would be computer games. I know there are some game makers out there who put their heart and soul into a game and it very much reflects who they are. Some recent examples I can think of are American McGee's (real name, honest!) Alice and Peter Molyneaux's Black & White. The finished pieces can evoke a whole range of emotions if the proper steps to lead a user to suspend belief (and keep it that way) are taken.

yosemite
09-21-2003, 02:28 AM
Yeah, Horseflesh, I was thinking of that. That probably is the closest to what I am describing. But doesn't that also require a collaboration between artists and programmers? (I'm not sure what goes into game design and programming.)

Horseflesh
09-21-2003, 02:46 AM
Yeah, but I've played a lot of games that looked fantastic and played like crap. The two examples I gave were instances where the lead designer was able to bring an entire team of people around to their vision and produce exactly what they had in mind. Not a small achievement IMO.

As far as the collaboration goes, well, do you consider the Statue of Liberty a work of art? I'll bet more than one person worked on building it but it was still Bartholdi's vision. You might also consider that an orchestral piece is a collaboration between the composer, the conductor, the musicians, and the instrument makers. All of them together produce a single piece of art.

yosemite
09-21-2003, 02:51 AM
Horseflesh, yes, collaborative work can be art! I have collaborated with my sister and other artists from time to time.

An interesting thing, though--I painted on a friend's pottery (he could throw bigger pieces than I could). I did the painting, he did the pottery. Now, I can't speak for him and how he feels about his thrown pottery, but as I mentioned before, I consider my thrown work to be more "craft," and the work that is painted up (depicting some subject matter that is emotional or tells a story) to be more "arty."

An interesting, interesting thing, collaboration.

Tusculan
09-21-2003, 02:55 AM
Interesting question. I'm undecided.

On the one hand, the craftsmanship of good code is a strong indicator that it may get to be an art.

On the other hand, what is lacking is the basic mass appeal that all arts AFAIK used to have. An art only comes into existence because it is accessible to large groups of people. Later on it may get more closed (see modern art). Code, however, is something that most non-programmers are hardly aware exists.

Tusculan
09-21-2003, 03:01 AM
I swear those five posts before mine weren't there when I typed mine up. Hey, I take my time to think!

If we're talking about the output, like in computer games, I wholeheartedly agree with Horseflesh that computer games can be art. Alice is a good example, it is the only commercial computer game I've played that evoked sadness or sympathy with me.

Within Interactive Fiction this is actually more common. IF is classic text adventuring gone open source: there is a core of avid IF fans who are mosely aspiring writers as well and make some very good adventure games. Photopia for one is a very moving tale, although less adventury and more like a story.

Horseflesh
09-21-2003, 03:10 AM
The reason it's hard to compare software programmers to your classic "starving artist" is that programs are rarely created as a form of self expression. Games are sometimes the exception as I noted above. I don't believe I've ever sat down at a computer and thought to myself, "Gosh, I'm feeling melancholy. I really need to express my feelings in VB" and proceed to bang away at the keyboard.


Dim strHorseflesh as Variant

Do Until strHorseflesh = "Satisfied"
strHorseflesh = "Melancholy"
strHorseflesh = "Angst-ridden"
strHorseflesh = "Misunderstood"
Loop


:D

AmbushBug
09-21-2003, 03:12 AM
Originally posted by yosemitebabe
Yeah, Horseflesh, I was thinking of that. That probably is the closest to what I am describing. But doesn't that also require a collaboration between artists and programmers? (I'm not sure what goes into game design and programming.)

Perhaps I can speak to this, somewhat.

I've been a programmer of one sort or another since '82, and I've thought for a while that programming is, for me, more an art than a craft. I believe also, that there are some accountants out there (particularly the income tax preparation kind) who believe that aspects of what they do are also an art.

Some few years ago, I was employed in programming games, with separate departments for game design and graphics. As the software person, I usually received the projects as the third stop of five - design, graphics, engineering, testing, release. It was my station which bore the weight of responsibility - if game design got some math wrong, I'm expected to find it before testing, and the weight of blame is strongest on me. If the graphics suck, I'm expected to notice this and bluster graphics into fixing it.

I hated waiting for game design to update a broken specification, or graphics to fabricate something silly. Often I did their jobs for them, in fact - the weight was on me, and while there was no overt competition in projects between programmers, my products somehow got released ahead of schedule, with very few "rebuild spins" against testing, when compared with those projects of my peers. So I made a change, showed it to the designer, and if he liked it he added it to the spec. I fixed a mistake on a graphic, and handed it to the artist to check in as a fix - then he didn't have to take two days to fit my request into a schedule-break from his major projects to resize an image. I prototyped a new game off-schedule in advance of any specification at all, and a large percentage of my interface ideas somehow found their way into the specification. If I found an "issue" in one of my products which had been released to testing, I entered the bug into the bug-tracker software myself, so that I could have been sure that the testers would hit it doubly hard when the next build spun to them.

Sometimes I needed to rely on decisions from game design or new art from graphics - things I could not do for myself - and they weren't doing their jobs. Intra-company email is better than written requests, because the IT department backed up every letter, every complaint, which passed through the company email server -forever-. And it was easy to cc: the VP, if days and weeks of reminder emails and requests got ignored.

The downside was that, with any mention any of my forays of interest into design and graphics in an engineering team meeting, all my peers would complain, seemingly worried they'd be asked to debase themselves into straying into graphics, or design. And I was thought of as "not a team player" because I refused to insulate and take no interest in what were ostensibly other people's job functions.

I believed they had lost sight of the goals - not to "do the job", but rather to "release successful product".

I had inordinate pride in my products. Still do. I believe I am an artist. Will I cut off one of my ears one day in madness? Time will tell.

yosemite
09-21-2003, 03:20 AM
Horseflesh wrote:

The reason it's hard to compare software programmers to your classic "starving artist" is that programs are rarely created as a form of self expression.Yeah, that's kind of what I was thinking. But you are right; I think that some games may come closest to being similar to the angst-ridden emotion-laden heart-rending artsy-fartsy "starving artist" kinds of things I'm talking about. But I don't know if they can quite compare, (since that "personal expression/my heart on my sleeve/my blood in the paint" element probably isn't there. Well, most likely isn't there).

And thanks for sharing your expressive code! Man! That brought a tear to my eye!

AmbushBug, that is very interesting, all the stuff you shared. And please. Don't cut off any ears. It's been done. :D

Heart On My Sleeve
09-21-2003, 01:28 PM
To me, programming is like commissioned art. The client gives you a vague idea of what they want, you develop something, then they keep asking you to tweak it, then you bang your head against the wall, and finally by the time you want to kill each other, you say "Take it or leave it" and they say, "Fine".

I mostly dislike programming, I'm not a whiz kid at it, and yet people keep giving me money to do it. What am I supposed to do? (P.S., I AM moving towards another way to make money)

So my opinion is that while it allows you to be a creative problem solver, to me, it involves none of the emotion (business programming, that is) that playing music involves. There's some satisfaction when a client likes the work, and the program does what you want it to, but there's too much banging of the head against the wall for me, and having to please other people for it to be like art.

Heart On My Sleeve
09-21-2003, 01:33 PM
To me, programming is like commissioned art. The client gives you a vague idea of what they want, you develop something, then they keep asking you to tweak it, then you bang your head against the wall, and finally by the time you want to kill each other, you say "Take it or leave it" and they say, "Fine".

I mostly dislike programming, I'm not a whiz kid at it, and yet people keep giving me money to do it. What am I supposed to do? (P.S., I AM moving towards another way to make money)

So my opinion is that while it allows you to be a creative problem solver, to me, it involves none of the emotion (business programming, that is) that playing music involves. There's some satisfaction when a client likes the work, and the program does what you want it to, but there's too much banging of the head against the wall for me, and having to please other people for it to be like art.

umop ap!sdn
09-22-2003, 02:26 AM
I also agree with Achernar. Personally, I have never written any Van Gogh code (although I've written a few thousand lines of Picasso in my time :D) and have never thought of programming as a way to express emotion. There's a task I want done, I write a program for it.

But then again I've also never been moved by a poem, or by song lyrics (by a melody of course, but never a lyric) so some people might disagree with me.

Ranchoth
09-22-2003, 02:42 AM
It all depends on your definition of "art"...some people, myself included, can see inherent beauty in software code or a turbine just as much as in a painting or a sunset.


Ranchoth
(The people who can't see beauty in technology are called, affectionately, "Troglodytic phillistine luddites who should be shackled to an oar," by my people. :D ;) )

ultrafilter
09-22-2003, 07:16 AM
Not only is programming an art form, but it's the only art form capable of fighting back. :D

jinty
09-22-2003, 07:35 AM
I like what ultrafilter said. The only time sculptures crash is when they fall off the pedestal.

I'll second the "it can be art" motion. My day job is business programming (16 years and counting) and, while it can be satisfying to see a project successfully completed, it definitely feels like artisanship rather than artistry.
In my spare time, I'm writing a computer game. My heart and soul go into it, and it feels like artistry to me. However, my 16+ years of commercial experience also influence it: I regard these the way I believe a painter would regard his/her draughtsmanship - necessary, but not sufficient to create art.

(A BBC radio programme 'discussed' this issue a few months ago. They had a nerdish gamer who claimed that it must be art because something-or-other about the number of polygons drawn per second. Huh? In the blue corner was Brian Sewell, notoriously snobbish London art critic. He claimed he'd once played some ghastly video game at a nephew's house, and it gave him the most awful headache, so it couldn't be art. A very amusing debate, but hardly a meeting of minds)

Balduran
09-22-2003, 10:19 AM
I looked at the bookshelf of one of my computer buddies. The two books he had side by side: "The Art of Programming" and "The Science of Debugging".

zoid
09-22-2003, 10:33 AM
I definitely think it can be art.

Think of it this way, every time someone puts a pen to paper it isn't necessarily art. Most often it's the use of a tool to accomplish a task, say writing a memo or signing a check. Every once in a while though you get a beautiful sketch.

Programming is the same way. Most of it is purely utilitarian, but every once in a while you get something which is a work of beauty.

I think the problem is that to the general public it’s just not accessible. It’s very difficult for the majority of people to see the beauty in a piece of code. If you’ve never done it you really have a hard time appreciating it.

Chronos
09-22-2003, 10:34 AM
My hunch is that very little (if any) programming is similar to a Van Gogh painting on an artistic level.But then, very little painting is similar to van Gogh, either. It's Sturgeon's Law, all over again.

Now, certainly, there is some programming (perhaps even the majority of it) that isn't art. But then, there's photography that isn't art, too. But some programming most certainly is art. Look at Google, for instance: There's some mighty artistic programming going on behind the scenes, there. And you don't need to be a programmer to appreciate it, either. I don't have access to any of the Google source code, but I'm still frequently amazed by how exactly it understands what I'm looking for. It's sort of a reverse art, I suppose: Most art is notable for how well it speaks to its audience, whereas Google is notable for how well it listens.

And speaking as a programmer, creating code causes much the same emotion in me as creating a woodcarving or a Halloween costume or a Christmas ornament. I'm making something, quite possibly something that's never been made before, at least not quite in that way.

MindWanderer
09-22-2003, 10:35 AM
I think there can be creative programming, mainly because its still a language even if its a computer language. But programming is heavily business oriented these days, which is somewhat sad. Everyone working on all those business databases day after day.

As some sillier ideas, people have written programs that have the function of reproducing their exact source code.

There are also programs like Eliza, Eliza pretended to be a psychologist by using some tricks and questioning a lot of what the user typed.

Futile Gesture
09-22-2003, 11:04 AM
Programming is art. If you don't think so then you don't care enough about your code.

Anything that can be programmed can be done more than one way. That alone means there's always going to be a more ugly way, or a more beautiful way. There more complicated the task, the more beautiful (or ugly) it can become.

MindWanderer
09-22-2003, 11:26 AM
If you are really patient, you can even do silly things like this in code:

Not there is any point to this example.

class haiku {
public static HaikuPoem
poem ; }

If you read that out its a haiku

class haiku left curly
public static HaikuPoem
poem semicolon right curly

Mr2001
09-22-2003, 07:00 PM
Horseflesh: Using a Variant to hold a simple string value is quite an artistic way to comment on the shift from the tight, hand-optimized, performance-focused code of the 70s to the abstract, machine-optimized, ease-of-programming-focused code of the 90s and today.

What will the future hold? Your next statement suggests an "infinite loop" of code bloat. There's an implication that we can escape from the loop someday, although it seems impossible from this vantage point - perhaps some other process will intervene, change our values right before our eyes, and break the cycle.

A thought-provoking presentation of the past and future of programming, expressed in only six lines. Kudos! ;)

Horseflesh
09-23-2003, 12:12 AM
Hey, somebody finally got it!

Yes, that was my intent in the code example believe it or not. I purposely used Variant to suggest that things might not always be this way (a simple string). The supposed infinite loop was another way of saying "if I let this go long enough, some random bits may eventually creep in and finally set the variable (me) to Satisfied." Or I can just Ctrl+Break and get on with my life.