There has been a resurgence of the perennial discussion of whether software engineers really are engineers.
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.
Three different definitions suggest that software engineers really are engineers.
Let’s start with Merriam-Webster:
noun en·gi·neer·ing \-ˈnir-iŋ\
The work of designing and creating large structures (such as roads and bridges) or new products or systems by using scientific methods
The control or direction of something (such as behavior)
Then the Oxford:
The branch of science and technology concerned with the design, building, and use of engines, machines, and structures.
The action of working artfully to bring something about
And finally Wikipedia:
Engineering is the application of mathematics, empirical evidence and scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, research, and improve structures, machines, tools, systems, components, materials, and processes.
The discipline of engineering is extremely broad, and encompasses a range of more specialized fields of engineering, each with a more specific emphasis on particular areas of applied science, technology and types of application.
The term Engineering is derived from the Latin ingenium, meaning “cleverness” and ingeniare, meaning “to contrive, devise”.
Http is just a language what is it about this language that allow DOS & Apple computers ,Ethernet & intranet systems to connect? Is it the ability to educate computers about other computers’ system applications via writing programs in http using OOP Inheritance in the that allowed different system applications to connect & relate?
Also if inheritance existed in the 60s why didn’t these people who invented it in the 60 invent the internet then back in the 60?