

Ask HN: Difference between programmer, developer, and engineer? - rokhayakebe

Ask HN: Difference between programmer, developer, and engineer?
======
ams6110
I'm of the old school I guess, and I think "Engineer" has a special meaning
that generally does not apply to what most software developers/programmers do.

To me, the term "programmer" connotes a person who is performing more or less
rote translation of specifications or a detailed design into software code.

"Developer" connotes a more holistic involvement in the entire process of
constructing software applications.

YMMV.

~~~
rbanffy
Indeed. Weinberg's Second Law states "If builders built buildings the way
programmers wrote programs, then the first woodpecker that came along would
destroy civilization".

I am glad engineer is not "synonymous" with "programmer".

~~~
hasenj
Tons of companies refer to their programmers as engineers; "our engineering
team is working on the issue".

~~~
rbanffy
It's specially insulting when said "engineers" build things like Sharepoint...

~~~
dheerosaur
It's even more insulting when they are used just to fill some Excel sheets and
monitoring logs.

------
krschultz
Having both a mechanical engineering degree and a comp sci degree, and having
had jobs in both fields, I really think most software creation is not
"engineering". I prefer software developer as the proper term.

When I was a kid, I built a lot of things for fun. I would tinker in the shop
and build a go kart or a boat. If it broke, I made it stronger. It was fun,
creative, and looked a lot like engineering when I was playing with machinist
tools. There was even a lot of intuition and experience going into the
designs. But that wasn't engineering.

Right now I'm doing some engineering. I have a CAD model open and I'm building
a mathmatical model of the stresses imposed on it. We iterate the CAD model
based solely on the math. The draftsman had made a first pass at it, I came
back and said these areas need to be strengthed and these can be lighter, he
adjusted the model, and we rechecked the math. There was never a real part
created because it is simply too expensive. The cost of this part, once forged
and machined, exceeds $85k. So we will be working on the model and tweaking it
until we have a design that we know works. And then we'll both go on to do
other things and at some point a few months from now it will get made by other
people who I probably will never even meet and then I will show up again when
we test it.

In contrast, most software developers work directly on the final product.
There is no model. You might make a spec, a test suite, a UML model or sketch
of how you think it should work, but there is no testing on that. That is a
hypothesis not a model. Nobody ever stands there with a UML model in a
production envirement and runs tests on it for twice as long as it would take
to code it.

So software developer seems like the right name to me. This is far from a
knock on software development. A lot of times I think engineering is more
straightforward. I either pull formulas out of a book or plug it into FEA
modelling software and look at the pretty colors. But the "engineering" part
of the title for me speaks to the process I employ not me being superior to
anyone who is not an engineer. I just think "software engineer" is a funny
title for people who write code on the final product 99% of the time. We don't
call designers "photoshop engineers" even though a lot of them are super smart
and super skilled at what they are doing.

------
intellectronica
80s, 90s and 00s. The increasing demand for and status of programmers resulted
in titular inflation. In the late 80s - early 90s the popularity of personal
computing brought many people who would previously look down on programmers
into the ranks, and in order to sound more appealing they started calling
themselves "developers" (Microsoft played an important role in this
transformation - they correctly identified programmers as one of their most
important group of customers and probably figured calling them a fancy name
would help customer loyalty). Google may be identified as responsible,
indirectly, to the second transformation. Unlike other companies Google did,
in fact, hire many engineers (people who were trained as engineers, that is)
and created a climate in which doing anything useful on the web begets the
title.

------
itcmcgrath
A programmer programs computers, a developer develops real-estate and an
engineer engineers engines. Just kidding, obviously.

The question is highly subjective to the organisation using those titles, but
generally you will find Programmers, Software Developers and Software
Engineers perform the exact same role.

I've notice some people do get a bit touchy about what you call them though...

By the way, this has been discussed to death on StackOveflow
[http://stackoverflow.com/search?q=Difference+between+program...](http://stackoverflow.com/search?q=Difference+between+programmer,+developer,+and+engineer%3F)

------
golgo13
Here in Texas, I've always heard that you cannot call yourself any type of
engineer without being licensed as a Professional Engineer. Is this still
true? This came about when the MCSE was still around.
[http://en.wikipedia.org/wiki/Microsoft_Certified_Professiona...](http://en.wikipedia.org/wiki/Microsoft_Certified_Professional#Microsoft_Certified_Systems_Engineer_or_M.C.S.E).

------
lylejohnson
This seems like an appropriate thread in which to mention Glenn Vandenburg's
presentation on "Real Software Engineering". He's made this presentation
several times over the last year; I happened to see it at the Ruby Hoedown in
Nashville this summer. Highly recommended.

 _"Software engineering as it’s taught in universities simply doesn’t work. It
doesn’t produce software systems of high quality, and it doesn’t produce them
for low cost. Sometimes, even when practiced rigorously, it doesn’t produce
systems at all.

That’s odd, because in every other field, the term ‘engineering’ is reserved
for methods that work."_

[http://confreaks.net/videos/282-lsrc2010-real-software-
engin...](http://confreaks.net/videos/282-lsrc2010-real-software-engineering)

------
hasenj
It's all semantics.

It comes down what's the definition of engineering.

I personally think we shouldn't look for metaphors in other fields with
"science" or "engineering" in their names.

A program is a programmer. Developer is also fine, but it implies a bit more
than programmer.

Programmer can be someone who just programs the machine to implement the ideas
of someone else (product managers).

Developer implies someone who develops these ideas, not just implements them.

I think "Hacker" is a fine word to describe a programmer/developer. It implies
a sense of ownership and pride and craftsmanship.

------
ibejoeb
Just the other day I was actually thinking about this and about how the titles
often don't imply job function. I jotted something down that I was hoping to
elaborate on, but haven't done so yet. So as not to seem like a shameless
plug, the URL in my profile anyone's interested. Not much to see, but perhaps
someone has thoughts.

------
blahblahblah
Programmers write code to someone else's specifications. They're not
responsible for macro-level design. A developer is intimately involved in the
design of the software and also writes code. An engineer applies scientific
principles to design useful systems that act upon the real physical world or a
mathematical model of it.

------
cancelbubble
Engineer seems to be the preferred choice I see nowadays. The name seems to
infer higher prestige, IMO. Kind of like web designer -vs- User Interface
Engineer or even just User Interface Designer.

Gotta have them fancy titles, you know?

