Newsgroups: comp.software-eng Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!ispd-newsserver!nichols From: nichols@ssd.kodak.com (Tim Nichols (37894)) Subject: Art vs. Engineering Message-ID: <1991May6.165902.2116@ssd.kodak.com> Originator: nichols@windom Sender: news@ssd.kodak.com Organization: Eastman Kodak Distribution: usa Date: Mon, 6 May 91 16:59:02 GMT I have been interested and occasionaly amused at the blather posted recently about whether or not software can be engineered. Certainly it _can_ be engineered; meatloaf _can_ be engineered, but it is subjected to engineering only slightly less often than software {:-)}. Engineering as a discipline refers to a rigorous process used to manage the complexity of a solution to a given problem domain. I recently built a patio beside my house. While a great deal of artistry and construction effort went into it, there was almost no engineering effort at all. The problem domain was not sufficiently complex to warrent engineering. I was able to hold the entirety of the problem and the intended solution in my brain at one time. So it is with software. Historically, software solutions were applied to problems of relatively small complexity. The common thread of successful software projects was that the entirety of the program under development was held in the brain of one or two key individuals. Therefore, these projects required very little engineering. Today we are faced with ever increasing complexity in the software systems we build. We require abstractions, models, protocols, standard components and interfaces, etc. in order to manage that complexity. Whether conciously or not, we are introducing and defining the discipline of engineering software as we go. It's a matter of survival. Art and Engineering are the endpoints of a continuum. The question is not whether building software is an art or an engineering discipline. It is ultimately both. The problem is that at present the engineering half of the software continuum is vaporware. However, it is through the work of the engineer "wanna-be"s that the continuum will be defined. Once the continuum is defined, will all of the software artisans be taken out and shot? Of course not. There is plenty of room for all the traditional role players we find in other disciplines today. Software Scientists will fill the artisans role by continually pushing the envelope. They will be the technology innovators. Software Engineers will apply the state-of-the-art technology to products and processes with precision and quality. Software Technicians will be the hands-on support; the programmers. The highly skilled work horses who prototype and build the dreams and designs of the scientists and engineers. I see no reason to expect that the evolution of the discipline of software will differ markedly from the evolution of other technological disciplines. To cling to this notion of software being somehow different from its sibling fields is sophistry. It is a vanity unbecoming of professionals. And now, if you'll excuse me, I'll just step into something a little less flammable -- Tim Nichols Eastman Kodak Company nichols@ssd.kodak.com Rochester, New York "Opinions are my own, and do not reflect those of Kodak or its management"