As I was looking through some job offerings I saw that many of them require a software engineer, some a programmer and some a developer.

Is there any difference between a programmer and a software engineer? Or are they all looking for the same guy that can "write code"?

+1  A: 

You'll find that a lot of non tech-savvy companies will favor "software engineer" as it does have a professional ring to it. My skills were questioned when I applied as a programmer, when they told me they were seeking a software engineer. I believe that software engineer isn't an exact synonym to programmer, but rather a seasoned programmer.

There seems to be a lot of discussion on the topic, as displayed on the relevant wikipedia article.

+19  A: 

Officially I believe a Software Engineer is more qualified in the software development lifecycle as a whole (requirements, analysis, design, testing, team management etc etc), whereas a programmer/developer is the more Computer Science track.

Unofficially the HR people at many companies have no idea what they're talking about and you have to go by job requirements or even the interview!

Mark Glorie
+1  A: 

I think to be honest, there is not really a big difference between the job titles these days..

My title is actually software engineer, but I personally feel I need to know more of the engineering side of software :D

To me, a software engineer should be expected to have more in-depth knowledge of certain technologies, and experience in building larger systems. A developer could really either match this or have more varied knowledge.

I.e. Software Engineer = more specialist, Developer = generalist.

This is all very rough-round-the-edges and wooly though :D

Realisticly though, I dont give a crap what the title is so long as the codes good ;)

Rob Cooper

Well, first I had the title "developer" now I got "Software engineer". Probably HR thinks it sounds better, so what. You can call me a developer, if you want ;-)
They search the same people, no matter how they call them.
But just "writing code" is not sufficient for a developer job. You should differentiate between coding and developing:

John Smithers
+27  A: 

In some countries and states (European countries, Canada, as per Kena's comment, and Texas, as per Tony BenBrahim's comment), the title "engineer" is limited to people with an engineering degree. Depending on where you found the job description, "software engineer" may mean "a person who has studied software engineering," while "programmer" probably means "a person who knows how to write code."

Wikipedia has more on the regulation of the title "engineer."

The same is true in Canada
the same is true in Texas. The Professional Engineers board severely restricts the use of the term engineer to licensed professional engineers.
Tony BenBrahim
In Chile, a Programmer is a person with a technical degree (2 yrs) in programming; an Engineer is somebody with an engineering degree (4 or 5 yrs.) "Software Developer" is just a job description.
Leonardo Herrera
In most parts of China, people use software engineer and programmer interchangablly.
Very not true in Pennsylvania; this isn't true for all of the USA.
Dean J
+42  A: 

From what I've seen in the US, the title is a rough proxy for how important software is to the company.

programmer = we do not have many technical employees and need someone to "program" something; for example a law firm

developer = we are a tech-savvy product or services company and need someone to work on internal or back-end tools; for example a bank or consulting company

engineer = we are a software company and need someone to work on one of our products; for example Adobe or Microsoft

There are thousands of counterexamples, but in general, I would be skeptical of any company looking to hire "programmers", whilst I would look fondly upon a company hiring "software engineers". "Developer" doesn't really carry a connotation.

yes, in the US its a better title to be a software engineer
John Ellinwood
Large companies tend to title the job engineer, whether or not they treat the position very well.
Dean J
+2  A: 

Programmers get stuff done while Software Engineers talk about getting stuff done.

Frank Krueger
Well that's just not true...
Adam W
they must be really smart, if they make money by just talking :)
+3  A: 

@Frank Krueger, perfect!

Software engineers? Programmers? To me, we are all software developers, but some people like these weird names. :-)

Kind Regards


Technically my job title is Software Engineer and I work in the Engineering department. My previous job was also technicaly Software Engineer. The one before that was Analyst Programmer. In my freelance work I call myself a Web Developer.

In every position I do practically the same job.

+1  A: 

Legal certifications aside...

To me, the difference is in attitude toward doing the work: I think engineers (of any type) are concerned with building working, reliable systems to specifications and within environmental and budget constraints. Programmers are interested in writing code.

I don't have a problem with either -- certainly programming is more fun than engineering because (in my nomenclature anyway) it requires less discipline.

But again, this is my personal take on it and your milage will vary...

Jeff Kotula


Programmer (Syn. Code Monkey): Writes code. Builds things. Either a junior level or the old, crusty, UNIX or COBOL types. When you need alot of grunt work done, hire these.

Developer / Engineer: In addition to programming, designs architectures and databases. Follows the product through the entire development lifecycle, from Analysis & Design all the way to Production Support.

+2  A: 

Software engineer: someone who wants to piggy back on the reputation of real engineers. Consider how you feel about someone calling a trash collector or janitor a "sanitation engineer".

Programming is not engineering; it is not an industrial process; it doesn't have the same material constraints. It is instead an art and a craft. Yes, there are techniques we know work better or worse, and we try to collect and consistently apply these.

But you get to call yourself an engineer when you put your signature on a design and cannot by law work in the same field if it fails.

By Whose law can an engineer put his signature on a design and not be able to work in the same field again if it fails?
Omar Kooheji
@Omar: here is one example. Aircraft designs have to get airworthiness certificates. The application has to be signed by the organisation's chief engineer. If the application is seriously flawed, that engineer will be facing the sack and a prison term. I don't know whether they'd be banned from working in aerospace again by law, but I imagine it wouldn't look good on the CV.
This post is garbage. If you don't apply engineering approaches to software development, you end up with bad software.
Can you state what "engineering principles" are? If they're not specific to field, I'd merely call that "professionalism" -- following best practices,and so forth. If they are specific to a field, and that field isn't programming, than they don't apply. If they're specific to programming, then why are they "engineering principles?"
Design reviews, load testing, performance testing, quality inspection, materials inspection. These are the just the ones off the top of my head.
+13  A: 

