From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,1042f393323e22da X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,1042f393323e22da X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,1042f393323e22da X-Google-Attributes: gid1014db,public From: Scott Stanchfield Subject: Re: Software Engineering is not a hoax... Date: 1997/05/27 Message-ID: <338B2118.41C67EA6@metaware.com>#1/1 X-Deja-AN: 244291766 References: <5mc1a2$icf$1@dbs1.sma.ch> Organization: MetaWare Incorporated Newsgroups: comp.lang.c++,comp.lang.c,comp.lang.ada Date: 1997-05-27T00:00:00+00:00 List-Id: Laurent Gasser wrote: > In the domain of codification of thought, computer scientist have made progress. > In my daily work, I sometimes encounter very old Fortran 77 code, not respecting > the principles of structured programming. Once, it took me one hour on a 100 LOC [snip] > > I am pretty sure that in 15 years from now, a programmer looking at code will > immediatly complain if the module is not following the principles of OO or is > not designed as an Abstract Data Type. I'd say this is more akin to "using acceptable grammar" than applying engineering techniques. Think about "Ugh! Me Kronk" versus "Hello, my name is Scott." Did I engineer that sentence? I applied grammatical rules, but I wouldn't say that it was engineered. The problem I have with the notion of Software "Engineering" is when people say software development is just like building cars. That's just a plain bad analogy. Think about car production. Cars do one thing -- transport. Sure, some can be more fun than others, some may be better at towing, some may carry more people, but they are all basically the same. The parts used to make them are basically the same. Car production is basically doing the same thing over and over and over and over. Things get a bit better and specialized sometimes, but it's still building something to do the same task. I've never written more than one program to do exactly the same task (unless I'm rewriting it to improve it.) Each time I sit down to code something the goal is different. This, in turn, implies the combination of parts needed to construct it, and the order in which those parts are put together is different. (These "parts" I refer to are language constructs, known algorithms and simple reusable objects like containers. Nothing too big, or you're getting into doing the same task again.) Sure, we can use common algorithms and objects such as containers and math packages. But the overall product is not something that has been done before, and therefore, there is no proven, repeatable method to "engineer" that work. This leads to my belief that SW development is an art, rather than a science, and is a highly creative field. As in painting, for example, we use common techniques and styles, and we use standard tools. But we're not painting the same picture over and over. We need creative thought to produce the painting we seek. The same is true for programming. Yes, techniques are useful. Yes, some pieces can be reused. (In a painting, I'd say this relates to the "paint" with which the piece is composed -- the reusable parts are small, atomic chunks like algorithms and simple containers.) But unless you're writing the same program over and over, and can have a "cookie cutter" or mold to produce the code, you're not engineering it. You're creating it. And that's not a bad thing. -- Scott -- Scott Stanchfield (The opinions expressed herein are not necessarily those of MetaWare)