Hide this message.

When did everyone start calling programmers "engineers"?

This question previously had details. They are now in a comment.

Have this question too? Request Answers:
Request From Quora
We will distribute this question to writers, and notify you about new answers.
Requesting From Quora
We're finding writers to answer, and will notify you about new answers.
17 Answers
Tim Bright
Tim Bright, Finds it interesting that TV schedules are called "programming"

In my case, the title of "software engineer" is different since I am a software developer with an engineering degree (mechanical). I think it applies nicely to what I am and what I do.

However, there is a big difference between being a computer scientist and being a software engineer and there's an interesting parallel of this in mechanical engineering too.

Originally the field of what we call "engineering" today was the province of polymaths that studied basic physics and mathematics. Indeed many of the things we study today are named after mathematicians (Bernoulli-Euler beam theory, Cauchy stress tensor, Hooke's Law, etc.). This was the attempt by scientists to model the physical world around them. Others took these mathematical tools and applied them to the design process. These individuals were only concerned with manifesting a working version of a mental vision and they cared only about applying these formulas and rules. It was these folks that were known as "engineers".

However, they quickly realized that the idealized models were failing to produce the promised results. Not everything had been taken into account. More experimentation and modeling needed to take place. Physicists, mathematicians, and engineers themselves took it upon themselves to more accurately model the physics they needed. In fact, many people that were called engineers loved the theoretical work more than the actual design work and contributed by enlarging the engineering design toolbox. They are called engineers even though what they do isn't, strictly speaking, "engineering".

This is precisely what I believe happened in computer science. There was a lot of much needed theoretical work in the beginning of computing and we called those people scientists. We have a lot of theoretical tools at our disposal, but now that software runs the world, we have a problem with building applications. "Software engineers" are the people not concerned so much with the theory of computing but with the actual application of that knowledge to build applications. Just like in engineering, they create design rules that help avoid dire consequences for any application architecture. They care about solving the problem and scaling to meet usage first, and then consider performance. Maintainability and quality are on the forefront of their minds. In my mind, these developers are true engineers.

When did everyone start calling programmers "engineers"?

Michael Sinanian
Michael Sinanian, Product development for home networking and smart home
I ran these terms through the Google Ngram Viewer (a comprehensive word usage analysis tool through a large data set of scanned books) and here's what I got: [1]



I started with 1954, when the first high-level programming language (Fortran (programming language)) was invented, until 2008, the most recent available data set. [2]

I scanned for a variety of terms all synonymous with "programmer," the historical 'mother' word to describe the act of instructing machines. This is the detailed breakdown:

  • programmer: this term seems to have reached its zenith in the mid-80s and has steadily declined since then, despite the historical ascendancy of computers, technology, and the Internet to the forefront of our daily lives; even with decreasing usage in books, however, its usage trumps by a wide margin that of all other related terms
  • coder: surprisingly, this term was second most-popular for decades, until about after the mid-to-late 80s, when other terms started to outpace its usage; coder is the most "slang" of all these words and its usage in books prior to the 90s is surprising; it's more surprising that it's usage hasn't increased, as subjectively it feels like 'coder' is used much more often than before, but then again, only in the past 4 years (and mostly within tech circles), which the data set doesn't cover
  • hacker: starting in the mid-to-late 70s and picking up steam in the early-to-late 90s (over 20 years later), "hacker" then seems to have shot up around the turn of the century, now becoming the second contender to the word "programmer"; it should be noted that hacker's representation here may be less attributable to actual industry jargon and more to crime or fiction books involving computers, technology, and the Internet
  • software engineer: this term seems to be used the least, interestingly enough; first appearing after about 1985 and steadily rising since then, it's used about as frequently as "software developer"
  • software developer: a term that was introduced to books in the early 80s, steadily increasing in usage since then (roughly tracking the same usage as "software engineer")

The results thus seem to indicate that "programming" is still used far more often than "engineering," but only within mainstream usage (i.e. usage that can be tracked through the Ngram Viewer's English-language corpus).

This is not the "Silicon Valley" corpus, of which we may see wildly different results (but unfortunately is not a searchable data set). [3] However, this is much better than any subjective take on the question. "Data engineering," anyone?

It does make sense that "software engineer/developer" started to gain steam in the early 80s, after at least 5-7 years had passed since the introduction of personal computing and the subsequent industry it spawned in its wake: creating and maintaining software applications.

This also puts "coder" into perspective: coder is more analogous to programmer, where a person "codes" a machine similar to "instructing" it. That probably explains its popularity in the decades prior to personal computing.

I will also say that, using a construction analogy, "programmer" is more equivalent to "ditch-digger" while "software engineer" is more like "project manager" (or similar higher-up position). No body wants to work in the framework of "I'm instructing machines." But everyone would love to think of themselves as a builder (which "engineering" typically alludes to).

--
[1] http://books.google.com/ngrams/g...
[2] http://en.wikipedia.org/wiki/For...
[3] While the results are not "Silicon Valley"-specific, the data for "hacker" does seem to line up well with its increased usage in Silicon Valley, but this is just coincidence. Also consider that "hacker" used as an official job title like "Rails hacker" or "PHP hacker" has gained more usage only since about 2008, where our data set ends.
Your feedback is private.
Is this answer useful?
Nuno Reis
Nuno Reis, Computer Scientist, Movie Fan, Blogger, Digital Marketer

I am a computer scientist and when someone calls me engineer I feel insulted. My brother is a software engineer and he doesn’t want to be called other thing.

My assumption is that the work engineer was used to describe those who build things. The same way as architect was used to describe those that draw things and manager to the one that wants thing done. IT also adapted others words before to be better understood (keyboard, monitor, mouse, storage, folder…).

I consider development a science because each person has a different approach to solve a problem, we experiment, algorithms are our theories and they are valid until someone comes up with something better. An engineer just builds based in mathematical models developed by someone else. What’s fun in that?

Even if the name doesn’t limit what a person can in fact do, I consider that having anything but scientist in the description makes it sounds monotonous and dull.

About the when, we can always check on Google. Google Ngram on this case. Coder was used long before computers. Computer programmer was the first job-specific term (of the ones I could remember) then came CS, SE and SD.

CS started a small fall in the late 80s, but all the others took a blow in 2000. Maybe the .com bubble crash?

Now some other terms are rising like data scientist, machine learning specialist, and some strange designations like code ninja, jedi developer or unicorn hunter. If they feel comfortable with that, the name doesn’t matter.

Kent Palmer
Kent Palmer, Philosopher and Advanced Systems Theorist
My theory is that the shift happened around the time OO programming became the norm. Or approximately the late 80s when C++ moved the idea from "lab esoterica" status (i.e. Smalltalk etc.) to "practical tool." I'd put the date at 1991, when Stroustroup's second edition was published. I was in the 11th grade at the time, and I vaguely recall that's when I started hearing the term "software engineer." I'd learned C at that point, but I never did get to liking C++.

OOP psychologically forces you to think in terms of "building" programs rather than "writing" programs. It distracts you from the problem you are trying to solve with the program, and draws your attention to the code structure itself. Procedural programming feels like it's just about solving a problem and getting on with your life. OOP feels like it's about building a solution system that your grandchildren should be able to continue using.

"Building" involves thinking more like an engineer (since other engineers like ME, EE, AE, CE also use similar thinking processes for analysis and synthesis) and less like a writer.

Programmer has more writerly connotations, and before OOP it felt more like writing. It was easier to get into "stream of consciousness" type improv mindsets.

So OOP in a sense professionalized into an engineering trade what used to be more like an amateur art medium.
Andy Matuschak
Andy Matuschak, eighteen years of making computers bloop and blink
Software-creating roles are distinct and fall upon a spectrum: "software architecture" implies  system design and open conceptual problems; "programming" implies implementation of a totally-clear specification (i.e. "go build these well-defined components"). I like to think of "engineers" as folks who straddle these positions effectively.

But don't imagine that I'm suggesting "programming" implies inferiority: it's often useful to alternate between these roles. For instance, I will generally spend quite a while thinking through a problem on paper or whiteboard, and only once I have a fairly clear picture of my solution will I put on my "programmer" hat and start writing code—which, now that I've thought the problem through, I can accomplish somewhat mindlessly and with much greater velocity. Of course, I may discover in the course of programming some fatal architectural error which demands that I reverse roles once again.

The distinction in terms is still valuable, though, as you'll frequently meet people who can only perform one of these roles—indeed, most folks in software (regardless of title) are in this position! Treat with awareness and care the programmer who designs his solution while coding the first pass! You'll want to apply similar cognizance when working with a (usually very senior) architect who never writes code. Both of these people can be extremely valuable, but only when employed with care.

You probably have a fairly ingrained preference about where on this spectrum you'd like to sit. It's useful to be aware of that, too. For instance, I'm usually not very interested in problems with clear (albeit not-yet-coded) solutions; if I understand my teammates' preferences, too, I can try to ensure we divide up and pass around problems in a way that will all keep us interested.

As for why we've been inventing terms for these things in the last few years: the industry is growing at an incredible rate, which means greater specialization. An essentially vocational "programmer" (whose curriculum looked like "Java 101, 102, 103…" and lacked anything remotely analytical) might not help you solve the big problems, but he's comparatively cheap and plentiful. If you understand his abilities, you can still make good use of him.
Your feedback is private.
Is this answer useful?

This seems strangely tied into several things, though largely "title aggrandizement" and "hiring manager oddity" are two key factors.

The problem is that there is/was a difference between a "programmer" and an "engineer". The basic gist of the difference is, when referring to the mechanical field, the difference between a "mechanic" and an "engineer". A programmer knows how to write code to a specification and have it meet requirements. An engineer knows how to take the broad specifications he's been handled and turn them into the focused specification handed to the programmer and also how to define the requirements for the project from the broad specification he was handed.

A programmer can become an engineer, given enough time, some half-decent reference material and a good mentor or three. A lot of the big-names in computer programming were actually "Engineers" - if you can name them or have referenced them somewhere - they are likely "Engineers". (Dijkstra, Knuth, Hopper, et. al. are all usually noted (and likely even called themselves) "Programmers" but were most definitely Engineers)