in reply to Re: Re: Programming Versus Engineering
in thread (OT) Programming as a craft

Let me be specific: I believe that the source code is the design. Compiling is the manufacturing. Engineering is, what, measuring the tensile strength of a stable quicksort algorithm?

I think it is a serious mistake to equate code with design. Granted, an agile methodology intermixes design and coding in an iterative and mutually informing process, and the final code (and documentation) may be the only tangible artifact produced, but that still does not mean the code *is* the design.

As for engineering, yes there certainly is engineering in software development, running the gamut from the ad-hoc or experiential engineering that any builder / tinker / craftsman etc might display, to algorithm analysis, to the design of language features that increase assertions of correctness (within particular domains of correctness).

  • Comment on Re: Re: Re: Programming Versus Engineering

Replies are listed 'Best First'.
Re: Re: Re: Re: Programming Versus Engineering
by chromatic (Archbishop) on Dec 16, 2003 at 19:22 UTC
    I think it is a serious mistake to equate code with design.

    Why?

      The code is the product, not the design. It is rather easy to think of code as a design or blueprint for a compiler, but a compiler (or interpreter) doesn't *build* a software product from a blueprint, it merely translates it a software product (the source code) from a human readable/executable representation into a machine readable/executable representation. Machine code is still just code after all, there is nothing more *product* like about it above and beyond the source code it was compiled from.

        The code is the product, not the design.

        Give my Dad the source code to Word and he won't be happy. Give him a running program and he will be (at least, as happy as anybody can be with a copy of Word ;-) Source code is not a product. A running program is. I think this is the distinction that chromatic is trying to draw (hopefully not putting words into his mouth :-).

        I think Jack Reeves was the first person make this analogy, and there's a nice article from the C++ Journal for those who are interested.