I signed up for a free seminar that's being held at a grad school nearby 
where I live.  The title is: "Read My Lips--No New Models!" (or perhaps it 
might be more accurately titled "We don't need no stink'in new software 
development methodologies!") You can read the abstract here:
http://cpd.ogi.edu/class.asp?n=02-SPIN-0513

I suspect it's a reaction against XP, so I figure I'll go and ask some 
pesky questions ;-)

Anyway, one of the points made in the abstract at the website above says:
"# The misguided notion that software is art and hence not amenable to 
discipline"

Now I've seen this assertion many times: 
"Software Engineering is a discipline not an art!" and other varients.

However, I would contend that Software Engineering _is_ an art or a craft 
and that by admitting it we actually dignify the practice instead of 
denigrating it (the folks that say that it's not an art seems to be afraid 
that if the term 'art' is applied to software that it will somehow become 
cheapened).

Why do I say that software creation is an art (or craft)?
1) It's a creative, human endeavor.
2) Each of us brings his/her own personal style to the creation of a piece 
of software.  I attended a ceramics show last weekend where there were 
several exhibitors and demonstrations.  I could definately tell that 
certain of the artists had distinctive styles and I got to the point where 
I could tell who made a particular pot.  It's the same in software - when 
you're working with a team of coders after a while you can tell without 
looking at the creation comments at the top of the file who created the 
code.  I get the idea that the "software is not an art" crowd want us to 
all have the exact same 'style' (theirs, perhaps).

To say that calling something an 'art' means it lacks discipline also 
seems like a mistake.  I recently watched a glass-blower create a glass 
bowl - it took lots of education and discipline, but I would still say 
that it was an artistic creation.  

Now bringing it to Ruby....  It seems to me that Ruby has a certain style 
which is the imprint or signiture that Matz put on the language.  Python 
and Perl have very different styles from each other and from Ruby and 
each represent their creators in distinctive ways.

So, is software creation an art or a discipline (or a science)?  Opinions 
welcome.

Phil