Slashdot Mirror


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."

32 of 568 comments (clear)

  1. Something something question in headline equals no by ZiakII · · Score: 5, Informative

    No

  2. Definition by Anonymous Coward · · Score: 5, Insightful

    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.

    1. Re:Definition by Zmobie · · Score: 4, Informative

      Not entirely true. When I took Engineering Ethics in college we went over this and the legal definition (in the US and Canada at least) is actually either a person who holds a P.E. in their respective discipline or someone working under the guide of a person holding a P.E (guide can mean they just review your work, we have to do this all the time at my company since P.E.s are not valid in a state unless issued by that state's P.E. authority). Software engineering is the only legal exception. Since no software P.E. actually exists a person can legally call themselves a software engineer if they hold a mild amount of experience (which is legally fuzzy) and there is no recourse if they screw something up. You can read all about it on the National Society of Professional Engineers website www.nspe.org/

      All that said, many (including myself) have argued for years software engineers should have a P.E. simply because it holds the people that wrote the code much more accountable for their actions. This way you can't leave a glaring security bug in the code that you knew about but just didn't want to fix and get away without any consequence for it. Texas, Florida and the Canadian boards have all actually supported this, but without the support from the broader group across North America it won't take any time soon. The standards probably would not be any where near as rigorous as other disciplines just because it is too difficult to check/prove/test software like other fields, but a baseline standard would help tremendously.

      So no the dictionary definition may not indicate that, but the legal definitions do.

  3. That time of the quarter already? by Anonymous Coward · · Score: 5, Funny

    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.

  4. Time to bring out the thirty-year-old cliches by 14erCleaner · · Score: 3

    If builders built buildings the way programmers wrote programs, the first woodpecker to come along would destroy civilization.

    Any field with "science" in it's name isn't one.

    etc., etc. I was hearing the same stuff when I was in grad school back in the 80's. Who cares?

    --
    Have you read my blog lately?
  5. Not all of them by itamihn · · Score: 5, Insightful

    Not all programmes should be called engineers. Only some of them should.

  6. In Portugal "Engineer" is a regulated profession by vivaoporto · · Score: 3, Informative

    In Portugal the title "engineer" is subject to acreditation by the Order (much like medical doctors or lawyers) and not all students that complete an engineering school can use engineer as the professional title.

    It's a distinction without a difference anyway, people mostly want to use "engineer" and "doctor" as a sign of status (replacing the old system of royal and noble ranks) while professionally it carries no difference at all.

  7. Not all engineers are regulated by MightyYar · · Score: 5, Informative

    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.
    1. Re:Not all engineers are regulated by pla · · Score: 3, Interesting

      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!"

  8. No. by ld+a,b · · Score: 4, Insightful

    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.
  9. The difference is starting us in the face, yet we by aussersterne · · Score: 5, Interesting

    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
  10. Here we go again by CAIMLAS · · Score: 3, Interesting

    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
  11. "Software Engineer" != "Programmer" by ZahrGnosis · · Score: 5, Insightful

    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.

  12. To what end? by LoyalOpposition · · Score: 3, Interesting

    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.
  13. Re:In Portugal "Engineer" is a regulated professio by MightyYar · · Score: 4, Informative

    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.
  14. To paraquote The Fifth Element by U2xhc2hkb3QgU3Vja3M · · Score: 3, Funny

    Police Officer: "Are you classified as engineer?"
    U2xhc2hkb3QgU3Vja3M: "Negative, I am a web monkey."

    Fight for your bitcoins!

  15. Re:Something something question in headline equals by David_Hart · · Score: 5, Interesting

    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...

  16. Sometimes by Anubis350 · · Score: 4, Insightful

    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
  17. In Canada, term "engineer" is legally protected by celest · · Score: 4, Informative

    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...

  18. Re:Something something question in headline equals by Entrope · · Score: 4, Insightful

    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.

  19. No by nerdyalien · · Score: 3, Interesting

    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.

  20. No, for very good reasons. by ilsaloving · · Score: 3, Interesting

    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.

    1. Re:No, for very good reasons. by BlackHawk-666 · · Score: 3, Interesting

      It's not the programmer's fault that people who have no right calling themselves a programmer are clamouring to take up the title. The role of the programmer / computer scientist is still the same as it ever was, only now there's people with 6 weeks experience cut and pasteing JS into an editor thinking they are the same as a person with a 3 year bachelor degree in computer science.

      To me, the distinction these days is between programmers and coders. Programmers are qualified, skilled, highly trained professionals capable of writing new algorithms, improving old ones, understanding the underlying architecture and execution trade-offs...coders customise your WordPress blog.

      --
      All those moments will be lost in time, like tears in rain.
  21. Re:Something something question in headline equals by ShanghaiBill · · Score: 4, Insightful

    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.

  22. Re:Something something question in headline equals by msauve · · Score: 3, Informative

    Perhaps Doctor Happy has a PhD in English Literature, so he's entitled to call himself a Doctor. But, he can't call himself a Medical Doctor (MD).

    Likewise, someone calling themselves a Software Engineer doesn't imply that they are a Professional Engineer (PE).

    --
    "National Security is the chief cause of national insecurity." - Celine's First Law
  23. Software is an engineering discipline by bigpat · · Score: 4, Insightful

    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.

  24. Re:Something something question in headline equals by arth1 · · Score: 4, Insightful

    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.

  25. Re:Something something question in headline equals by arth1 · · Score: 5, Funny

    It's a mote point.

    It's also a moot point!

    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.

  26. Re:Something something question in headline equals by Teancum · · Score: 3, Insightful

    I would agree that proper software engineering involves about 10% coding and a whole lot of doing a great many other things like documentation, specifications, and debates over interfaces (user, API, and even hardware hooks if you get to the driver level). and last but not least quality assurance testing to proof the system including formal code review. When I was spending more than 10% of my time actually coding, I thought I was making some real progress for the week... and started to get worried.

  27. Re:Something something question in headline equals by Zmobie · · Score: 3, Insightful

    Yea agreed, working in the airline industry for my career there is definitely a huge difference in systems that my company has to deliver and systems the average tech company pushes out. We spend more time developing the specifications, test plans, and running through them than I've ever heard from other people working in other software fields. Not only that, but when anything we have even has a hiccup (and a lot of times not our fault) our support group is immediately engaged and sometimes spends hours on the phone helping them limp along and fix the issue (the systems we deliver are not allowed to have downtime, most of them have to run for a decade with maybe a couple of hours a night to do cleanup/maintenance). When working with physical equipment and having to maintain extreme high availability/fault tolerance it qualifies as engineering in my opinion.

    That all said, I actually feel like there should be engineering oversight and regulations for software because allowing it to be the wild west and letting morons sling code out like crazy is exactly why we have all these security issues and such. I've argued for years that no matter how hard it is there should be some basic standards developed for software in general, but people either don't want it because it makes development more costly or they just dismiss it as impossible. I will conceit that it would be very difficult to develop standards equivalent to that of electrical or structural engineering, but it is definitely possible to at least create some to eliminate the morons that don't even know how to organize their code from spewing bug riddled messes out...

  28. You Can Call Me Any God Damn Thing You Want by LifesABeach · · Score: 3, Funny

    As long as there is a steady pay check involved.

  29. Engineering is not just building buildings by sjbe · · Score: 4, Insightful

    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.