The terms are different, and they refer to differing expectations.

Usually, "Software Engineer" is a superset of "Programmer".

Programming computers is PART of Software Engineering; but it's by far not all of it.

While programming requires a knowledge of computer languages and algorithms and data structures, all of which are very important, software engineering also involves knowledge of projects, maintenance requirements, documentation standards, software design, etc. The things that are involved in successful software projects that are NOT actual programming.

For me, a critical distinction has always come with Software Patterns. I've never met someone who was "just" a programmer who had a grasp on what they are, and why they're good. Conversely, most (albeit not all) Software Engineers that I've known and respected have had a good grasp on Software Patterns, and understand why they're such a good idea.

In general, the way I tend to think of it is this: programmers program solutions. Software engineers take a problem, and (usually) use programming to solve it. The difference is that at least part of the responsibility for figuring out WHAT the solution is going to be falls on the Software Engineers.

+1  A: 

As I understand it, a 'software engineer' is involved in most (if not all) aspects of the SDLC. While a 'programmer' usually gets handed the business requirements and technical specification, and starts coding.

Jeff Atwood already blogged about this back in July. Software Engineering is not at all what most people seem to want it to be.
Bob Riemersma

After programmers write the software, engineers drive it down the track.

Haha... good one.

"Software engineer" is a longer phrase than "programmer". The distinction also means that, when unemployed, you have to look under S and P both in the want ads.

Aside from that, there's really no difference.

David Thornley
+11  A: 

My personal take on the subject is:

  • Programmer: Coder. Code Monkey. Clickity-Clack, Clickity-Clack.
    Usually 0-5 years experience

  • Developer/Analyst: Gathers requirements, designs and implements applications, researches technologies, etc.
    Usually > 5 years experience

  • Engineer: Designs and implements components and frameworks for Developers and Programmers to use.

  • Architect: Designs and oversees the implementation and integration of system wide initiatives.

John Kraft

In switzerland when companies are looking for a "Software Engineer" then you must have at least a Bachelor Degree in Computer Science (better is a Master).Usually they write it in the job description as a requirement. Experience isn't enough anymore, because of the knowledge in engineering processes (RUP, XP, SCRUMM, ...), requirements engineering, testing, project planning etc.

They want people which can master the whole Software Lifecycle from beginning to end. "Pure programmers" are engaged on a temporary contract for the construction phases, when you need programming power.

Some people tend to think they are "better" when they have an engineering degree. I also have one (M. C. Sc.), but IMHO I'm one of the most worst coder on this planet. I know some people which can code much better and they have no degree. (But they are lousy when you ask for the unit test's or the docu: "Oh my code is working. I do not have to write a unit test or test master or something similar." ;-)

+1  A: 

A programmer programs, but a software engineer needs to be very familiar with the software life cycle, as well as program. In my case, I'm a software engineer, but I don't even have an engineering degree, so I guess HR thought the title sounded cool. I tell people I'm a software developer when they ask. I'm honestly surprised because I live in Texas, which strictly limits the distinction of being an engineer to licensed engineers, yet I have that title somehow.

I think the reason they call it software engineering is the design aspect. Just like a mechanical engineer or civil engineer designs a building before they build it, software engineers have to design software before they implement it. I think the process is similar enough to where they felt ok throwing the term engineer around.

Ryan Thames
+4  A: 

About $20k...

Rodger Cooley
+1  A: 

I've been a programmer for over 35 years. When I went to work for the company I am at now, they insisted on the title of Software Engineer. I work with guys who have masters degrees in engineering and unfortunately for the past 10 years I spend the first year teaching them how to actually program. Programming isn't just coding; it's planning, documentation, testing, projecting. So if that makes me an engineer, so be it, but I'm still a programmer.


The way I understand the term, Engineering means applying results of science and the scientific method itself to a concrete problem. Some programmers do that, some don't. Take debugging, for example: The scientific/engineering approach would be to collect data, form hypotheses, test/try to falsify the hypotheses, form new hypotheses and so on. But I'm sure you've seen programmers who just change buggy code based on untested assumptions until it works (once).

In a job offering, I would assume that a programmer is only writing code, while a software developer/engineer is expected to carry out the whole process of software development. I.e. she is expected to talk to (potential) users of a product, understand what they need and design the software so it helps the users solve their problems. She should also design the software so it can be maintained and extended in the future. Actually writing the program is only a small part of this process. For bigger teams, it can make sense to have a few developers and more programmers to help them with the "grunt work".


Check out this article on Developer, Engineer, or Architect, but I don't agree with his assement:

In short, development and engineering are based on opposite tenets. Engineering is scientific, quantified, and disciplined, whereas development is random, not based on metrics, and stays away from engineering discipline.

Jose M Vidal

Historically, a "programmer" was just the person who punched the bits into the computer. Since the bits were written by someone else (an engineer), and the process of getting them into the computer was annoying and time-consuming, the programmer and engineer were separate people. Now that it's about a billion times easier to program a computer yourself, the engineer and the programmer are always the same person.


personally i think a software engineer, is more of a project manager, their main concern is the bottom line, cost, time and efficiency, and therefore people skills are paramount, whereas the programmer's main concern is to create works of art, the actual product. -

for example a band manager promotes the artist, but the artist creates the timeless masterpieces.