top | item 13850516

Programmers should not call themselves engineers (2015)

77 points| DanielleMolloy | 9 years ago |theatlantic.com | reply

138 comments

order
[+] bshimmin|9 years ago|reply
While I don't much like software developers calling themselves engineers either, it was hard not to read this and think that about a week ago I was reading all about a dam that seemed poised to fail and thousands of people had to be evacuated; or about a miracle of engineering, a skyscraper in SF that appears to be sinking (https://www.nytimes.com/2016/09/23/us/san-francisco-millenni... or, oh, here's an entire Wikipedia page just for structural collapses: https://en.wikipedia.org/wiki/List_of_structural_failures_an...

My point, if I have one, is that Ashley Madison getting hacked (specifically mentioned in the article) was a pretty embarrassing calamity, sure, but I don't think anyone died as a result of a lack of proper collaboration and regulation in software development.

[+] lbhnact|9 years ago|reply
>I don't think anyone died as a result of a lack of proper collaboration and regulation in software development.

Come work in healthcare, you may change your mind.

In healthcare, a lack of domain expertise, rigor, collaboration, and regulation kills people every day. And inhibits our science. And is the root cause of billions a week in waste.

Yes, most web content and it's delivery we could do well, or be better off, without. But in many jobs, the software constrains or enables behaviors that have real consequences.

[+] Spooky23|9 years ago|reply
Pointing out failures in engineering isn't a productive exercise.

The difference is that engineers have both professional ethical obligations that they can fall back on and accountability. It is possible that the guy who stamped the sinking skyscraper will lose his license, for example.

In technology, the lack of a real engineering culture is a profoundly negative thing in many ways. When your boss demands that you do something clearly unethical, you have no backdrop as a professional to say "I cannot do this". Engineers, attorneys and CPAs have that.

[+] adrianN|9 years ago|reply
There are a number of well known software bugs that killed people. For example the Therac-25 is mentioned in every software engineering course.
[+] lprubin|9 years ago|reply
What about failures in medical software, airplane safety software, or military software?
[+] danpalmer|9 years ago|reply
I call myself a Software Engineer specifically because I see it as different to being a programmer. I don't just write code, I try to solve problems in a rigorous and maintainable way, while being aware of the wider implications of my work to the business, our customers, and anyone else who might be affected by it. Sure we don't have the same regulation as civil engineers, but I try to do my work in the same spirit.

As part of this, I have a "masters of engineering" in computer science, which again, while not the same as civil engineers, still had a lot more wider study than a standard computer science degree.

I think programmers should do more engineering, and I think they should be recognised as engineers when they do.

[+] hashkb|9 years ago|reply
This misses the point that all other types of engineering are regulated and licensed.
[+] psyc|9 years ago|reply
We cannot retrofit these qualifications onto what have always been arbitrary titles, just because it sounds plausible. Imagine you are reading a candidate's resume. At one past job they were called "Software Engineer" and at another they were called "Software Developer". Nobody would presume to say to the candidate, "So, I see you did rigorous development with proper quality controls and metrics at Company A, but you did move-fast-break-things development at Company B?" You can't infer that from the job title, because the title is just whatever each company feels like calling programmers.
[+] VLM|9 years ago|reply
"I try to solve problems in a rigorous and maintainable way"

The original linked article was written by someone who's never engineered anything and clearly has no social or cultural connection with any engineers, but I can see in one line that you and I are at least partially on the same page about what engineering is, which is not much of an endorsement for the article.

The critical difference between science, engineering, and art/craft is engineering involves highly predictable well trodden ground where simulation always corresponds to measured reality. The predictive process is complicated and takes a long time and a lot of effort to learn and ingrain. The aesthetics and tradition don't matter as much (or at all) compared to the predictable performance and predictable cost. That's engineering.

The difference between a science and engineering is an engineers output is optimized to minimal cost yet fits a predictable yet variable safety envelope. That column will not buckle with 99.999% odds over the lifetime of the building if built to commercial standards and my specs. Science is much less predictable and its criteria for prediction is much lower and generally not "safety of life" related and tends to be extremely abstract. Is that theoretical cosmological model interesting and not provably invalid? OK publish. Does that biomedical pharma experiment have more than 2 sigma of abstract statistical significance or whatever the statistical flavor is for pharma research today? OK publish. Science can of course eventually turn into engineering... A lot of chemeng make a lot of money turning lab bench scale processes into factory scale processes, they are engineers because they understand and predict scalability, unlike computer scientists who famously do not.

