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)