Should Programmers Be Called Engineers? (theatlantic.com)
New submitter nervouscat writes: Game designer Ian Bogost argues that programmers shouldn't use the term "engineer" to describe themselves. He says the tech industry has "cheapened" the title, and that it's more aspirational than anything else. Quoting: "Traditional engineers are regulated, certified, and subject to apprenticeship and continuing education. Engineering claims an explicit responsibility to public safety and reliability, even if it doesn’t always deliver. ... Today’s computer systems pose individual and communal dangers that we’d never accept in more concrete structures like bridges, skyscrapers, power plants, and missile-defense systems. Apple’s iOS 9 update reportedly “bricked” certain phones, making them unusable. Services like Google Docs go down for mysterious reasons, leaving those whose work depends on them in a lurch. ... When it comes to skyscrapers and bridges and power plants and elevators and the like, engineering has been, and will continue to be, managed partly by professional standards, and partly by regulation around the expertise and duties of engineers. But fifty years’ worth of attempts to turn software development into a legitimate engineering practice have failed."
No
I get the point, but the definition of Engineering makes no mention of "regulated, certified, and subject to apprenticeship".
Engineering:
1.the art or science of making practical application of the knowledge of pure sciences, as physics or chemistry, as in the construction of engines, bridges, buildings, mines, ships, and chemical plants.
2.the action, work, or profession of an engineer.
3.Digital Technology. the art or process of designing and programming computer systems: computer engineering;
software engineering.
Engineer:
1.a person trained and skilled in the design, construction, and use of engines or machines, or in any of various branches of engineering :
a mechanical engineer; a civil engineer.
5.Digital Technology. a person skilled in the design and programming of computer systems: a software engineer;
a web engineer.
I mean this comes up at least 4 times a year. I personally call myself High Codeomancer and have aliased all my shell commands to be different spells from popular fiction. It does make typing them out slower but you must suffer for your art.
Not all programmes should be called engineers. Only some of them should.
I'm a mechanical engineer, and while continuing education is certainly necessary for the sake of both myself and the company that I do work for - I am not regulated in any way. It might be different if we did work with the government, but I have no requirement to be a Professional Engineer. I did sit for the test, but since no one at this entire company is certified there was no way to apprentice. Technically I could now sit for the test again and get the certification based on my work experience, but it is simply not worth my time or effort.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
A programmer is a software construction worker.
It's easy, if someone designs a mechanism, he is no longer a programmer, he is a software engineer.
However amateur or inept.
The article mentions training as if it meant much and bridges didn't crumble and batteries didn't explode all the time all over the world.
10 little-endian boys went out to dine, a big-endian carp ate one, and then there were -246.
back away from the distinction again and again. It's not programming vs not-programming, and it's not about building stuff in meatspace vs. building stuff in memory.
It's about public vs. private effects and risks. People who build stuff for backyards = not engineers. People who build stuff for the public square = engineers. People who build a bridge over their own stream themselves = not engineers. People who build a bridge over a public byway for heavy public use = engineers.
The same ought to be true in codingland. If you are building critical public infrastructure or software that many people must use in order to participate in society, then you should be licensed and bonded and held to higher standards. If you are building software that is for personal, private use, then this is not the case.
Note that I am talking about instance of execution, not instance of code. For example, MS Windows would not be "engineering" code because each instance of execution is private, while the code inside, say, a traffic lights system, aircraft control system, or automobile is "engineering" code because these instances of execution happen in public, with public effects. (If MS Windows was to be used to run, say, a battleship, then it ought to be a separate "engineered" version held to higher standards of scrutiny, professionalism, and liability.)
We don't certify and license people as engineers because they might touch wood and steel we think wood and steel are special or important, we certify and license people as engineers whose single instances of wood and steel construction will each touch (and possibly put at risk) many lives.
STOP . AMERICA . NOW
When a building gets built, or a dam, or a pipeline, there's engineers, architects, brick layers, welders, and all sorts of other people involved.
When you do software, "programmers" is just a catch name all that could fit several of those archetypes -- the only thing you have to do to be a programmer is to actually code. But there certainly ARE software "Engineers" -- people whose job it is to make sure that everything the designers and programmers are individually putting together should _work_, and not fall apart, and survive in the actual ecosystem the code is released in.
Just like a good mechanical engineer shouldn't be above picking up a shovel or an acetylene torch now and again, if needed, even if it isn't still their forté, a good software engineer should probably be able to code, but that's not really their core purpose.
And as for "Engineering claims an explicit responsibility to public safety and reliability, even if it doesn’t always deliver"... next time someone fails to steal your identity on the internet, thank a programmer, a software engineer, and probably a computer scientist among others. Next time I don't die driving over a bridge I'll thank a few mechanical and civil engineers, as well as the workers that did their job putting it together.
In the US we have "engineers" and then we have "Professional Engineers (PE)". PEs are regulated in the usual US way - the certification and regulation is provided by the professional organization, but the state governments generally require certification in order to do certain types of things or to offer your services to the general public. Almost every civil engineer that I know is a PE. Every mechanical engineer that I know who works in the building trade is certified. However, the vast majority of engineers who simply design or manufacture stuff are not certified unless they have some specific reason to go through the hassle.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
No
It's a mote point. No matter what the opinion, the word Engineer is commonly included in computer related position titles (programming, networking, etc.) by companies, hiring agents, in normal conversation, etc. Once a new meaning for a word has entered the common vernacular it's near impossible to pull it back...
Are you actually doing engineering work? Scoping out and building a system? If so calling yourself just a "programmer" may cheapen the scope of work you do. Moreover, the author points to huge software failures as examples of things that won't happen in Engineering, but bridges and buildings collapse too, trains derail, car designs turn out to be duds or unsafe, etc. Plenty of what the author defines as "real" engineering has run into the same problems he highlights in software. The author, frankly, seems to have a beef with software as a concept, and a problem understanding its role in the modern world. To answer the post title though: not all programming is engineering, but there is plenty of programming that is.
"goodbye and hello, as always" ~Prince Corwin, from Zelazny's Amber series
In Canada, it's not so much a matter of programs "should not" as "must not" call themselves "engineers". The terms "engineer" and "engineering" are legally protected in all jurisdictions in Canada, much like the terms "lawyer", "medical doctor", etc.
Programmers who are not licensed professional engineers may not call themselves engineers. The computer science and computer/software/electrical/systems engineering programs at Canadian universities are very different. The engineering programs are accredited at the national level (http://www.engineerscanada.ca/accreditation-resources) to ensure a minimum standard of education for the practice of engineering. There are also post-graduation examination(s) and internship requirements (typically 4 years) prior to licensing. There is no such accreditation for non-engineering programming/related programs.
Further, programmers who are not licensed professional engineers may not do the work of engineers, even if they don't use the term. Many companies have trouble with this one. The definition of what constitutes engineering work can be found here: http://www.peo.on.ca/index.php... - For example, a programmer who is not a licensed professional engineer may not design the software controlling a self-driving car because life and safety are at risk.
Laws & regulations: (For Ontario, but similar in all Canadian provinces/territories): http://www.ontario.ca/laws/sta... & http://www.ontario.ca/laws/reg...
I've done software engineering in the past. It was slow and expensive, parts of it were tedious, and parts -- particularly fallout from the fact that (fairly) rigorous software engineering is rarely done -- involved more hassle than they should have been. Even at that job, most of what I did was more traditional software development than engineering, and all my other software-developing jobs have been far from the level of rigor and care that I would call engineering.
However, when I did software engineering, with clearly defined requirements and interfaces, with an explicit architecture and functional decomposition of the software, with carefully planned and executed verification and validation, the results were definitely higher quality than you would get from less time- and labor-intensive methods. Most of the time, cheaper methods are acceptable and worth the increased chance of defects. Flight systems, healthcare, other safety-critical systems, and financial computing usually, and justifiably, prefer to pay for more rigor and higher quality.
Only when they have to take a test to be certified as a Software Engineer and then are held legally liable for their mistakes.
Plenty of "real" engineers have no certification and are not legally liable for their mistakes. My company employs several degreed EEs and MEs, and none of them are PEs, and none of them are personally liable for the safety of our products.
Programmers are not necessarily software engineers, so the question is dumb. Ask whether software is an engineering discipline and the answer is that yes it is. Not every software project is a software engineering project. Just like doing maintenance on your lawnmower doesn't make you a mechanical engineer.
And, the test cannot be "something failed, therefore you didn't do it right". We need to be able to distinguish malpractice from new discovery, i.e. an engineer isn't necessarily at fault when a new kind of material failure occurs that the engineering corpus as a whole has never observed and characterized.
Yes, an engineer is at fault then. Every time.
If I used a plastic that hadn't been tested for durability in a product that's supposed to be durable, I would have my hide stapled to the wall. The buck stops here.
It's my responsibility to check every component I use, whether it's by making sure we do it ourselves, or accepting certifications that suppliers provide with an iron-clad contract putting the responsibility in their hands.
Software "engineers" don't take that responsibility, and generally pass the buck any chance they get.
On one hand, it's a mote point.
On the other hand, it's a moot point.
On the gripping hand, it's a motie point.
While in general the definition of engineering applies to programmers, as practitioners of mathematics and science, I would agree the more excepted definition of building physical things is more appropriate.
I'm an engineer (among other things) and even have several degrees to prove it. But that isn't what really makes me an engineer. I'm an engineer because I do engineering. The types of engineering I do have nothing to do with building buildings and often aren't even about building physical objects. Most of what I do is properly termed process engineering. I don't design the object, I design the system to build it.
As such, programmers are not really engineers. I always describe myself as software developer, not software engineer.
Disagree. I'm not a programmer and you should call yourself whatever you are comfortable with. But I would call you an engineer because you are doing engineering work.