Xref: utzoo comp.unix.wizards:20869 comp.misc:8388 comp.sys.ibm.pc:45644 Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!mcnc!ecsvax.uncecs.edu!dukeac!wolves!ggw From: ggw@wolves.uucp (Gregory G. Woodbury) Newsgroups: comp.unix.wizards,comp.misc,comp.sys.ibm.pc Subject: Re: The *ART* of Computer Programming Summary: need more context Message-ID: <1990Mar3.065257.13674@wolves.uucp> Date: 3 Mar 90 06:52:57 GMT References: <1990Feb26.234217.23251@aucs.uucp> Reply-To: ggw@wolves.UUCP (Gregory G. Woodbury) Followup-To: comp.misc Organization: Wolves Den UNIX BBS Lines: 68 In article <1990Feb26.234217.23251@aucs.uucp> 861087a (Andreas Pikoulas) writes: > From Paul Tom's book "Computer Information Systems" page 169 > > " Not only do organizations standarize programming languages, they also >develop coding styles so that programs written by different programmers >all follow good coding conventions. While SOME consider programming a >"creative activity", a programmer should be as creative as a bricklayer >following a blueprint for building a wall on a house. Creative programming, >like accounting, can only get the user into trouble. " > >Please elaborate on this by e-mail. I plan to send your answers to the > author. Despite the note about e-mail elaboration, I think this really needs to be aired publicly. Here is my response.... There are two main problems with this attitude. 1) It assumes that computer programming is dealing with some exact problem that has exactly one correct solution. 2) It assumes that the bricklayer reading a blueprint for a building wall will have nothing inexact or creative to do. To pick up the 2nd point first. The "average" bricklayer (if such a person exists) may not have to challenge his ingenuity over 90% or so of a strech of wall. But, the particular patterning of bricks around a window or door, especially if the opening is of a non-conventional shape, may require a great deal of ingenuity and problem-solving. To add to the situation, sometimes the architects patterning of brick colors, or even the use of stonework other than the rectangular regularity of brick, may require several hours of thought before the placement of a particular stone, or even in the selection of which stone to put where! I have tried my hand at both bricklaying and stonemasonry (there is a difference!). I enjoyed it (except for climbing ladders) but discovered that I could earn more by sitting inside and programming computers for a living. The author exhibits the usual elitist attitude that the "blue collar" trades do not require creativity or ingenuity. A little bit of "on-the-job" research would show him why a master carpenter or a master stonemason can earn as much or more than a programmer. Now, back to point 1. In the "average" programming situation (if there is such a thing) there are probably "usual and customary" algorithims and procedures that will do what is necessary. But, in certain situations, especially when dealing with a new class of problem, or in implementing a newly invented technique (e.g. a new statistical tool or writing a compiler for a new computer architecture) the situation may require a lot of thought and ingenuity (read creativity) to "do the right thing". To add to the situation, the architects of the system may impose specific coding or documentation standards that may require several hours (or days) of thought in order to determine how to code within the requirements. I suspect that the original quotation, lifted out of its context is badly misrepresenting the authors intention. If he is trying to say that ALL PROGRAMMING is just routine laying down of one brick after another, then he is insulting the profession. On the other hand, if he is (as I suspect) classifying only a certain aspect of programming (i.e. the development of accounting packages) then he may be correct. I would like to have a little more context for this particular quotation. -- Copyright 1990, Gregory G. Woodbury, electronic re-distribution allowed -- Gregory G. Woodbury Sysop/owner Wolves Den UNIX BBS, Durham NC UUCP: ...dukcds!wolves!ggw ...dukeac!wolves!ggw [use the maps!] Domain: ggw@cds.duke.edu ggw@ac.duke.edu ggw%wolves@ac.duke.edu Phone: +1 919 493 1998 (Home) +1 919 684 6126 (Work) [The line eater is a boojum snark! ]