This is not a new argument, as evidenced by this statement made some 37 years ago:
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. I can only conclude that the wide-spread adoption of the term “software engineering” is to be regretted as it only hampers this recognition. – Edsger W.Dijkstra, 1978
Yet it remains a popular argument. Taking the side of Ian Bogost for a while, we will refuse to admit software development as engineering because, in short, software has bugs.
But taking, say, the first Tacoma Narrows Bridge as an example… I think we can put that argument to rest.
Nadia Ehgbal counters by agreeing with Ian. Nadia’s argument starts with the supposition that much of modern software development is a rote exercise of pasting together existing code, which someone else has already engineered for us and thus we’re not doing engineering any more. The argument goes on to explain that “someone else” exists and it’s just people writing lower level code, such as the OpenSSL library.
This is somewhat of a no true Scotsman argument: software engineering isn’t engineering, except when it is. What makes the work on OpenSSL engineering, but the work on, say, WordPress mere development?
Harlan Lieberman-Berg proposes that software developers should stand under their metaphorical bridges while the metaphorical trains run overhead, to inspire a focus on quality. Are software developers the modern day equivalent of the chief engineers of ancient civilizations, responsible for the oversight of a large works? No – but I don’t think we should execute our project managers, either.
Harlan’s argument provides light on whether meeting some standard of quality is the defining characteristic of an engineer, because Harlan is describing a harsh form of regulation – and regulation plays a significant role in the level of quality particular modern engineering disciplines and industries produce.
When it comes to software engineering, perhaps there is a role for some kind of regulation around security and privacy.
Engineering in the wild
If we want to understand whether a software developer can call themselves an engineer, we may need a better definition of ‘engineer’. The dictionary simply tells us that an engineer is:
a person who designs, builds, or maintains engines, machines, or structures.
There is a wide range of possible engineers in here, but further restrictions would beg the question – membership in an engineering society of some kind, tertiary qualifications in an engineering degree, and so on, all assert the conclusion.
Given this lack of clear definition, I will echo E. W. Dijkstra’s sentiments and regret the adoption of the term.
The views expressed by the authors of this blog are their own and do not necessarily reflect the views of APNIC. Please note a Code of Conduct applies to this blog.