In article <20020512040028.GC25936 / panoptic.com>,
Dossy  <dossy / panoptic.com> wrote:
>On 2002.05.12, Phil Tomson <ptkwt / shell1.aracnet.com> wrote:
>> 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).
>
>Software Engineering is a science.  System Design is an art.
>
>SE is about writing a blueprint, or a recipe, for building a
>system.  There is no art in it -- it is cut and dry.  How
>the blueprint or recipe gets executed or implemented, that's
>art.

That's been the traditional view of software construction: that you have a 
designer who specifies everything to the extent so that lower-paid 
'programmers' can implement.  But some of the newer methodologies 
(developed in response to shortcomings in the traditional method) tend to 
make different assumptions - see:
http://martinfowler.com/articles/newMethodology.html
(a link posted by someone earlier in the thread).

The traditional view says that software construction is just like bridge 
construction.  The agile and XP views say no, it's not: construction is 
what your compiler does.  An excerpt from the link above:
"   * In software: construction is so cheap as to be free
    * In software all the effort is design, and thus requires creative and 
talented people
    * Creative processes are not easily planned, and so predictability may 
well be an impossible target.
    * We should be very wary of the traditional engineering metaphor for 
building software. It's a different kind of activity and requires a 
different process"



>
>I can tell you "a table has a flat horizontal surface and
>three or more supporting legs underneath."  That's not art.
>However, should you take my engineered schematic and go
>and produce a table, unique or not, you produced a work
>of art.
>
>Does this make any sense to you?  Maybe I'm just misguided ...
>
>> Why do I say that software creation is an art (or craft)?
>
>Ah, software _creation_ is NOT Software Engineering.  No software
>gets created as part of the SE process itself.  The SE process
>simply defines what the software should do -- thus, SE defines
>the way the software is to be developed.

Again, this is the very traditional view.  Newer methodologies tend to 
unify design and creation - I personally always suspected that they should 
be more closely connected.

>
>> 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.  
>
>Many 'arts' require significant discipline.  Playing musical
>instruments comes to mind.  Creating software also requires
>extraordinary amounts of discipline if you plan to do it right
>and do it well.  Sadly, so much software is not done right or
>done well and I'm not convinced it's due to lack of discipline,
>but I'm sure that lacking discipline may very well impede one's
>ability to build software either right or well, or both.
>
>> 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.
>
>Sure.  If you don't see higher-order structure and a great amount
>of discipline that went into the creation of these three languages,
>then I'd almost insist that you were insulting the creators of
>these languages.  Creative as they may be, the only reason there
>is more order than chaos is because of discipline.
>
>> So, is software creation an art or a discipline (or a science)?  Opinions 
>> welcome.
>
>Software creation is an art that requires significant discipline.
>
>Software engineering is not an art, it is a science.  

Can't it be both?

Phil