The difference between craft/art and engineering is again safety of life and predictability but in craft/art you don't care about optimizing cost and safety as primary criteria. Does that custom bookcase have nice proportions? Is the wood grain clear? Is the stain too dark or too light or just right? Sometimes craftsmen such as framing carpenters need help from an engineer for a wide beam or similar weirdness but most of craft/art boils down to "grandpa put wall studs on 16 inch centers so I will too". Building codes for the building trades are written in human blood, not calculus math, for example. Somebody got electrocuted doing that, gets a line in the NEC or building code, we'd rather figure out the size of that weird beam using math rather than seeing if it collapses is structural engineering.

Very few people write code in an engineering fashion where the entire process is predictable and heavily testable against reality and human lives depend upon it. Some embedded stuff like PID controllers in factories or anti-lock brakes are like that. Your average web framework CRUD app, not so much, who knows what it'll do, and when it fails thousands will not die in the crash/collapse.

[+] eru|9 years ago|reply
> It undermines a long tradition of designing and building infrastructure in the public interest.

The author should know that the word engineer comes from the military.

> The term engineering itself has a much more recent etymology, deriving from the word engineer, which itself dates back to 1325, when an engine’er (literally, one who operates an engine) originally referred to "a constructor of military engines."

(from https://en.wikipedia.org/wiki/History_of_engineering)

[+] guessmyname|9 years ago|reply
I recently visited Berlin to research about the German Freelance Visa [1] after being rejected by multiple local startups that were looking for Software Engineers with +3 years of work experience. I asked for feedback to one of them and was told that I should not consider myself an "engineer" because I don't have an university degree in the field, even with +9 years of work experience. I asked more people about the topic and most of them agreed that I should call myself a Software Developer instead since I am self-taught. What do you think about it?

EDIT: To add a bit more, I don't mind the title, you always end up doing more or less the same things, many companies love the titles though. Some of my friends have titles like "Lead Developer", "Senior Software Engineer", "CTO", "Back-End Developer", etc and they all do pretty much the same thing that I do, so I don't see the point on nitpicking my resume. I will surely take the advice and start calling myself a "Software Developer" instead of "Software Engineer" because I agree that calling myself an engineer without a formal education is misleading.

[1] https://service.berlin.de/dienstleistung/305249/en/

[+] k__|9 years ago|reply
Yes, German companies love their degrees...

I work as a Freelancer too and all the German contract jobs 'require' a degree 'or similar experience'.

In the end, explaining 'similar experience' is a struggle.

You even have to pay less taxes if you do 'consulting of higher value' as a freelancer (called freiberufler status) but explaining this without a degree is a struggle too.

In the end I'm happy about my B.Sc. in Computer Science. When I tell people I have it, I get no more questions asked...

[+] 13of40|9 years ago|reply
20 years in the industry with no degree: Engineer is just a word. Call yourself that if it gets you the job.
[+] jventura|9 years ago|reply
This is what you can find on the wikipedia entry on engineers [0]:

> The foundation education of an engineer is typically a 4-year bachelor's degree or in some countries, a master's degree in an engineering discipline..

I would add further that, following the above, a software engineer is someone who has a formal higher education in engineering applied to the design and implementation of software systems. Under these definitions, a developer without formal university education is not a software engineer, although he may be technical competent to design and implement software systems. In a nutshell, the difference is not on "competence" or "skills" but the lack of formal education..

[0] https://en.m.wikipedia.org/wiki/Engineer

[+] Jhsto|9 years ago|reply
Sounds harsh, but knowing that Germans tend to be direct I wouldn't read too much into it. Also depends on the role. Universities teach programming from an angle which optimizes computation time over human time, even though that's rarely what industrial programming is about. For example, just recently I asked my professor can I reuse code which would achieve the required behavior in one line over creating a completely new approach. The professor asked me why would I want to do it inefficiently. I asked isnt it efficient to do it in one line rather than reimplementing the functionality. He said that you are technically wrong, but proceeded to show me how to do it nonetheless.

In addition, the programming languages used to teach things are old. We are still given examples in Fortran and C is taught on freshman courses.

The academic world is vastly different. For that reason, if I would personally apply for a software engineer role which is about web application development and I would be said that I need a degree for that, it would raise a red flag for me.

[+] hackits|9 years ago|reply
I don't see how you can say you're a Software Engineer when you don't have a national accreditation or standards body and peer review processes. Backed by research studies via Empirical evidence.

Electronic Engineer, Aircraft Engineer, ect... Have more standards and accreditation backing them up.

In other words half the fun is trying to figure out what they want.

[+] analog31|9 years ago|reply
From what I can tell, the main difference in the US is that most states have a so called "industrial exemption" which waives the license requirement for engineers who work for employers under certain conditions. Depending on one's field, (e.g., electrical and mechanical), most engineers are unlicensed.

Also, the law in my state is less concerned with the specific title, than about what people actually do. In general, professions that could affect public safety are regulated. That includes haircutting, K-12 teaching, and engineering.

Still, similar to what people do in Germany, my friends who have their own businesses, but are unlicensed, choose vague business names that avoid the words "engineering" or "design." My LLC is "technology."

[+] alien3d|9 years ago|reply
Title to me doesnt matter. I dont have degree either .Software arena moved to quick with lots of framework and new platform mobile. Most university will teach basic and some lecturer dont even understand what they teach at all.
[+] wildmusings|9 years ago|reply
If mechanical engineers were unregulated and built unreliable cars, they would still be mechanical engineers.

If doctors weren't a licensed profession, they would still be doctors.

If barbers didn't need a certification, they would still be barbers.

Defining an "engineer" based on how much regulation they must follow is kind of ridiculous. It's putting the cart before the horse.

Which is not to say that the software field doesn't need regulation to improve the protection of customer data and the reliability of increasingly critical services.

[+] adityab|9 years ago|reply
I disagree.

Titles exist to provide an assurance to people that the services they get from title-holders will be above a certain standard, with the threat of a serious penalty if the work is sloppy.

This is the social expectation in many societies.

If I find that a doctor doesn't sterilize needles or wash hands, they should face a penalty (regardless of whether it actually caused damage). We shouldn't have to specify up-front in some contract that we want them to follow $RULES as a set of deliverables. This stuff is therefore regulated.

I used to think differently, but now I feel that software engineers should be similarly regulated. That doesn't mean everyone will now have to follow a ton of regulations to slap together the next nodejs app, those people can still be called developers. But whoever is an "engineer" should ensure that the work is well thought-out and should stop the developers they supervise from moving fast and breaking things.

It's time the industry "grew up" as a whole. If "software is eating the world", we need to be damn sure it's not sloppy.

[+] bArray|9 years ago|reply
>The term is probably a shortening of “software engineer,” but its use betrays a secret: “Engineer” is an aspirational title in software development. 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.

Well, at least in the UK, software engineers are uphold by the BCS code of conduct [1]. Our first responsibility is (at least should be) safety.

Like "traditional" engineers, we build the bridges and structures of the virtual world, but the impact on what we do can still have real life changing consequences. The fact that we aren't certified and regulated is a result of us being self-regulating, meaning that we can move quicker in our industry. Many other industries have this arrangement, such as advertising.

I would say that we are not as bound to delivering a fully reliable product, as long as there is enough in place to make it fit for purpose and safe. This is the same as engineering. Lifts regularly break down at our local library, but never do they suddenly plummet several stories. A bank App can crash, but never can it leak information.

[1] http://www.bcs.org/upload/pdf/conduct.pdf

[+] t_fatus|9 years ago|reply
> “Engineer” is an aspirational title in software development

Some engineers aspire to, allow me this reserved term, 'build' software. And doing so fulfill their role as engineers, by doing it correctly. Some of this software later is used by so depicted real-hardware engineers to model their bridges before starting building them, their planes before flying in them. Would id be possible without engineers in software ?

[+] throwaway2016a|9 years ago|reply
I think a lot (not saying all/most) of these comments can be summed up as:

No, Software Engineers are not engineers on a technical level but they do the work of engineers[1] and the fact the industry has not caught up doesn't make what they do any less engineering.

[1] They are using math to solve real world problems that have billions of dollars and in many cases lives depending on them.

For one, I am sick of being called "not an engineer" when I bear more responsibility in dollars and livelihoods and use math more extensively in my job than most mechanical and electrical engineers I graduated with. In college I took all the same courses as the "real engineers"... I'm only a few credits shy of an Electrical Engineering degree. The "technician" majors took different courses. Less calculus, less physics, etc.

Heck, my stuff gets attacked by hackers on a daily basis. Show me something a civil engineer built where they need to worry about the level of security needed to protect against something like that. No one blames the civil engineer because they didn't explosion proof the road.

In fact a lot of the firmware I have seen Electrical Engineers write is terribly insecure and poorly written. Stuff a well trained Software Engineer would feel embarrassed about.

No, we are not legally engineers. But we should be.

[+] creatornator|9 years ago|reply
Your main point aside, your experience having taken more math and physics courses than "technicians", and bearing "more responsibility in dollars and livelihoods and use math more extensively in my job than most mechanical and electrical engineers I graduated with" is anecdotal evidence. I am not even done with my BS/MS EE degree and I've already taken more math and physics than my CS peers will ever take. This will change from college to college and degree to degree. You are right about the state of firmware though--security practices in IoT are often pretty terrible. Perhaps that points to an inadequacy in the licensing/regulation system that we have in place. I think most people in the comments could agree that the word "Engineer" implies rigorous certification--once software development has the same, then it could be considered Engineering.
[+] coldcode|9 years ago|reply
My title says Senior Software Engineer. I didn't choose it. In fact it said Lead Software Engineer in my offer letter but a reorganization changed a lot of people's title to be more generic. I don't get to choose my title. I have always considered myself a programmer but what my employer calls me is their business.
[+] adityab|9 years ago|reply
For what it's worth, in Germany the title of Engineer is regulated and the correct term for those who write software (which goes in the contract) is "Software Entwickler" (Entwicklung means "development"). There's a few more complications here that I don't know very well.

I don't completely agree with this because serious engineering work on software happens in many industries. But most software jobs clearly do not fit the description nor the implied seriousness of an engineering role.

Other things that grind my gears:

1. The way the "Data Scientist" title is casually thrown around for those who are neither scientists nor know statistics. Everyone has a different idea of what the term means and (worst of all) feel that it probably applies to them.

2. "Tech" is a contraction for technology but people in the software industry (especially Americans) seem to use the term solely for Software.

[+] guitarbill|9 years ago|reply
Definitely true in Germany, I think it's also true in Australia and a few other places. However, the title "software developer" is also really common in English. Maybe even more common than "software engineer".
[+] eru|9 years ago|reply
I think "Data Scientist" is alright, you just have to keep in mind how fragile and rackety lots of actual scientific code is.
[+] techwizrd|9 years ago|reply
This article feels painfully misinformed. I am a brother of Theta Tau, the professional engineering fraternity. Many of my brothers are certified professional engineers (FE, PE, etc.) I graduated with a dual-major in CS/Math.

I strongly disagree with this assertion that failures in tech make us undeserving of the moniker 'engineer'. Software systems are inherently complex, and we have built incredible testing tools, processes, continuous integration, monitoring systems, and infrastructure to add strong rigor to our discipline.

As part of most engineering degrees, students explore case studies of where engineering went wrong and failed. I can assure you that there are many failures in civil engineering (see ASCE's report card), mechanical engineering, electrical engineering, and other engineering disciplines just as there have been failures in the tech industry.

Licensure is not as applicable to the tech industry, and certifications have been cheapened by low-quality applicants. They've become a negative signal. Additionally, the tech industry, in my opinion, innovates at a significantly faster pace than the licensed engineering disciplines. Perhaps these are correlated in some way.

Companies like Google are right not to overvalue degrees. If someone has the requisite knowledge and ability, it should not matter whether they learned from a book or on their own. Software interviews are significantly more rigorous that interviews in other engineering fields. Civil Engineers are not expected to be able to whiteboard open channel flow problems during an interview, but software engineers are expected to answer multiple interviews of algorithms and system design questions.

This article is just long-winded, useless rambling. Rage against Silicon Valley all you want, but we call ourselves engineers because we _are_ engineers. Software runs critical infrastructure in medicine, finance, aeronautics, traffic control systems, the electrical grid, and even the internet infrastructure used to deliver this nonsensical article. I suggest the author read about incidents such as the Therac-25.

[+] gspetr|9 years ago|reply
> Additionally, the tech industry, in my opinion, innovates at a significantly faster pace than the licensed engineering disciplines. Perhaps these are correlated in some way.

I think you're right. Regulation stifles innovation.

Even in a narrow sense, thinking software alone, everyone knows the saying "Standard library is where modules go to die", meaning that there are stricter requirements to make it to the standard library in the first place and stricter still to update them once they've made it in.

[+] ponderingHplus|9 years ago|reply
The term "engineer" is regulated in Canada, and only Professional Engineers (PE) awarded a licence by their provincial regulatory body can call themselves as such. Someone who graduates with an engineering degree is usually called an Engineer in Training (EIT), until they become a PE. The reason we regulate a specific word for our profession is because of our relationship with the public, and the ethical and safety promises engineers are regulated to commit to the them. The average person does not have the technical background to judge the proficiency of an engineer, so they must trust in their abilities and morals. In Canada, engineering is a self regulated profession designed to uphold high technical and ethical standards so that we can maintain that trust society gives us. The intention is, that when someone calls them self an engineer, you can have confidence in both their technical ability and moral obligations. To be effective, the standards of the term and definition of who can and can't use it needs to be regulated.

That being said, I normally refer to myself as a chemical engineer (not a chemical EIT). I think the distinction needs to be made when you're interacting with someone that you are offering your engineering services to. For example, when at work I would always sign my emails indicating that I was an EIT.

[+] Panini_Jones|9 years ago|reply
> The intention is, that when someone calls them self an engineer, you can have confidence in both their technical ability and moral obligations.

I thought the intention was that, even if someone didn't have confidence in both their technical ability and moral obligations, it didn't matter. An engineer is a person whose technical decisions are literally protected by law - if they decide to not sign off on something, they don't have to convince anyone and can't face consequences for it (ahem, Quebec bridge[1]). What you're suggesting is just a byproduct of confidence in the system.

[1] - https://en.wikipedia.org/wiki/Quebec_Bridge - Search for 'iron ring'

[+] williamdclt|9 years ago|reply
My engineering school deliver engineers diploma certified by the Engineering Titles Commission, which is the only thing in France able to allow a school to make engineers out of its students. Thank you goodbye, do not make generalizations from how it is in your country.
[+] Quanttek|9 years ago|reply
It's the Atlantic, of course they will take about the U.S. unless eplicitly mentioned otherwise.

Is the French software engineering diploma as rigorous as other engineering diplomas?

[+] l3robot|9 years ago|reply
It's almost the same in Quebec and I believe everywhere in Canada. Thanks for making this point clear!
[+] random3|9 years ago|reply
Of course programmers are not engineers. Nor are space shuttles controlled by software, nor nuclear missiles, x-ray machines, planes, drones or self driving cars. Nope that's all pure engineering. Zero software. And of course engineering is only about bridges and public safety and Chernobyl didn't fail because of a flawed reactor design, nor did the Fukushima disaster happen because of regulatory capture.
[+] dekhn|9 years ago|reply
Margaret Hamilton was a software engineer. Read up on the processes she and her team used to build the Apollo computer software and you'll realize, there really is a higher standard that software engineers could be held to.
[+] kemiller2002|9 years ago|reply
After I read this article I was quite upset, but really I wasn't angry as I was as much hurt. I actually don't like to call myself an engineer. I don't like the title, because I don't think it represents how I work and what I do. I don't follow a strict rigorous process, my job allows me to be free and agile (no pun intended) which is quite different from building engineers, mechanical engineers etc.

Where I live developers, programmers, etc. have never had the prestige that other science like professions have had. Most of the time when you talk about what you do, it's often a look of either confusion, or ambivalence because "Excel is on a computer, so programming can't be much different." A lot of companies belittle programmers, because "everyone can learn to program." Programming is hard, and this isn't to insult other professions. A lot of them are hard too. It's just that a lot of developers want to be respected for what they do just like everyone else and that's normally missing. This article, although in my opinion correct about not calling developers engineers, seems to ignore that what developers do is highly technical and quite complicated. Developers saying they're engineers puts that force of science and process behind it, and it's a defense from someone equating their basic class in HTML to mentally tracing how a request is going to trace through 100 servers in different regions.

Personally, I don't want to be restricted to being an engineer. I love the freedom to rapidly alter how I work, and most of what I work on will not cause harm to others. I am sure I speak for all developers, and what everyone really wants is to be counted among the other people who have challenging professions and respected for what is accomplished.

[+] Upvoter33|9 years ago|reply
Oh give me a break. People who build things (whether in the physical world or not) are engineers. Anyone who has worked at a serious software company knows it's an engineering profession. A more constructive approach would be to say "hey, here are some things engineers have learned over the years; perhaps some of them would be useful to those who build software for a living?"
[+] booleandilemma|9 years ago|reply
There is a title arms race happening with programmers.

If everyone is going to call themselves a Software Engineer on LinkedIn, and I decide to label myself as a Developer, or even worse, a Programmer, I'm going to miss out on opportunities that the "engineers" are going to get.

If you don't want programmers calling themselves engineers, just make it illegal for us to do so.

I know Texas and Canada already do.

[+] eru|9 years ago|reply
If you are relying on LinkedIn to get opportunities, you are going to miss out on a lot of them. (LinkedIn is a joke. And nobody gives a damn about what people call themselves.)
[+] threatofrain|9 years ago|reply
There are so many kinds of engineers, and I have little doubt that the author cherry-picked picked the situations that helped their worldview of engineers, while suppressing examples they don't like.

Like there are biomedical engineer, a hardware engineer, a petroleum engineer, the agricultural engineer, etc. These people don't obviously have a united ethic of placing public benefit first. The petroleum engineer is under no obligation to think of the public good. If anything, they are obligated to think of the employer's good.

To me, an engineer is a classification that separates you from a scientist. An engineer is mostly interested in applying knowledge, whereas a scientist is principally interested in producing new knowledge. The line is blurred when scientists are interested in applications, and engineers produce new ideas during practical circumstances.

In that way, a doctor is an engineer, but I'm not going to insist that doctors professionally rebrand themselves to fit my pet perspective.

[+] matteuan|9 years ago|reply
To be called Engineer in Italy, you need the specific degree and a special diploma afterwards. People from CS are an exception and they can access to the same title of the Computer Engineers. If you apply for a job with a CV that says you are an Engineer but you are not officially registered, you can be reported for fraud.
[+] kelvin0|9 years ago|reply
Pretty much the same here in Canada. In order to use the title 'Engineer' you need to 1) have completed your studies for an engineering degree at an accredited university 2) become part of your province's Engineering group with all this entails (exams,continuing education..)

Mind you, many who studied Computer/Software engineering do become accredited Engineers (as per the legal term in Canada). But even if you completed your studies, it doesn't automatically give you the legal right to present yourself as an 'Engineer'. You can choose or not to become a 'legal' engineer, but in the case of software it's usually not necessary. Of course, the case is different for people building bridges and infrastructures, they pretty much have to become 'legal' engineers to be able to be on such projects.

I find it's mostly in the US that the term seems to be used loosely. I might be wrong.

[+] psyc|9 years ago|reply
"Software Engineer" is a title. It is not, and never was, a type of engineer. It is exactly the same as "Software Architect" in this regard, which is not a kind of architect.

If a developer says "I am an engineer" it is only ever in the context of a tech company, where everybody knows what they mean. No programmer would say to their friends & family "I am an engineer" without any further context.

"Software Engineer" does not denote any additional rigor, no matter how much you want it to. It may or may not connote rigor, depending on a dozen contextual factors that will tell you much more about the presence of rigor than the title will. It's a title. It means computer programmer.

[+] ubersoldat2k7|9 years ago|reply
Right, my current title is "solutions architect" which has no meaning outside of the context of software. If someone, non-IT asks me, I'm a software developer.