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."
Both! (Score:4, Interesting)
Code as art. (Score:3, Interesting)
Now that code, is art. Most code is just craft, but to make a working perl program, that is an ascii-art of a camel, that is True Art..
Art is as Art does (Score:5, Interesting)
That being said, I think there's a certain intrinsic beauty to the way that I indent my subroutines.
On the question of art (Score:1, Interesting)
by only one person. It's
who makes, or wants, art.
Re:Not a fine art (Score:5, Interesting)
>
> "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.
Depends on the code. Depends on the art.
I'd consider every entrant into contests like the IOOOC (or obfuscated-your-language-of-choice), to be art. I'd consider any esoteric computer language (a whole line of 'em including INTERCAL, Brainf*ck, Ook, and so on) to be art for art's sake.
But as for functionality "killing" the artistic side of the equation -- sometimes the most functional things are the most beautiful. Lamborghini, Ferrari, Aston-Martin, Rolls-Royce, Bentley, XB-70 Valkyrie, SR-71 Blackbird, Concorde. Very functional machines, designed to perform very different functions, for very different people. And all very beautiful.
Bill Budge's poetry in named variables (Score:3, Interesting)
But he did a couple of 6502 tutorials in an Apple magazine just before it went bankrupt (Softalk?), and the way he defined variables struck me as exactly like poetry-- he seemed to have meditated on the deep meaning long enough that he knew how to create exactly the right variables, and name them the right names.
"Programming" is not an art, but hacking ... (Score:2, Interesting)
depends on your language (Score:3, Interesting)
I don't want to overstate the point--artistry is found in all forms of programming--but I think it's telling that the advocates of higher-level languages in the interview are more inclined to see programming as art.
It used to be! (Score:2, Interesting)
Then the dot-com thing happened, and nobody differentiates someone with a mathematics or engineering degree and some kid with a "certification". The result? Lousy software for everyone!
That's why I left the field.
When will people realize.. (Score:2, Interesting)
Now, computer science is an immature field, and has a long way to go. That means it has some challenges to go through as it develops. It also has a different front-end than other fields, sure. There are plenty of differences, but the basic challenges are the same in any design field, and writing programs is a design field. You have some requirements, some tools, some limitations, and you have to find the best way to make them all work together. You have a boss that doesn't understand exactly what you are doing. You have a customer that doesn't know what they want. You are trying to do something that has never been done before, but is based on something that has. Welcome to real life in most professions.
Other than that, I agree with you. A good design is a work of art, at least to those skilled enough to see it. Architects seek to make a building practical but beautiful. A mechanical clock can be amazing to watch. A well-written program is like poetry to read.
I think the first goal of any designer is to get the basics working so that they are in a position to work on the beauty of their design. Too often we are put in an awkward position and it's all we can do to make something that works, screw looking good.
Re:It's engineering (Score:5, Interesting)
Consider great works of architecture... certainly, the simple task of building a bridge, or some building can result in the most straight-forward, brute-force application of a solution, but the results would not be as elegant or noteworthy.
Similarly, code can be kludged to hell, lacking any elegance and as a result, impossible to enhance or even maintain... or a software engineer could architect a system that is elegant and even mostly reusable (or even better build such a system out of a large library of code already written).
Unfortunately, the difference is lost amongst probably 80% of the "programmers"
out there, who have more of an attitude of "get 'r done" and "if it ain't broke...". We talk about patterns, algorithms, processes to developing solid applications and systems, but end up dealing with managers or clients who couldn't give a rat's ass about it until a quality audit is announced.
I know a handful of very talented engineers who can design "on the fly" - elegant design work, and as a bonus, they know the engineering side, as well. Put the two together, the SCIENCE of applying basic engineering principles, along with the ART of intuitively understanding the best flow of an application, and you've got solid code.
To put it another way, I've seen guys who know the process side of software engineering inside and out - but couldn't code their way out of a paper bag, and certainly cannot architect a real software system. They know the science, but lack the artistry (i.e the creative thinking).
A computer programmer isn't an artist ... (Score:1, Interesting)
art
1. Human effort to imitate, supplement, alter, or counteract the work of nature.
2. a) The conscious production or arrangement of sounds, colors, forms, movements, or other elements in a manner that affects the sense of beauty, specifically the production of the beautiful in a graphic or plastic medium.
b)The study of these activities.
c)The product of these activities; human works of beauty considered as a group.
3. High quality of conception or execution, as found in works of beauty; aesthetic value.
4. A field or category of art, such as music, ballet, or literature.
5. A nonscientific branch of learning; one of the liberal arts.
6. a)A system of principles and methods employed in the performance of a set of activities: the art of building.
b)A trade or craft that applies such a system of principles and methods: the art of the lexicographer.
7. a) Skill that is attained by study, practice, or observation: the art of the baker; the blacksmith's art.
b) Skill arising from the exercise of intuitive faculties: "Self-criticism is an art not many are qualified to practice" (Joyce Carol Oates).
8. a)arts Artful devices, stratagems, and tricks
b)Artful contrivance; cunning.
9. Printing. Illustrative material.
[/dictionary.com]
Under articles 6&7 you could make an argument that computer programming is 'an art' but this isn't what most people think of when they think of 'art'. Most people think of art as something like:
"A skillful delivery of a creative message through a medium"
Now using that definition you could say that computer programming could be used to create art (as in an interactive art display, fractal art, or Videogames) but for the most part the programming itself isn't the art. An odd way to think about this is to consider a welder; a welder isn't an artist but an artist could be a welder. So you could say that A computer programmer isn't an artist but an artist could be a computer programmer
Re:Not a fine art (Score:2, Interesting)
PERL
The Jackson Pollack programmer: Throws code at the system, trying to see what works.
Windows
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.
Gravy Trader
Re:programming and music (Score:3, Interesting)
Re:Both! (Score:2, Interesting)
From my experience, art, or at least painting/drawing, involves a lot of formula technique than meets the eye. Say, for example, that you're drawing a red object. What happens is: after staring at it for a while, your eye will start to produce an after-image, in the "opposite" colour (a kind of greenish tint, in this case). So the red starts to look less red and more grey. Solution? When drawing, constantly compare the colour of the object. Is it as light/dark as the one next to it? What about compared to the background? Likewise with shading and light. You get shadow at the bottom of the object if the light is shining from the top, but you will also get some reflected light from the surface on which the object is sitting on. The more reflective it is, the brighter the reflected light, and thus the lighter that shadow on the bottom will be.
Looking at the opposite end of the scale, I still remember sitting back after hours of coding looking stuff up, redesigning, rewriting functions, and thinking "Man, this is beautiful!" (For enquiring minds - it was a perl script for parsing multiple/irregular format reports).
P.S. I still haven't put up the site for my latest coding project but here's the art gallery [tomkat.ca]. Hmm... wonder if enough people will care that it will get /.'ed.
Re:It's engineering (Score:3, Interesting)
One of the core differences that makes it so hard to compare software engineering with other engineering disciplines (particularly bridge building and building building) is that software is fundamentally more malleable.
If you build a condominium, then decide you want the first floor to be six feet taller, it is exceedingly expensive to change it. Furthermore it is obvious to the layman why it is expensive to change it, and why trying to bodge in a "quick fix" will result in an unstable building.
Contrast this with software. Well designed software can often have the first floor wiped out and replaced in a matter of hours or days, without having any adverse effects in the rest of the system - but not always. And it is rarely obvious to the layman why something is expensive to modify (I just want one more button that does account settlement - why is that so hard?). Heck, problem code is often a surprise to those who are well versed in the field.
This is particularly common with software that is rushed. You've rushed out a system that is krufty and does not lend itself to modification, and it went so quickly that you've established unrealistic expectations in the customer. The layman asks, "Why, if it only took two weeks to build the entire building, will it take another three weeks to add six feet to the first floor?" It is difficult then to explain to the customer that in your rush to get the first release out, you only used half the required number of studs, and they won't take the load of an additional six feet.
Re:It's engineering (Score:2, Interesting)
SCOTUS ruling on the definition of Art (Score:3, Interesting)
Constantin Brancusi imported his famous metal sculpture "Bird in Flight" and was assessed a 40% tariff by Customs, categorizing it as "Machined metal implements, Kitchen Utensils, and Hospital Supplies" rather than the 0% tariff applied to art objects. Brancusi sued the Treasury Department to recover the tariff.
Eventually the Supreme Court agreed with Brancusi that the object was art rather than a mere machined metal object. The core definition of an art object is: something made with the express purpose of being an art object, made by someone recognized as an artist by other artists.
Well, that is a fairly circular definition, in part, but it does clearly lay out the rules. Artists (those people society generally recognizes as artists) get to define art. The corollary: programmers do not get to define their work as art.
Howard Rourke programmer: (Score:3, Interesting)
Re:Not a fine art (Score:3, Interesting)
Now that is not true, just as many Fashion Designers design cloths that have no practical value outside of being "showcased", I as a programmer can write a program that has no practical purpose outside of showing others a particularly nifty bit of code.
Re:Not a fine art (Score:5, Interesting)
Therefore, I would conclude that programming per se is not art, but that it very well can be - if intended. Consider the IOCCC [ioccc.org]. While all competition entries do perform some kind of practical function, the main purpose of each one is to be elegant, beautiful, ingenious etc.; properties which we usually associate with art.[2]
[1] Mukarovsky, Jan, "Aesthetic Function, Norm, and Value as Social Facts.", 1936.
[2] Note to self: I need to learn english grammar and spelling.
Programming and art meet.. (Score:2, Interesting)
I just found out about this today from Boingboing.
Code snippets, recursive loops, and simple drawing commands turn a script into a remarkably beautiful rendering. I have been messing with it for hours and have only just gotten started. There is MUCH you can do with this.
Re:It's engineering (Score:2, Interesting)
Re:Drivel (Score:3, Interesting)
Got myself a Bachelor of Business Computing (they've since renamed it...) from a local school. It covered some Business Stuff, OO, Design Patterns, Project Management, Usability, Extreme Programming, and similar. Had a couple of pure language classes too. Had I done Comp Sci, I think I'd be a more l33t coder, but this set me up to be far more useful in the Real World. We'll just have to wait for the established Universities to make this kind of move.
Dance and art (Score:4, Interesting)
Another example is performance art. None of it has practical value, it's not craft, nor is most of it aesthetically pleasing to the eyes.
I won't speak of all performance arts, just Dance, but it can have a practical value. For both the dancer and for the audience. Years ago I was an amateur dancer, having taken some dance classes in college, danced in different dances, and worked on other dance performances. Several years ago I had a bad accident and the first thing I thought of for physical therapy was dance, so I talked with a friend who taught dance including the ones I took and she recommended I take ballet saying it would help with my coordination and endurance. As it was I didn't have the endurance to take the class. The last tyme I went to class, as usual, I stayed there after ballet and watched the Jazz class and I realized that while I could recall the steps for Jazz, I couldn't recall them for ballet, there would of been no way I would of had the energy for jazz. As for watching, like myself I've known others who feel so much better and/or motivated after watching a dance performance.
And no I wasn't an art or dance major, my major was computer engineering.
FalconProgramming is Art. (Score:2, Interesting)
construction work. (Score:2, Interesting)
i'm a warehouse-builder, now. i consider it quite on a par with construction work.
Definition of Art (Score:2, Interesting)
Re:Not a fine art (Score:3, Interesting)
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.
Well, if I take a piece of wood, place it on 4 other pieces of wood and call it a table, is that art? However if I select a nice big tree and carve an ornate table out of it, yes I can see that as art.
Similarly, if I design a block of square flats without much care for aesthetic appeal, I don't consider that art. But I would class the design of the Sydney Opera House as art.
Art is very subjective. Someone (can't remember who) placed a toilet behind one way mirrors in the middle of a European city and called that art. Not my cup of tea, but again, it's all subjective.
I personally believe that art is an attempt to convey a personal feeling and/or message (no, not email or popup errors
Shitdrummer.
Re:It's engineering (Score:2, Interesting)
while...
[The phrase "software engineering" above is really in angle brackets, but I've not figured out how to include literal angle brackets here]
In high risk applications (for example, most structural engineering, avionics software, and some medical software), it is appropriate to do more analysis than in low risk applications where the impact of failure is minimal (and, at worst, likely only financial). This is true when designing both software and, for example, structures. However, it is the nature of software that the cost of failure is low in most cases while in structural engineering, the opposite is true - I would assume that mechanical engineering falls between the two. Just as it would be inappropriate for a structural engineer who is designing a fence to contain a domestic canine to spend twelve person months analyzing the soil, wind loads, native fungi, and dog body momentum to design a fence that can be "proved" to last fifteen years without repair (assuming that is the requirement), it would be inappropriate for a software engineer developing a specialized word processor to spend a similar amount of time to prove that there would be no gui-poo left over in any situation. One of the most important parts of all engineering is making appropriate cost/benefit tradeoffs - the ultimate goal is to produce something, not to analyze it forever. You don't indicate what sort of mechanical engineering you do, but my experience with mechanical engineering jobs is that the engineer is often expected to make professional, non mathematical, judgments about what needs to be analyzed to what degree.
Regarding the assertion "I'm sorry, but if you don't analyze your work to prove that it works, you don't get to be an engineer."... Actually, most of the analysis done by structural engineers, and I suspect others, proves nothing about how the resulting product will perform. Most of this work is based on "givens" that the engineer assumes (such as elasticity or strength of a material) and models of the real world that are not completely accurate. As well, think about it, when was the last time you saw a mathematical proof in a mechanical design - mostly the academics measure, evaluate, and build models that "engineers" then crank through to make sure that this walkway won't collapse or this shaft won't shear under these loads. Software development, still in its relative infancy, lacks most of these models. My understanding is that models utilized in the design the Tacoma Narrows suspension bridge that collapsed in 1940 were lacking sufficient modeling of dynamics - yet surely you would consider those who designed the bridge "engineers" even though turning the crank on established practices (rather than proving that the bridge would "work") resulted in a failure?
It is patently untrue that, in general, software engineers are not accountable for their work. Maybe this is true in some companies or environments, but I've personally gotten rid of software engineers for poor quality work and I've seen many others take the plunge as well - including for a single error which cost a customer a lot of money due to a wrong answer (no injury or loss of life was involved!). I can also assure you that it is common for software engineers to retain significant responsibility for the product after it releases. First, they have
Will inspired programming be recognised? (Score:2, Interesting)
As a musician, I deal with lots of music from hundreds of years ago, and the best music often takes many years to reach its proper place in public opinion. The art of programming is relatively young, and only pioneering conceptual giants like Babbage (Lovelace?) and Turing spring to my mind as 'great' programmers (though I have never studied computer science).
For example, it's not obvious from a quick search whether any one person was instrumental in conceiving the multi-threaded Apollo Guidance Computer [abc.net.au]. Unfortunately this is probably the most glamourous computer built in the 1960s, and I fear the rapid pace of tecnological change will keep the art of programming focussed only on the present, relegating both inspired and dull programming to obscurity before proper judgements can be made.
Author must be a really bad tester ... (Score:2, Interesting)
In order for software to be correct it must run. Running involves being mathematically correct for the target platform. i.e., sequence, size, and timing are all correct.
Artists don't rework their art based on critique, i.e., peer review.
Is CS art equal to code bloat? A wheel is a wheel; strengthening the wheel usually isn't considered art, but decorating the wheel is considered art. Non-functional decoration of software is code bloat.