Programmers: Stop Calling Yourselves Engineers (2015)
theatlantic.com
theatlantic.com
Bridges have collapsed, buildings have failed, but that happens less than software crashes. Why is that? I think the most important differentiator is the tolerance for such failures. Software is written cheaply, quickly and fails more often because we can afford it to. If we could afford the same thing with buildings, they'd be made quickly and cheaply, but our societal tolerance for that is much lower.
I posit that software can be made to the same high standards as buildings or bridges, but it would have to be much simpler and/or way more expensive. So why not call software developers engineers? Just like structural engineers, we have to meet a quality bar set by mostly external circumstances. Is it the lack of industry certification? That would've happened, if the consequences of failing to meet the bar were the same or worse.
Software development as a field does struggle with adopting these tools, but I think that's a matter of degree, not fundamental.
The roles are not as cleanly defined yet, what counts as engineering work and what as "just" implementation.
Contrast with software: Many large software projects fail to even achieve a coherent and feasible high-level spec of what the system needs to do, let alone how all the details will work. Once you get past that phase, you find that the actual design and build of software systems relies on so many layers of abstraction that practitioners have to make a lot of assumptions in order to get anything done. In practice it works because we tend to keep the lower levels stable and coalesce around a relatively small number of proven stacks, but unlike the hard engineers knowledge of materials and physics, the actual platforms are all human defined and subject to change. Imagine how civic engineering would work if physics were just code written by humans that never stopped monkeying with it.
A company designing packaging might hire structural (sub field of civil) or mechanical engineers I guess. If so, that means they're an engineer in my book.
These links were the first I found and they've tested OK. The first is an html version, the others are PDFs with the last being the best quality (in color). If they don't work just search for the title and year.
http://users.csc.calpoly.edu/~jdalbey/SWE/Papers/SciAmGibbs/...
http://sarec.nd.edu/courses/SE2017/Week1-TheSoftwareCrisis.p...
https://www.researchgate.net/profile/Wayt-Gibbs/publication/...
If there were legitimate confusion about software engineers, I'd see the problem. If people who aren't licensed professional engineers are claiming they are, of if people are reading a book on SQL and PHP and hanging out a shingle as a structural engineer, then ok. But "engineer" is a very widespread term to describe the ingenious (Ingenieur, Ingenium, Engineer) application of design, technology, science, and mathematics to real world problems. That is probably the primary use of the term.
The usual definition of an engineer is someone with a degree in the subject and it's been that way for about a century or more. Most 'sound engineers' do not have one (but there are exceptions). In fact, most of those who I've known have no qualifications in the field at all. That's not to say they're not good at their work (as many are very competent).
SMPTE (Society of Motion Picture and Television Engineers) and the AES (Audio Engineering Society) used to require a degree for membership but I'm unaware of whether they still do or not (as it's a long while since I had anything to do with these institutions). If I recall one could automatically become a member of them if one was already a member of the IEEE (but it required a degree as well for membership). This reciprocal arrangement between professional bodies works when the core training is the same (I recall becoming a member of one institution after it took my name from another, all I did was tick the box and pay the fee).
The question of whether it matters if someone is called an engineer or not is probably only relevant when regulation and safety are involved. For example, my profession is electrical engineering and computing so I shouldn't (and wouldn't) misrepresent myself as a civil engineer and apply for a bridge-building job when that's not my profession (that's to say, I may be in engineering but I'm unskilled in the bridge-building branch of the profession).
Even if I secretly studied bridge building for, say, over a decade and was quite excellent in the subject I shouldn't be allowed to practice that skill without going through the formal accreditation process because when something goes wrong (and sooner or later it inevitably will), the lines of accountability will be dredged out (no pun intended). When this happens it's much easier for all involved to assume [know from one's qualifications] what the skills and expertise of those involved are so blame can be apportioned.
It's hard to imagine a situation where a sound engineer sitting behind a sound desk—or a film grader/editor at a Moviola film editor or its digital equivalent—can do anything that would endanger life so it likely doesn't matter what they call themselves.
The matter of using the term 'engineering' in connection with computer programming is a much more difficult and vexed matter for two reasons. The first is how practical software development actually measures up to other engineering professions, and second, the applications to which software is put.
In the first case there's a solid argument (as per the SciAm article reference I've posted elsewhere to this story), which is that the maturity of software development per se is well behind other branches of engineering (electrical and chemical engineering for instance). The second covers the fields where software is applied, which, as we all know, is everywhere.
Unlike my bridge-building analogy, we've not yet separated out a methodology (a separate engineering philosophy) for critical systems software development from other less critical systems. (It's obvious we need them separated but we still use common tools (compilers etc.) and common programming methodologies and this is a significant problem—I could provide reasons but they are too lengthy to cover here although for those interested the SciAm article is a good place to start.)
Put simply, the level of hardness and granularity of traditional engineering (set by a several-hundred-year long lineage of experience and backed by both domestic and international standards) that goes into hardware design and then building hardware—bridges, rockets, microchips, etc.—is not necessarily backed by the same hardness and granularity from the supporting software. And as we've seen in practice, in many, many instances this has been a major problem.
In my opinion, there will have to be rationalization and standards eventually. When that will happen is anyone's guess.
That said, I call myself an engineer because that's what everyone I know doing the same job calls themselves. That's the point of language - to communicate. Even the author of this article hasn't provided any evidence that this causes confusion amidst a long ramble about how computer programs sometimes don't work (this happens in every profession), Uber doesn't consider itself a taxi company (completely irrelevant), and that other kinds of engineers design different types of things (obvious and self-explanatory). Even the author points out that you don't "always" need a PE license to practice these other disciplines in the U.S.
What purpose would be served by making a point of using a different title, other than satisfying the people who write these kinds of condescending articles? It would be easier for such people to get over themselves and stop pretending they don't know what I mean when I say I am a software engineer.
15 out of 17 subjects said yes, software development is engineering.
One interesting takeaway for me from that article is that we over-romanticise what "real" engineers actually do in their day-to-day life. "Real" engineering practices is messy and sloppy in ways that would make software developers uncomfortable, according to the some people who worked on both sides.
The articles are well worth a read:
https://www.hillelwayne.com/post/crossover-project/are-we-re...
https://www.hillelwayne.com/post/crossover-project/we-are-no...
https://www.hillelwayne.com/post/crossover-project/what-we-c...
At least in Canada, the “engineering field” is divided into engineers, technologists, and technicians.
Some people involved in software work at the level of engineers, some work at the level of technologists, and others work at the level of technicians. I think having a finer grained way to discuss the different types of software development would be a helpful way to move the conversation forward.
This would also seem to align with what the article talks about having a richer vocabulary.
"Engineer" shouldn't be a protected designation. It depends on the state: see this vice article on a licensing board getting shot down[0].
Professionals want to give themselves the most serious and qualified-sounding names they can.
Unfortunately, this article appears to be another in a long line of longform trolling designed to stimulate emotional response and drive clicks without any real substance..
[0]https://www.vice.com/en/article/yw798m/oregon-unconstitution...
If I don't know them I could still do stuff, but the likelyhood of landing in jail because what I planned started a fire or killed someone would be very real.
Going to jail because you managed to replicate a SQL injection that everybody and their dog knows since the 90s is something I really would like to see in software engineering.
Because you know: engineers are personally liable for the decisions they take and for the things they should have known but didn't.
I wouldn't ever call myself a mathematician or a physicist despite having some overlap.
In the same manner, someone who either goes through a coding boot camp, gets a comp sci degree, or just reads some books and starts coding are not engineers. They're programmers/developers and one of them has the formal training of a computer scientist and can be called that too.
I'm not being elitist, it's just about using the right term. Engineer has meant something else for generations and overloading it doesn't help when they don't mean the same thing.
As far as software engineering goes, I'd have to look into it some more. If they also take some of the same root classes (Ex: circuits, calculus, thermo, dynamics, statics, material balances...etc) and then just focus on software, I'd be ok with sharing the title of engineer as they truly do have the same heritage.
I urge the author who describes himself as "the Ivan Allen College Distinguished Chair in Media Studies" to stop engaging in blatant chairwashing until he has four legs and, ideally, a soft cushion.
Of course, Professional Engineer (PE) is entirely different with similar legal responsibilities and sanctions as medicine and law. Maybe if the terms are too confusing PEs could do what lawyers and "doctors" did and start calling themselves Doctor Machinarius (DM) and stand among the ranks of MDs, JDs, and PhDs. Of course, that would require a regulatory body with actual teeth and government power instead of ABET.
Real Software Engineering by Glenn Vanderburg
Lone Star Ruby Conference 2010 https://www.youtube.com/watch?v=NP9AIUT9nos
Software engineering as it's taught in universities simply doesn't work. It doesn't produce software systems of high quality, and it doesn't produce them for low cost. Sometimes, even when practiced rigorously, it doesn't produce systems at all.
That's odd, because in every other field, the term "engineering" is reserved for methods that work.
What then, does real software engineering look like? How can we consistently deliver high-quality systems to our customers and employers in a timely fashion and for a reasonable cost? In this session, we'll discuss where software engineering went wrong, and build the case that disciplined Agile methods, far from being "anti-engineering" (as they are often described), actually represent the best of engineering principles applied to the task of software development.
I build systems in the public interest to the same extent that all other engineers do. The idea that tech has had disasters and so is "below" engineers of other disciplines is dismissive of bridge collapses, plane crashes and nuclear reactor accidents that are nothing to do with the software branch of engineering.
This article is gatekeeping snobbery and makes no serious contribution to the discussion of my profession, or its standing.
Again, I think technical work like coding is a worthy profession by itself. The title of coder or programmer seem to already work and are more specific.
A buddy of mine (industrial engineer) scored extremely well on the P.E. exam and is sitting on the exam board now. He is a sales engineer as he likes people and talking.
In the same way, the job title shouldn't matter as much as the principles of ethical professionals. Should we really be using job titles to indicate the expectations around ethical conduct?
Ref: Not a software engineer, programmer, or "tech-bro" ::rolls eyes::
I bery well deserve to call myself an engineer after such studies.
If someone is self taught programmer, thats a completely different story.
Let's start with my degree. My master's degree reads "Informatics Engineer", a title that was approved at the national level by the EU country where I graduated. That alone should be sufficient in my opinion.
Degrees don't matter? What about people? When the exact work I do is performed by "true Engineers" then does that make it true enfineering? Most of my co-workers are Electronics Engineers and while they perform the same tasks I do, I have yet to see anybody question their worth.
Or perhaps my colleagues may be true Engineers, but the work they are doing is mere programming, as evidenced by a simple programmer like me doing it.
Maybe it's the processes we follow that matter. True engineering work involves design, documentation and review processes, after all. Well, the processes we follow come directly from EE best practices because that's the nature of the work we do (computer architecture). Software engineering also has its own similar design processes tailored to their needs. Not significantly different, I must say.
Maybe it's not the accreditation, the people or the processes. Perhaps the demarcation between engineering and programming is in the systems we design. They must be designs worthy of being patented, systems so important that people's lives are at risk if they malfunction.
I have a dozen patents -- none of them in software. I have worked on safety critical systems where death and dismemberment were expected consequences of malfunction. Importantly, not all "true engineers" work on safety critical systems either.
What else, then? The article talks about certification -- I wish they allowed us to become licensed so that we had less competition and higher software engineering standards.
When I want to do the electrical wiring for a house there are close to 2000 norms each stuffed with formula and details, that I have to get right or I will have to fear the consequences.
When I write software it is more like "Lol this framework looks interesting, lets try it together with that code from coolcoder1982 on GitHub".
I know there are programmers who try very hard to specify and write good software, with formal correctness, tests and so on. And maybe those would be closest to the term "engineer", but there are so many people who just aren't, that the whole field suffers.
When something went wrong due to a software error for the past 3 decades it was (and still is) usually excused as if nobody could have done something to prevent it. Software error. Oh god. Nothing we can do. Jikes.
If my electrical installation starts a fire, I pay or go to jail. If the norm I based it on was wrong and that started the fire, the norm will get changed and everybody from now on has to follow these updated rules. Existing buildings might need to be updated. There are laws specifically regulating how often such checks have to be done. Because this is what engineers do: they follow boring norms, try to apply them to the problem and if they fail they personally suffer for it. In fact all that stiffness, all that lack of fun, all these rules can be seen as the engineers way of surving their career without landing in jail.
Meanwhile as a software engineer you can write code that processes the healthcare data for millions of people, leak all that data through a combination of bad decisions nobody should have made again since the early ninties and still stay a programmer, Buffer overflows, SQL injections, DIY crypto, unsalted MD5 hashing, you name it.
Again: maybe individual people have higher standards (me for example), but the lived practice is so bad, calling it engineering would really border to an insult against those who really put their careers, families and wellbeing on the line in other engineering professions.
If electrical engineering was like programming electrical fires and electrical shocks would be the leading cause of death.
Which I think translates to software: lots of development work is not necessarily engineering, but that doesn't mean engineering doesn't happen in software or that the field of Software Engineering is not a thing. And since we do not use the degree to distinguish, it gets tricky who gets that title and who doesn't, and what part of an individuals work is which.
(And that's not just a software thing, e.g. aviation flight engineers don't really fit that scheme either, despite aviation being a serious field)
But that is true in software as well, as long as you are working on safety critical systems. Sure, most software engineering is not safety critical, but that doesn't make it less engineering. In the same way that an electronics engineer doesn't stop being so just because they happen to be working in non-safety-critical systems.
In essence the argument of safety boils down to "if it can't kill people then it is not engineering", which I find rather humorous.
I know certification in Software can be a flipping nightmare, but sometimes I wish they just had some hacker and data privacy lawyer look at it for a weekend and if they find something they cannot release it to the market.
You’re not making siege engines any more.