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."
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
Look, 'software developers' are, to a large part, engineering software. They're making a machine, an engine designed for a specific purpose. I don't personally think MOST 'software engineers' qualify as actual engineers, they're neither bright enough nor especially forward thinking enough. But you're not going to hoist a regulatory body on an industry like software... we don't want it, and it won't help the industry. (Though, that's never stopped government before...)
The fact that so, so many software developers are shitty engineers is besides the point. There are many, many shitty "real" engineers out there, too. The difference is that the damage of a single bad software 'engineer' is negligible compared to the damage of a single bad real world engineer.
Knowing quite a few of both, I would say the biggest mindset difference between a software developer and an engineer is whether they're conservative or liberal. Software developers, for whatever reason, almost invariably seem to be very politically liberal, which I feel is the same mindset reflected in a lot of the disastrous "cleverness" so many developers inflict on people, but also in the ability to write extremely useful tools. Licensed engineers almost always seem to be fundamentally conservative (as are most good systems people), if not necessarily culturally or socially. Now, there are definitely exceptions to those rules, but for the most part they seem to be true - desire for pushing their own ideas, versus desires for order.
Now, there are definitely people in the field who should be called "engineers", though they're typically not developers. They're the ones who are finding design, implementation, or use case issues - and those disciplines almost never fall under an 'engineering' title. (Though, Senior Software Engineers or whatever are often doing this, as well.)
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
If we want to be strict shouldn't the term "engineer" apply only to those people involved with the design, construction, operation, and maintenance of external-combustion steam-engines for use pulling large masses along doubled rails, and naval propulsion? I don't mind anyone calling themselves an engineer, so long as they don't defraud someone about their abilities for the purpose of selling them a bill of goods. And this from an engineer having two engineering degrees from major state universities.
~Loyal
I aim to misbehave.
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...
So your not an engineer.
Of course not! He outright admitted that he doesn't work in the design or upkeep of locomotives. Since we use the English language as an immutable absolute, that clearly makes him a non-engineer.
Now if all those damned bridge-builders and skyscraper-designers and CPU-wirers and chemical-mixers and rocket-scientists and bacteria-growers would just quit using that sacred word, we could recover it from its current debased state!
"If you ain't covered in soot and diesel, don't call yourself an engineer you weasel!"
I support the motion of *not* calling programmers as engineers.
Starting from the academic point of view, engineering curriculum is far more different than a CS. General undergraduate engineering course comes with number of core modules with the purpose of teaching basic "Engineering Concepts". Furthermore, engineering courses are focused towards "skills training" by range of hands-on laboratory classes, design projects, team projects etc, to learn skills such as see the big picture, learn how to operate instruments, safety, planning etc.; which are a must to function as a professional engineer in industry. Then once in the trade, engineers generally become a member of a professional body e.g. IEEE, IEE, etc. and they are sworn to obey their code of conducts.
Switching gears to my personal story, I trained as an electrical & computer engineer. After a stint in telecommunications industry, I went on to work in web development. I was quite appalled by the way "programmers" think and execute projects in general.
When I worked in the telecoms, I observed that engineers spend quite a long phase in planning before actual execution. In the process, they have to comply range of regulations on telecoms, environment, etc.; and not to forget other concerns such as the commercial interests, backup plans, future expansions, long terms sustainability, maintainability etc. Overall, they consider the "big picture" and do not bog down with just the technical aspect. When it comes to execution, it is generally smooth and trouble free (usually there is a research & trial period before actual execution). Overall, I've seen much more customer orientation and long term view in engineering firms.
When I worked for the software house, planning was considered a "waste of time" (and not to mention, practises like Agile are generally up the anti). And most often or not, you build the roof of the house before the foundation, then figure out how to connect two of them. By and large, there was poor customer orientation. And most damaging of all, lack of concern or thought on long term view of the project and its outcome. I've lived through many cycles of delivering half-baked solutions to client and milking them on the long run to fix those solutions (and in the worst case scenario, making client go bust). If it is a proper engineering firm, they will be sued for such kind of misconduct for sure.
Just my 2 cents.
Engineers are responsible for the stuff they build. The average programmer is not.
Engineers require formal education, certification, apprenticeship, etc. Anyone can call themselves a programmer, regardless of their level of skill. And the situation is just getting worse and worse, because everyone clamours about the importance of lowering the barrier of entry for new developers, resulting in more and more people who know less and less, all the while thinking that they they are on equal footing with someone who could write an artificial intelligence with Cobol and assembly language. (Yes, it's a silly example, I know, but you get the point) .
I *wish* there was an engineering equivalent to software development. The number of people I come across that think they're god's gift to man, while being grossly incompetent, is depressing.
Requiring people to be able to demonstrate that they actually know WTF they're talking about would probably wipe out a sizable percentage of the hacks out there, it would give the people who have the talent, but not necessarily the skill/experience, a goal to aim for so that they can *know* when they have reached a suitable level, and overall code quality would improve immeasurably because the people who know what they were doing wouldn't have to spend so much time preventing the boneheads from tanking the entire project.