The modern jazz small ensemble is built upon the rhythm section -- piano, bass, and drums.
The easiest parallel to programming is libraries, frameworks and patterns. These are the building blocks upon which we code. A well-designed library makes your work as a programmer easier and more enjoyable in the same way a solid, experienced rhythm section complements a soloist.
— Nick Sieger, Jazzers and Programmers
One important difference between programming and music is that in programming, correctness often supersedes aesthetics. It's not that aesthetics are unimportant, or that there can or should be no joy in programming -- but if your code doesn't work, it doesn't matter how much of a punk fringe rock star you consider yourself.
Color me (what, two nods to my pseudonym in two paragraphs?) uninspired. I doubt improv will pass my test suite. See Dabblers and Blowhards for a deeper debunking of similarly silly comparisons.
Excellent point. Having come from a fine-art background myself I have always been annoyed with these types of comparisons, because they almost always miss the ways in which programming is actually like $something_that_is_not_programming. Especially high level comparisons like this, they always fail once you look at the details. Fact is that programming, like anything you do, can be an aesthetic act if you choose to make it one.
- Stevan
Re:Programming is Like Pudding
jplindstrom on 2008-07-20T15:03:35
Well, maybe the comparison fails when you drill down to details. So be it. They're not the same thing.
But the interesting thing about the comparison is that you keep two thoughts or concepts in your head and then suddenly discover new ideas in one or the other which you didn't think of before.
If that's all you get out of the exercise, that's still plenty.
Re:Programming is Like Pudding
jplindstrom on 2008-07-20T15:19:12
In a way I agree with you. I's annoying when the details don't match and people still keep trying to infer too much from the analogy when some things clearly aren't they same.
It's like the tired, programming-isn't-like-building-a-house/bridge/brick wall analogy, as if these things are completely well known and explored and repeatable whereas software development isn't. Usually stated by programmers who don't know how to do either of these other things.
I once read a thread on Reddit that went down this route, and I just loved it when someone who knew how to build a house responded and demolished the analogy with actual facts. And then someone who knew about bridges did the same. And then someone wrote a long post about how difficult brick laying was.
Actually, streching the analogy a little, you could liken improv to making your test suite test for some unlikely/scary test cases no one in their right mind would think of, in which case it might indeed improve it. Or you might think instead that a perfectly logical and rational mind should come up with evry meaningful teat case in which case I guess the analogy breaksdown completely... your pick
For me though, one of the great joys of having modules on CPAN is having people contact me with questions and learning all the things they do with the tools I built that my limited imagination would never, ever, have came up with. That is very far from the joy you get with music, I guess, I am not a musician myself, but its a great joy nevertheless. Akin to what Stradivarius might have felt, "toutes proportions garde'es". (how come I can't use UTF-8 in my messages BTW?)
Re:improv amd test
chromatic on 2008-07-20T17:26:27
I don't understand why some people vigorously defend the untenable position that programming is art. There can be artistry involved and it is often a creative practice, but what's wrong with considering programming a craft?
Re:improv amd test
Stevan on 2008-07-21T07:19:22
Well if we go with Wilde's idea that "All art is quite useless" which expands to basically say that art exists only to be beautiful so cannot have a use as that would spoil the beauty of it, then all of Acme:: would be art? And everything else a craft?
To be serious though, the problem I have is being able to define "art" and then define "craft" based on that. Art has be defined and redefined over the centuries and will continue to be so and at this point I think Wilde's idea is pretty much completely outdated in the contemporary art scene of today. What is to stop you from using a module that I have written as an act of performance art? Would your using it suddenly nullify my artistic intent? Tis a slippery slope full of lots of slippery bullsh*t, but hey this is art!
- Stevan
Re:improv amd test
chromatic on 2008-07-21T18:19:50
... art exists only to be beautiful ... Did you mean "meaningful"?
... so cannot have a use as that would spoil the beauty of it... More likely there is an intrinsic quality of art beyond any functional considerations. A plain chair is functional. A filigreed throne is also functional, but it contains art. Similarly, you can use a piece of cardboard to shim a wobbly table, or a Botticelli, but that doesn't make the Botticelli not art.
To be serious though, the problem I have is being able to define "art" and then define "craft" based on that.
Right. Don't do that.
There's no strict taxonomic relationship between art and craft. Each can contain the other. I don't want to fall into the philosophical pit of utilitarianism, but sometimes it's useful.
Re:improv amd test
Aristotle on 2008-07-22T01:37:26
Art is what’s supposed to evoke an emotional reaction.
Re:improv amd test
chromatic on 2008-07-31T20:31:32
Trolling is art?
Re:improv amd test
Aristotle on 2008-07-31T21:02:04
Yes! This is quite funny to me as it hadn’t occur to me to think of it that way. But in a sense it clearly is, or at least can be. Most of it is equivalent to a crayon scrawl more than to a Rembrandt, though.
Re:improv amd test
pudge on 2008-07-31T19:50:21
I don't understand why some people vigorously defend the untenable position that programming is art. There can be artistry involved and it is often a creative practice, but what's wrong with considering programming a craft?
I think art is more like a craft than it is like art, personally
... Re:improv amd test
chromatic on 2008-07-31T20:32:36
You're probably right, especially when it comes to really good art. Too many novices believe that natural talent obviates the need to practice their crafts. I certainly did, as a beginning writer.
Re:improv amd test
runrig on 2008-07-21T16:57:02
...meaningful teat case... I feel another analogy coming on...
My personal favorite high-level comparison (which I first heard discussed in depth by Neal Ford) contrasts programming to civil engineering.
In civil engineering (e.g. bridge building), construction costs dramatically outweigh design costs. Civil engineers aren't cheap, but their proportional cost relative to the bridge materials and construction labor are small.
In contrast, the construction steps in software are largely automated: compilation, packaging, making installers, downloading, installing. Your program is just the blueprint. Consequently, software is the engineering field where the design vs. construction cost is most heavily skewed towards design. Since cost of design is usually less predicatible than cost of construction, software development as an engineering disipline is less predictable than other engineering niches.
I think that design-centric quality is what makes software compared to art more often than other engineering fields. Architecture, being more design-focused, often is recognized for its artistic qualities too. Just as software design is much more than pretty GUIs, architecture is much more than pretty buildings.
Re:design vs. construction
chromatic on 2008-07-20T21:11:59
Just as software design is much more than pretty GUIs, architecture is much more than pretty buildings.
Architecture is also a craft though. It doesn't matter how pretty anyone considers the Portland Building or the Stata Center if the buildings don't actually work.
Compare that to The Rite of Spring, which I don't like, but few would claim it doesn't meet the definition of art due to any functional flaws (and what are those anyway, dissonant bassoons?). De gustibus non est disputandum, tamen de laboratum est disputandum. (You can judge Latin on its functional properties, especially when I use it.)
XP and design patterns
mr_bean on 2008-07-24T02:01:23
With the rethinking of the relationship
between design and construction brought about
by radical approaches like XP,...I wonder what the present status of architectural
analogies like those based on Alexander's
Design Patterns is.