software engineering metaphor

mr_bean on 2007-07-02T03:31:15

Here's a guy saying software engineering is not engineering and getting Steve McConnell's disagreement.

If developing software is also engineering, where does it stop? Only if we can say what is and is not engineering, can we say whether programmers are engineers or not.

Perhaps it is a metaphor. Then the criterion is all in the mind.


Software and engineering: a non-sequitur

Aristotle on 2007-07-02T11:00:58

Software is information, not material. Good code is code where all meaningful repetition is abstracted away and all of its parts as different from each other as possible.

Engineering is about making processes dependable and repeatable while labouring under the constraints of a reality of physical laws.

I fail to see what applicability the latter can possibly have to the former. You may possibly be able to profit from rigorous engineering discipline to systematise the production of software, but even so, that is for the “discipline” part, not the “engineering” part.

Re:Software and engineering: a non-sequitur

chromatic on 2007-07-02T17:02:41

Software is information, not material.

All software development is architecture, right up until you send source code through a compiler. That part is manufacturing.

Re:Software and engineering: a non-sequitur

Aristotle on 2007-07-02T21:22:15

Literally? Because I know that an architect would put three identical arcs next to each other on his blueprints without blinking; if a programmer wrote the same subroutine three times in a row, he wouldn’t get to work on anything noteworthy on my watch, if at all.

Re:Software and engineering: a non-sequitur

chromatic on 2007-07-03T00:55:05

Literally?

Only insofar as the part of software development where someone actually types code is still design, not production.

Re:Software and engineering: a non-sequitur

Aristotle on 2007-07-03T02:20:53

  1. So where does an architect’s work stop being architecture and start being manufacture of blueprints?

  2. So prior to typing the same thing thrice, you design an architecture that calls for typing it thrice?

Re:Software and engineering: a non-sequitur

chromatic on 2007-07-03T02:41:46

So where does an architect’s work stop being architecture and start being manufacture of blueprints?

In construction or in software development? In construction, it's at the point the blueprints stop changing--that is, usually, the day construction ends. In software, it's the same.

So prior to typing the same thing thrice, you design an architecture that calls for typing it thrice?

In construction, usually what happens is that the inspector says "This doesn't fly; redo it!" so you end up rewiring thrice. I'm not sure you meant to ask about the quality of the implementation however. If there were a blueprint language which could describe the concept "Door here just like a standard door, except it should open inward", there might be less duplication in building blueprints.

Of course, then construction would be more like construction in the number of ways people can make mistakes.

Re:Software and engineering: a non-sequitur

Aristotle on 2007-07-07T02:15:09

I have been trying for several days to understand the connection between your statements and the previous part of the thread, but there appears to be none. I am sorry to fail you.

Re:Software and engineering: a non-sequitur

chromatic on 2007-07-07T07:50:05

Software is not like construction in that the only part of software development that actually manufacturers a good for end-user use is bundling the compiled (or aggregated) version for deployment.

Software is like construction in that all of the bizarre changes of architecture and requirements seen in software development also happen during physical construction of a building, sometimes even without regard for physical laws.

Having done both software development and construction, I find the classical view of software-as-construction (where software architects write the blueprints then throw them over the wall to blue-collar typists who put 2x4s in the right places) out of touch with the realities of both software development and construction.

(The second "construction" in the final sentence of my previous post should have read "software development".)

engineering?

rjbs on 2007-07-02T12:37:53

I'm not sure why it matters for anything other than countries who have laws pertaining to being called an engineer. Some things from engineering seem applicable, some don't. Either that's because software construction is a form of engineering with distinct qualities, or because it's not engineering but shares some traits. Why does it matter which is the case?

Re:engineering?

jdavidb on 2007-07-02T20:26:35

This is one reason I get creeped out whenever I see government try to define anything. Like when government gives special privileges to journalists, for example: who is and is not a journalist?

Re:engineering?

Aristotle on 2007-07-02T21:23:55

Does the feeling extend to doctors? Is it a bad idea that they need to be licensed?

Re:engineering?

jdavidb on 2007-07-03T11:48:59

Yes. It's actively harmful to certain forms of alternative medicine.

The free populace is infinitely more capable of determining who is and is not a safe medical practitioner than the government is. And let me note that the market can and does also establish its own certification programs. Three to five such programs for various fields of medicine would probably emerge, but the important thing is that the potential would be there for new ones to be established.

Re:engineering?

btilly on 2007-07-02T20:34:12

It matters very much if you like making the case that there should be an actual licensed branch of engineering covering software development, and people who have achieved that license should have appropriate influence. For example a bid to develop software for a government contract should be signed off by an engineer who will be held accountable for the outcome. (This is how it is with other kinds of engineering contracts.)

This exact argument is one that Steve McConnell has made fairly forcefully. And there is a surprising amount to be said for it. At least in some problem fields.