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.

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.

> 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.  Done right,
it is a prescriptive technique for declaring the parameters that
the acts of software creation must comply with.

My two cents,

-- Dossy

-- 
Dossy Shiobara                       mail: dossy / panoptic.com 
Panoptic Computer Network             web: http://www.panoptic.com/ 
  "He realized the fastest way to change is to laugh at your own
    folly -- then you can let go and quickly move on." (p. 70)