Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Programmers: Stop Calling Yourselves Engineers (theatlantic.com)
140 points by _kcn8 on Nov 5, 2015 | hide | past | favorite | 66 comments


What about train engineers? Sound engineers? Sanitation engineers? That ship sailed so long ago, it did so on steam power. I'm not even going to read your article. Clickbait: denied.

Besides, yes, of course, the civil engineer, what if bridges fall, certifications, professional order, etc. What about the electrical engineer making a portable radio, or a cable? We were just talking about how those can be just as bad as software (https://news.ycombinator.com/item?id=10508494).

In contrast, the doctor has certifications, a professional order, etc. So does the lawyer. Are those engineers? No. Turns out those things have nothing to do with the concept of engineering itself, but rather with the kind of legal framework that is appropriate in some businesses that carry a high risk of personal damage to others, and/or with the desire and ability of certain groups to control access to a profession. All of which are tradeoffs, which means there needs not be a single set-point that is ideal across all fields of engineering. As any engineer could have told you.


"In contrast, the doctor has certifications, a professional order, etc. So does the lawyer."

That is the entire point. A Professional Engineer is the equivalent of a board certified medical doctor, or a lawyer admitted to the Bar in a particular state. In Ohio, a Professional Engineer is defined as http://www.peps.ohio.gov/4733/473301.aspx Restrictions are outlined at http://www.peps.ohio.gov/4733/4733021.aspx Note the exception for train engineers. You can use the term engineer as long as you don't confuse anybody into thinking you are a real engineer, i.e. sanitation. I like to call myself the Doctor of Love, but no one is going to think I'm claiming to be a real medical doctor.

There are legal consequences for claiming that you are an engineer when you are not. Check out the 2014 consequences in Ohio at http://www.peps.ohio.gov/NewsReleases/2014.aspx You get your name in print and in public for being incompetent and unethical. It is similar in all the other states.

The disciplines that can become Professional Engineers are listed on the right hand column here http://www.peps.ohio.gov/Exams/ExamDates%7CDisciplines.aspx Unfortunately, software engineering didn't make the list, although, electrical and computer did. I can think of circumstances where you would want software engineers to make the list. This is probably the result of corporate influence. PEs are more expensive. And a blanket Certificate of Authorization (CA) is cheaper. If you are an engineer via a company CA, you are only an engineer while working at that company.

You might claim that this is just rent seeking similar to a barber certificate. Yet, not many people die or have their lives ruined by barbers. You might get lice though.

It is interesting that you can no longer become a PE with a 4 year degree anymore that I am aware of. You used to be able to, although your apprenticeship was considerably longer.


cough US-centric cough


This is absurd. First, structural engineering in the developed world is insanely expensive because everything is overbuilt by at least 100% and teams of expensive senior people are hired to check every single number many times over the course of many months.

Software engineering, in contrast, is rushed out the door by typically over-worked, junior, and small teams. Blame the management, not the engineers.

But more importantly, this is totally beside the point, because the two problems aren't even the same: most software has to change constantly; structures mostly stay the same. The hard part about software engineering is designing for flexibility -- it's ridiculously easy to build software that never changes.

Oh, and by the way, it is extremely common to have significant structural flaws in major construction projects; they simply find ways to go in and fix them before the building collapses, but not always before leaks occur, mold grows, etc.


This is absurd for many reasons pointed out in this thread.

The broad brush is especially problematic. If "programmers" should stop calling themselves "engineers" because of the prevalence of poor quality software, couldn't one argue (equally speciously) that "writers" should stop calling themselves "journalists" because of the prevalence of things like listicles and clickbait? In journalism as well as software, the garbage seems to far outweigh the good stuff (by volume). And in both fields, some professionals are trained, but many are self-taught, and neither skills nor ethics are uniformly incorporated into all practitioners' work.

I believe there _is_ a legitimate issue around the quality of software. But I don't see how demoting the class of people who build software brings us any closer to improving that situation. Rather, I'd be interested to read a thoughtful article about _why_ low-quality software remains prevalent. (I have a feeling it's because bad software remains economically viable -- in turn because it's still actually useful to people. A bridge that falls down is useless. An app that crashes every day is very frustrating, but potentially still worth the price. I'm just guessing, of course, but that's why I'd love to see a well-researched article that seeks to understand the problem before prescribing a solution.)


I don't see it as a demotion. Au contraire! Engineers work under hard constraints - the laws of nature aren't subject to negotiation. Sometimes earthquakes bring down buildings and bridges, sometimes tsunamis destroy harbors, sometimes water floods destroy dams, not because engineers are malicious, but simply because it's impossible to do better. We programmers have the luxury to seldom run into the laws of physics as a hard constraint. The vast majority of the time, when software fails to behave the way it is intended to, it's simply and plainly because we made a mistake. It is in principle possible to write bug-free software, after all, software is nothing but a logical artifact.


I darted my work life as a civil engineer, mostly designing structural steel buildings. Now many years later I'm a data engineer at a big tech firm. My opinion: programming work is engineering.

I think the author simply has no idea what either field entails, and has proved me now to denigrate the worth of an English major's career.

Seriously though, there are so many kinds of engineering: Structural engineer Geotechnical engineer Chemical engineer Biomedical engineer Genetic engineer Mechanical engineer

Just to name a handful. Software engineer clearly fits.


I too am a Civil Engineer. I aspire to be a programmer. But programmers are not engineers! Engineer is a title of elites that everybody tries to steal. The guy who operates a crane is called a crane engineer. IMO, That is not engineering! The guy who repairs trains is also an engineer. IMO, that is not engineering. Engineer is someone who sweats through school, thinks about things in ways that have never been thought before, and can lose his job and license, for doing things wrong.

Software engineer is one of those titles taken by programmers for prestige. There are no calculations involved. There is just sweat. It is like calling CAD drafter, a CAD engineer for all of those times he sweats away on enormous drawings.

Engineer is a high ranking title, that bears command and direction, not a role done by programmers who listen to a manager grunt.


> There is just sweat.

Unless you're a junior developer you should be able to do more than just grunt work. If you think grunt work is all there is to software development, you frankly don't know what you're talking about.

I've worked with software developers in tech companies that plan and fine-tune code and data formats based on metrics like memory use and performance -- exactly the calculations you claim aren't involved in software.

The difference between software and physical objects is that the resource cost of producing software is zero so the difference between implementation and simulation is often non-existent. So unlike physical engineering where you necessarily need to run calculations because testing is expensive, you have a tight feedback loop that allows you to tweak a system under test in ways physical engineers could only dream of -- and even so, better simulation tools are already saving physical engineers a lot of number crunching.

> Engineer is a high ranking title

In your opinion. You already stated crane operators are called "engineers" too. That's the standard you need to compare "software engineers" to. Is software development more like engineering than operating a crane or less?

> done by programmers who listen to a manager grunt.

No true Scotsman, much? You're not seriously claiming engineers are never constrained by decisions from superiors, are you? The only difference I can see is that (like lawyers and accountants) engineers have skin in the game that disincentives following certain orders -- exactly what has been asked of software developers in the fallout of the VW scandal.


It sounds to me like you've never actually worked in software engineering. I'd estimate only 30-45% of my time in actually spent 'programming'. The rest of it is spent (re)designing systems, learning new technologies and techniques, creating infrastructure (monitoring, boxes, AWS structures etc), testing (though this is often programming but of a reasonably different kind) and writing documentation (even if it's not as in-depth as other engineering fields. I've actually been really enjoying work recently because I've spent the last 2 weeks mainly just programming and its been a lovely change. I'm not unsympathetic to the authors views on the lack of certification, and due to fast feedback loops software engineering is very different to traditional engineering fields but there's a lot more to software engineering than programming.


It's all well and good for Hacker News entrepreneurs to blather about egalitarianism, but the primary difference between an 'engineer' (a person with a Professional Engineering certification) and an 'engineer' (a person who touches a computer for money) is that one group is held responsible for their work, including explicit ethics standards, a governing body with certification-revocation powers, and a legal framework for enforcement of quality.

There has never, ever, ever, been a programmer who has been barred from programming for selling shitty code. There have absolutely been engineers barred from engineering for selling shitty designs.

The only way to make this (frankly uninteresting) argument end is to either hold programmers accountable for quality, or stop holding engineers accountable for quality. Until then, you're using one word to refer to two groups of people with wildly different work requirements, and there will always be people complaining about that.

Full disclosure: I have done both kinds of engineering for a living.


> the primary difference between an 'engineer' (a person with a Professional Engineering certification) and an 'engineer' (a person who touches a computer for money)

What about an 'engineer' (a person who designs components for a large corporation for money)? How are they a different bunch than a 'software engineer'?

> There has never, ever, ever, been a programmer who has been barred from programming for selling shitty code. There have absolutely been engineers barred from engineering for selling shitty designs.

There have been engineers who have had their licenses permanently revoked, but nobody has ever been "barred from engineering". Those are not the same thing (though I doubt a company is likely to hire an engineer who is so bad as to get their license revoked).

> The only way to make this (frankly uninteresting) argument end is to either hold programmers accountable for quality, or stop holding engineers accountable for quality. Until then, you're using one word to refer to two groups of people with wildly different work requirements, and there will always be people complaining about that.

The way I think it should end is for software engineering to be separated from computer science at the university level. ABET-accredited BSCS programs are practically that already, but most CS programs don't give a crap about ABET. So, scrap the BSCS and replace it with a full-ABET BSSwE and let the people with academic interest in CS get a BACS. As for non-degreed programmers, other engineering fields already have established practices for advancing a non-degreed technician to full engineer and those can be adapted to this field.


> What about an 'engineer' (a person who designs components for a large corporation for money)? How are they a different bunch than a 'software engineer'?

I can't answer this question, because "components" is too vague a word. You could be talking about software components, or mechanical components, or financial instruments... sorry, I just don't know what you're getting at here.

> There have been engineers who have had their licenses permanently revoked, but nobody has ever been "barred from engineering". Those are not the same thing (though I doubt a company is likely to hire an engineer who is so bad as to get their license revoked).

An unlicensed engineer is not allowed to identify as the engineer-of-record for contractual purposes; that is, they can no longer 'stamp the drawings.' Sure, a company could hire a defrocked ex-PE to do the work, but they would still need an active PE to sign off on the work ('stamp the drawings'). So while obviously nobody is physically restraining them from installing AutoCAD, they are not able to meet (common) contractual requirements in engineering work.

> The way I think it should end is for software engineering to be separated from computer science at the university level.

I completely agree with your assessment, except that I don't see CS as being B. A. material, since it's basically applied mathematics, which has traditionally been B. Sc. territory.


> I can't answer this question, because "components" is too vague a word. You could be talking about software components, or mechanical components, or financial instruments... sorry, I just don't know what you're getting at here.

I meant literal electronic and mechanical components.

> An unlicensed engineer is not allowed to identify as the engineer-of-record for contractual purposes; that is, they can no longer 'stamp the drawings.'

Correct. However, firms operating under a Certificate of Authority do not require a specific engineer to 'stamp the drawings'; the firm itself can do so. This is common with respect to mass-produced consumer goods and things of that general nature. None of the engineers who actually did the work need to be licensed, but they are still engineers. The CA thing may be unique to the US, though.

> I completely agree with your assessment, except that I don't see CS as being B. A. material, since it's basically applied mathematics, which has traditionally been B. Sc. territory.

I was getting confused by the BA in Physics. You are right, in that the BS in Physics is what you take if you want to "do physics", so a BSCS would still be appropriate for those who want to "do computer science".


«The way I think it should end is for software engineering to be separated from computer science at the university level. ABET-accredited BSCS programs are practically that already, but most CS programs don't give a crap about ABET.»

The deeper problem is that most of the industry doesn't seem to care about degrees, much less ABET accrediting. I have two ABET accredited degrees (BSc, MEng), but that doesn't seem to matter in the slightest to a large number of the companies that I've applied to/interviewed with.

The bootstrapping problem here is that accredited degrees and licensure don't matter until companies say they matter and companies won't feel they matter until other companies decide to start requiring them.

In my current job I've started to see first hand a bit more that I previously saw as to how accreditation and licensure matter to other engineering fields and what that means, and it is eye opening to compare to software right now.


I can agree in principle. But 'Software Engineer' means what it means - someone who can not only code, but manage, design and perhaps architect. Someone with facility in tools of the craft. They have existed for decades under that name.

I'm not at all sure the existence of engineering societies and licensing is the litmus test. That they exist is undeniable. But that also varies state by state. And not all fields have anything like uniform standards.

Software Engineer fits very nicely into this ecosystem.


Maybe software "engineering" just isn't there yet.

I don't get the feeling that there practices and processes that everyone writing software agrees are the absolute right way to do things. It seems more akin to a craft than to an industrialized application of basic science, like a bridge or ship.

What is the equivalent of Newton's Laws, for software? What is the equivalant of logarithmic tables and books of standardized information on materials? What are the equivalent of standard alloys and formulations of concrete?

I think that programmers and software companies will eventually be held accountable for quality. But first, there needs to be some strong consensus around how to measure and test for software quality. That might take a while.


Where are the equivalent reams of standardized information for Electrical Engineering (circuits)?

Circuit topologies are like design patterns. Lists of components are like package repositories. Datasheets are API documentation - both are fields where the majority of details you have to deal with were decided by someone else.

It's interesting, when viewed through the lens of this discussion, EE seems like an early form of software - using specific materials for their ability to stay out of the way, seeking components that are a mathematical ideal, extremely reconfigurable, complexity is the enemy. Which isn't surprising - it's not like people were blind to the advantages of abstraction before computing.

Perhaps EE was the horse running out the barn door with the term "Engineer", but he's long gone now.

(Mechanical Engineering is in a similar position - there are many people that you would call engineers, but they're not PEs nor responsible to one. Safety is achieved by product regulation and testing, rather than a trusted creation process)


I know the least about EE of any engineering discipline, but aren't there standardized ways to analyze circuits? Are there analogous standardized ways to analyze a piece of software?

My understanding is that electrical engineers come out of school, and often go right to work professionally. Whereas graduates of computer science or software engineering college programs sort of famously are usually bad at building "real software" until they've served an apprenticeship of some kind.

I mean, a datasheet describes a physical thing that doesn't change, right? If you install a hardware circuit, it's going to work the same way until entropy takes its toll. Whereas APIs and packages are far more complex, and change constantly.

I agree that EE is the obvious precursor to software, but I think they are very different today. Companies that were great at EE--like HP, Sony, Phillips, Toyota--have struggled with software.

Electrical engineering at least has a few hundreds years of electricity physics experiments and theory behind it. If we think of the basic science of software, I think of computer science or information theory. Neither is much over 70 years old at this point.


> aren't there standardized ways to analyze circuits?

There are basic quantities (current, voltage, time), and every component has an associated formula that model how they behave. But software is similar in that every instruction (eg opcode, function, or program statement) has equivalent well-defined behavior.

> electrical engineers ... often go right to work professionally

Sure, but they still start off slowly and work under someone more senior. They certainly don't come out of school with an understanding of what circuit topologies are practically used or a great intuition of which factors actually decide designs.

> Whereas APIs and packages ... change constantly

Only if you constantly change them out! Chips have revisions too. All of these differences strike me as being about scale of complexity, rather than full on new phenomenon. And it's true, for electrical engineering complexity is bounded by cost, even though there can still be a lot of complexity in a cheap chip (but the manufacturer is incentivized to get this exactly right, too). Whereas with software we're often burning GHz chips to perform the same function that 5MHz micros handled just fine.

So I think the root of the disagreement is whether you approach it "from the top" or "from the bottom". My above argument is coming from the bottom - EE battles a lot of similar facets as software, just a lot less complex.

If you take software engineering as being fundamentally about managing complexity (and therefore imply that it couldn't really get started until we had horsepower to waste), then I'd call that viewpoint "from the top" in a sense. Which is probably more appropriate, especially as complexity grows and grows.

But that doesn't mean that the "bottom" "fundamentalist" viewpoint is useless, either. It's not that engineering principles are inapplicable to software, but that they are ignored as a result of the environment the discipline finds itself in. One way to change that environment to encourage more rigor is to change the culture of the field, which IMHO can be helped by calling it "Engineering" and pushing it more towards so, rather than modeling the culture around eg flaky webcrapps.


Thank you, very interesting insights that I hadn't thought about. I think you're right that the essential difference is complexity, and I am taking a "from the top" view.

It makes me think of the various disciplines within science. In theory they are a single stack--chemistry can't violate quantum mechanics, because chemical interactions are just very complex quantum mechanical interactions. But they're so complex that the mathematical tools of quantum mechanics can't be practically used for chemistry (beyond super simple reactions). For humans to analyze and manage chemical reactions, we had to invent a new set of analytical tools that are specific to the level of abstraction that we call chemistry.

And again, on top of that goes biology, which is after all just very complex chemical reactions. But we don't use chemistry equations (or quantum mechanical equations) to analyze genetic disorders.

Maybe software is sort of akin to biology. It's just super complex circuit design, which is itself complex applications of basic electromagnetic theory. On the way "up from the bottom," each time the complexity gets to be too much, we have to invent new mental tools to manage the system at a new level of abstraction.

Are the mental tools for software as robust as they are for circuit design? I think about the implications of security when it comes to APIs and packages. I might not want to update my package, but what if a major vulnerability is disclosed and patched? Now I have to update it, and because security and features are often pushed to the same production branch, I might get breaking changes with the patch. I know not every API and package does this, but it seems like many do. Old release versions are only supported for so long, typically. And depending on the patch, it might not even be possible to maintain complete compatibility with old APIs.

I agree with you that the key is culture. I've felt a significant shift in managing websites over the past year due to security. Instead of days to apply open source community patches, I only have hours, or maybe minutes. The default is shifting from "test security patches before deployment" to "deploy security patches instantly then see what we need to fix," because it's harder to recover from a hack than to adapt to documented breaking changes.

I think the implications of security are only just now beginning to percolate into popular consciousness, which will create demand for higher standards with software "engineering." Look at the recent car hacking stories, or the Ars Technica coverage of IoT security, which got picked up by NPR among others.

Thanks for good discussion.


"But first, there needs to be some strong consensus around how to measure and test for software quality."

Liability for damages seems a start, though as I have said repeatedly I think it should rest first with whoever deployed the software in question.


It's a particularly vicious kind of law and order conservatism, to invent the punishment before one invents the law.


What happens with the train 'engineers' then?


> There have absolutely been engineers barred from engineering for selling shitty designs.

This is patently false. Engineer is a title that can be applied to a person in countless types of engineering. Your statement simply cannot be true as it's not even feasible to bar someone from all types of engineering.

> Until then, you're using one word to refer to two groups of people with wildly different work requirements, and there will always be people complaining about that.

No it's the same word. There are people who engineer physical things that do not require certifications, governing bodies, etc.

You're drawing a very, very dotted line saying one side is an engineer and the other is not which is just arbitrary.


I think the real cut is not responsibility per se. The problem is that the work "Engineer" means both a degree and profession at the same time. Witch was fine when there was lots of overlap.

But degrees and responsibilities are often closely related.


A great example of what computer "Engineering" can look like is the On-Board Shuttle Group (Lockheed/NASA).

http://www.fastcompany.com/28121/they-write-right-stuff [1996]

"This software never crashes. It never needs to be re-booted. This software is bug-free. It is perfect, as perfect as human beings have achieved."

"The most important things the shuttle group does — carefully planning the software in advance, writing no code until the design is complete, making no changes without supporting blueprints, keeping a completely accurate record of the code — are not expensive. The process isn't even rocket science. Its standard practice in almost every engineering discipline except software engineering."


Hm. 3 years later Lockheed/NASA's "perfect" software led to the Mars Climate Orbiter's failure, right?


This is one of those flame wars that never seems to die down. Really though... who cares? A lot of certified engineers do nothing more than simple paper pushing, should we start flooding medium with articles about that as well?

> The title “engineer” is cheapened by the tech industry.

A lot of 'cheap' techies are making way more money than officiated engineers


That's not at all what is meant. I hope you don't mean money is what makes the engineer.


I have a lot of friends who have passed their fundamentals exam (FE) and are on their way to become 'professional' engineers and I can guarantee you many accredited professional engineers do work that I would have a harder time calling engineering than a front end dev creating HTML files. Credentials certainly don't make someone an engineer, and neither does pay.


Cheapening in this case refers to the meaning of the word. In this case the word "engineer" or "engineering" is cheapened as anyone can call themselves that regardless of their output. Engineering should be about lasting structures or things that just don't fall apart (provided that's the goal) than just slapping a bunch of junk together. Or to put it another way: the currency involved here isn't physical money.


This just reeks of no-true-scottsman. Many engineers with the approved title 'professional engineer' do not build anything at all.

By PE I mean: http://www.nspe.org/resources/licensure/what-pe


I would say this is the best definition of an engineer... "An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics, and ingenuity to develop solutions for technical, societal and commercial problems. -- Wikipedia" What really matters is the applied scientific knowledge and ingenuity to benefit mankind. The liability aspect shouldn't be the key differentiator.


"Doing so undermines a long tradition of designing and building infrastructure in the public interest."

(from google) Infrastructure : the basic physical and organizational structures and facilities (e.g., buildings, roads, and power supplies) needed for the operation of a society or enterprise.

In some countries, Facebook is viewed as "the internet" and the rest of us consider it to be just another social network (albeit one of the biggest) - and for all accounts, the internet is just as important if not more important then some utilities - a company can survive without water (technically) - some companies now a days can't survive without an internet connection - their 100% internet based.

Therefore - I'm an engineer - I build buildings (websites) that allow people to do things - be it educational or informational or to sell stuff.

... i completely understand the argument being made but it can be made across the board - Is a parent that home schools their kids a teacher? Is an employee at McDonalds a chef? Is a PHD a doctor? All titles have different meanings when used in different context.

</getoffmylawn>


I bet most people that cook food at McDonald's would think you were mocking them if you called them a chef.


True, but I bet most people pasting snippets of jQuery into Wordpress would be equally surprised if you called them engineers.


Whether a PhD is considered a doctor is a cultural thing. In Germany for example, "doctor" simply implies a PhD/MD or similar (and in fact calling yourself one without a matching degree would be criminally fraudulent) -- although that seems to be changing thanks to the influence of American media and less emphasis on titles (and likely not least because of a large number of politicians having been revealed to have cheated to get their degrees).

Other than that I agree.


Audio engineers should too? The author of the article seems to be willfully ignorant of the fact that some words have more than one meaning.


And don't forget train engineers.


And sanitation engineers.


And sales engineers, which the author has apparently never heard of.


Where I come from (Canada), you can't call yourself an Engineer unless you are certified as a Professional Engineer by the appropriate licensing body. This is similar to the fact that you can't call yourself a Lawyer or a Medical Doctor unless you have the appropriate certification. It's not a matter of fussiness. It's just that there are certain niches for professional behavior and those niches have evolved a process to prevent those without appropriate qualifications from marketing themselves using those names. There are also, broadly speaking, liability ramifications for the people in all of those occupations.


Where I come from (Germany), you're not allowed to do car paint jobs unless you're a certified varnisher. A lot of job titles have similar restrictions.

These restrictions have more to do with the history of these professions than with their intrinsic qualities. In Europe a lot of them can be traced back to the late middle ages -- and in North America they can generally be traced back to Europe.

I agree that these terms may have legal implications in some jurisdictions, but that's irrelevant to the discussion of whether they are accurate.


We have certifications in different parts of tech that are not exactly the best indicators of knowledge / skill either (see: MCSE, RHCE, CCNA, CCIE, Java certifications...) so one of the distinguishing factors I see is not a level of formalization / standards but the adherence to standards as consumers of an industry's output. For example, there's not a lot of start-ups making skyscrapers, so the market for those selling the construction becomes large entities like governments and corporations, and the standards become ones that they care about. This is similar to how software is sold to the government, which is completely different than how it is for consumer software. But few people buying Wordpress are willing to buy some mythical Enterprise Edition that's $100k / mo with an operations team at your service basically, so the cost of paperwork pushing involved for the bureaucracy-driven customers is removed at the cost of perhaps some corners cut.

However, I see quality output as a false dichotomy (rather, negative correlation) with bureaucracy / regulation of an industry's workers - look at the horrendous crap being produced for the Pentagon. Forget the glitzy articles in Wired and Techcrunch for defense-tech companies - most tech for government is done by under-qualified folks trying to make a quick buck off of Uncle Sam that couldn't really make it in the commercial software world. They'd be hard-pressed to make anything even close to some Chinese knock-off of a tech product if it came down to the wire. But I suppose this is because most defense contracts are regulated based around political and social requirements (see: the advantages for being a disadvantaged minority in getting a defense contract, plus Veteran's preferences) rather than actual functional requirements. Maybe the medical software industry is a better example of regulations in the right place (not that it's well done).


This is a silly argument, but I feel compelled to participate.

The distinction is pretty difficult to make. Where does electrical engineering cross into computer engineering, then into software development? If your program runs on a FPGA, is that engineering or software development? If you program mathematical models for controlling boosters for satellites, engineering or software?

Is the distinction the person writing the software? A ChemE writes a program to control the dispensing of certain chemicals to maintain a reaction is engineering, but if a guy without a degree does the same, it's not?

Like it or not, software is a major component to engineering. We have progressed to the point where lots of products cannot be made without some level of computing.

The argument that "simple" software is somehow not engineering is also bunk. Mech.Es design mundane shit all the time. Somebody makes money designing door handles and light switches. Just like people make money building apps.


I wouldn't call myself an engineer, however I know some Developers who _ARE_ Bachelor of Engineering or even Masters. In Germany SOME Information Technology courses will get you this title instead of the Bachelor of Science.

However thats just a title an official title and I don't care so much about that, since that says nothing about how much you could do. since mostly the newer generation with these titles knowing less and less. Btw. I also don't like people who care too much about it, they are mostly the 'bad' ones out there. if somebody would call me an engineer, fine. however I would never call myself so.


Ok, so i just read this incendiary article titled Programmers: stop calling yourselves engineers. First, it was terribly written and researched and i can only imagine the author had very little respect for his fellow man. Second, Let me clarify that the word engineer is more a verb than a noun. It describes an action, not a person. We engineer a solution to a problem. We are all engineers in our own right. We solve problems that are important to us. This is the one downside to the freedom of expression the internet provides.


I self-identify as an engineer. I have not had the operation yet but, you should not discriminate against me.


I refuse to oblige this clickbait. The headline is so blatantly (click me! please! I need attention!)

Seriously though, Software Engineers will maintain the status of engineers whether they like it or not. And that's because it is real engineering work. Licensed or not that doesn't matter one bit.


In this article someone who can't handle the fact that there are multiple types of engineers.


Also stop calling yourselves architects. Job searching has become even harder.


ooohhh this one actually does bother me sometimes. Probably not for the same reason though. We've had a few guys proclaim themselves as "Software Architects" after just a few years of bug fixing. They seem to do it to distinguish themselves from the rest of the less gifted masses. One of our guys with the same level of experience as everyone else couldn't be bothered with scripting all of his database schema changes (which was a boring and tedious task because of how we managed changes at the time, and he didn't bother to keep track of them as he made them) because he was an "Architecture guy". A title that he gave himself and was in no way reflected on his resume.

If there are Software Architects they are very senior and experienced and hired into a position that asked for a Software Architect. They design entire systems not just a page here or there.


It's clear people are using software architect due to the prestige the name brings.


If you have ever dealt with actual architects it should be obvious there isn't anything prestigious about architecture. Sure, a small handful of elites gets to plan really cool projects but the same is true for most industries -- everybody else just does boring grunt work.

The reason they call themselves software architects is that they're mostly working on software architecture. Granted, the title is overused because scantly few companies have the scale at which it makes sense having a dedicated person for that but I've seen plenty of "art directors" prettying up PowerPoint slides, too.

The problem isn't that there is no such thing as "software architecture", the problem is that it's usually not useful to extract it into a separate role (although that doesn't stop people from trying), making the title more ceremonial than descriptive.


What should someone who designs complex systems, databases, networks, etc call themselves? Engineer?

They're not developers, so what is the appropriate term you would apply to them?


"Designer"

Architecht is crossbreed between civil engineer and an artist. "Software architecht" should logically be front end designer/manager.


Yeah, because calling yourself a designer is going to lead to far less confusion than engineer or architect.

"Software designer" sounds like it belongs with "web designer" and "print designer". "Software architect" and "software engineer" won't confuse anyone looking for an actual architect or any of the other various flavours of engineers.


Tell that to our employers. As for myself, I'm fine with 'programmer' or 'software developer', but my employer(s) often like to spice the titles up a bit.


Yes, it's amusing to me the various titles I've had over the years, given to me by different companies. Assistant Web Manager. Developer, Applications, Web Applications. Senior, Lead, Developer/Analyst II. Web Administrator. Consultant. And Software Engineer. You might think the roles and responsibilities for these would vary greatly....


Titles are much cheaper to pay with.


Think Bogost fairly captured the trade. So, raises the question what do we call folks that earn a living working on something until some else says its good enough?


The following is from my personal perspective as a lead front-end engineer.

The author mentioned multiple times that civil engineers build bridges. Cool. Bridges are static. Updating a bridge is logistically difficult. You need expensive, heavy machinery. You have to redirect traffic. There are huge safety concerns for anyone standing below the bridge. Some of these things ring true for software engineering too. Voyager I has travelled almost 20,000,000,000 (thats 20 billion) km since it left earth[1]. Hong Kong's subway system transports over 5,000,000 (5 million) people every day and boasts a 99% on-time rating [2]. Google's autonomous cars have driven themselves over 1,250,000 miles since 2009 [3]. What do Voyager, Hong Kong's subway, and Google's cars have in common? They are all powered by software.

I don't dispute that quality is one of the first things to go at most startups, but to say that software engineers aren't "real" engineers because we have different goals and constraints is absurd. PEs (professional engineers) are generally concerned with quality, safety, and efficiency above all. This makes sense because trains, planes, and automobiles can't easily be fixed if something goes wrong. Remember the Toyota fiasco in 2009/2010 when the cars' gas pedals were getting stuck? The driver couldn't stop the car and this resulted in at least 10 deaths and a settlement of $1.1bn [4]. That settlement doesn't include the ~$3bn that Toyota spent in recalls, probes, and redesigning the gas pedal[4]. These are not issues that most startups face. We optimize for fast feedback loops that give us reliable data which we can use to improve the experience of using our product. In many cases, quality is sacrificed in favor of speed-of-development. Is it perfect? No. Is this engineering in the traditional sense? No. Does that mean we aren't engineers? I don't think so.

Building a rocket is difficult from a technical perspective. However, I believe that, in some ways, building a web application is even more difficult. Rockets are not concerned with human behavior. The few humans who will be interacting with the rocket are highly technical and have been through months or years of preparation. That's not the case in the work that I do. On the web, you must account for the knowledge and experiences of every individual using your product. The goal is to come up with solutions that anyone can intuitively understand without explanation, regardless of whether they've been using computers their entire life or if this is their first time. This is inherently a ridiculously difficult problem to solve because of human nature. Accomplishing this goal requires building complex systems that can handle interaction from thousands or hundreds of thousands or millions of individual people, each with their own unique perspective on life and technology. Moreover, there are a number of highly complicated back end systems for things such as automatically scaling infrastructure to meet demand, pipelines for collecting and analyzing logs and data, and storing and retrieving data in an efficient way (in some cases, sub-millisecond analysis over billions of rows).

My point is that this article seems to have been written by an elitist person who does not understand the work of the people they are condescending to. I agree that, in general, software should be of higher quality, but compared to mechanical, electrical, and civil engineering, software is still very young. We are learning the ways of traditional engineering, forging a new path towards reducing time-to-market for new products, and inventing and building for a relatively new platform (the web) at the same time. There will be bumps in the road. That does not take away from the fact that software engineers solve difficult technical problems, which I believe is the essence of engineering.

[1]: https://en.wikipedia.org/wiki/Voyager_1

[2]: http://www.cnn.com/2015/03/29/travel/hong-kong-mtr-success-s...

[3]: http://techcrunch.com/2015/11/02/google-self-driving-car-upd...

[4]: http://www.wsj.com/articles/SB100014241278873246691045782034...


Alas, society can't call us programmers engineers simply because "our job is difficult from a technical perspective". Otherwise, doctors are engineers, athletes are engineers, and suddenly the term "engineer" doesn't mean anything anymore.

I do think we programmers in general deserve more respect from society at large for what we do, but pretending to be something we are not (engineers) doesn't help our case.


Counter-point: until my country adopted the BA/MA system, the typical outcome of studying computer science would be a degree that literally contains the word "engineer".

Job titles are a cultural thing and mostly cosmetic. Most engineers don't do much engineering in their actual job.


If I understand the gist of it, we can't call ourselves engineers because true "engineers" are blessed from on high by some self-ordained group, and given special rings while reciting a poem during a ritual? (yes, that's apparently a thing).

His problem is that his definition of engineering is ancient, not that many of those writing software aren't engineers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: