Where 'Software Engineering' went Wrong

This is one of the best things I’ve seen about software in a long time.

It talks about engineering, craftsmanship and design, where it all went wrong and why we should all still want to be engineers. Just not THAT kind of engineer.

That’s a talk with some good points and some painful attempts at involving the audience. However, the ideas presented, even in 2012, were quite old. The idea that source code is everything has been around for a long while. There are still entire code communities who don’t accept that, though. Indeed, there are still some folk who disdain testing, which boggles the mind. The idea that software engineering is analogous to building structures has always been daft.

Building software solutions can be engineering.

It was the first part that I enjoyed. I don’t think I was really listening by the end because I was doing something else in parallel, though I did notice the bit about ‘source code is everything’ and I don’t agree with it, though I’ve heard it many times before. A common characteristic of developers is to be too optimistic due to poor risk appraisal.

I think software builds structures but I agree that those structures aren’t subject to the same physical constraints, so we followed the wrong examples of engineering practice.

I found an amazing quotation. I was going to start a new topic but I found this one.

In 1978, computer scientist E. W. Dijkstra wrote in the paper ‘The pragmatic engineer versus the scientific designer’ that the coining of the term software engineer was not useful since it was an inappropriate analogy, “The existence of the mere term has been the base of a number of extremely shallow—and false—analogies, which just confuse the issue…Computers are such exceptional gadgets that there is good reason to assume that most analogies with other disciplines are too shallow to be of any positive value, are even so shallow that they are only confusing.”

Where it went wrong was ‘when it started’? I like “scientific designer” very much.

1 Like

The paper:

“Reality can only be understood as a gross exaggeration of fiction”. Also timely :slight_smile:

“The scientific designer believes in the correctness of his design because he has understood why it must work properly.” I’d have liked an example. That sounds like a ‘theoretical science designer’. An ‘experimental science designer’ would check if a design worked (at least to the satisfaction of the client, though I’d hope for more rigour.) “User testing” is a phrase I fear. It usually seems to mean ‘tests designed by users’, or ‘did it work once?’.

This is a bit weirdly coincidental as there’s a diagram I drew yesterday on my £2 white-board that has engineer, theoretical scientist, experimental scientist and conceptual artist plotted on axes of precision-abstraction and theory-practice. I don’t know where to put ‘craftsman’. Somewhere 'origin’al?

Proudly sponsored by Bytemark