Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This question already has an answer here:

According to the Bureau of Labor Statistics, this is the difference:

Computer programmers write programs. After computer software engineers and systems analysts design software programs, the programmer converts that design into a logical series of instructions that the computer can follow

They predict employment to increase for software engineers by 34% but to decline for programmers. Is there actually any such real distinction between the 2 jobs? How can one get a job designing programs (to be implemented by others)?

share|improve this question

marked as duplicate by gnat, GlenH7, MichaelT, Bart van Ingen Schenau, Kilian Foth Dec 13 '13 at 8:28

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

I noticed there are other questions that discuss the difference, but I think this particular claim needs to be addressed, since the BLS is the resource many people turn to when exploring careers. – Ari Jun 28 '11 at 3:16
I think this distiction was conjured up by the BLS to give them something more to do... – Vector Sep 4 '11 at 17:48
These terms are out of date. There was a time that a programmer did not design anything, someone else handed him or her the specifications. These days programmers are pretty much expected to design the presentation layer, business rules, and schema as they go, using feedback from users as they work. – Meredith Poor Dec 11 '13 at 1:48
up vote 27 down vote accepted

That BLS definition sounds like it came from 1973. Around Silicon Valley, the terms "programmer", "software developer", and "software engineer" are used pretty interchangeably. I don't think I've run into a systems analyst since 1985 or so, but there may be a few of that dying species cautiously snuffling around the waterholes at mainframe shops.

However, if you ignore the terminology and look at the descriptions, I think the distinction is valid:

  1. People who both design and code. I expect that to continue to be a fast-growing field.
  2. People who don't design, but code according to other peoples' designs, aka "code monkeys". In the US, at least, most of those jobs seem to have been outsourced to India, China, or eastern Europe.

How can one get a job designing programs (to be implemented by others)?

I can't remember meeting somebody who just designed code without doing some of the implementation themselves in decades. I suppose you could work your way into a software architect job, which is kind of like that except they have to do other things too, but you'll have to spend a decade or so doing design-and-code first.

share|improve this answer
I don't think anybody would respect a code designer who didn't code a significant part of the project as well. Or at least prototype the system. – edA-qa mort-ora-y Jun 28 '11 at 7:47
In the US, at least, most of those jobs seem to have been outsourced to India, China, or eastern Europe. Don't forget that efficiency gains from good libraries and frameworks has contributed to getting rid of a significant amount of code that would need to have been written since 1973 too. – StuperUser Jun 28 '11 at 12:45
Thanks. I guess its hard for governmental bureaucracies to keep up exactly with with the latest century. – Ari Jun 28 '11 at 14:21
However, who designs the software for the "code monkeys" in India? – Ari Jun 28 '11 at 14:22

Some newer development methodologies (like TDD) require the 'developer' to perform both of these tasks simultaneously as they require constant refactoring which is in effect incremental design. I think the separation of these roles is dying out with the older models like the waterfall where they were performed at different stages of the process.

share|improve this answer

First of all "Computer programmer" sounds quite obsolete, it's just "Programmer" for at least a decade or two.

In most companies pay scales you have "Programmer" as the lowest rank, below "Software Engineer", "Software Analyst" etc. So it is kind of true, that SE will probably be P's boss. However, waterfall model, where SA would just do very top level design, then pass it downwards and actual coding would be done only by Programmer is also at least few decades obsolete. Nowadays SEs and SAs also code.

share|improve this answer

I'm not sure how it goes in the corporate world, but in most startups and "lean" projects (ie FOSS and indie projects), software engineers and computer programmers are the same people.

share|improve this answer

It's more of an abstraction, especially between "developer" and "engineer". It's typically just a naming convention for a specific company. In other words, I don't believe you'll see a mixture of software developers and software engineers at a given company. Usually a company will just call all their programmers, "developers" or "engineers".

Now, the actual terms do indicate differences:

Engineering denotes a cradle-to-grave type billet, whereas

Developer is geared towards taking requirements and producing software.

It may seem like those are one in the same, but engineer is a little more encompassing.

As said before, though, in reality these are all interchangeable terms.

share|improve this answer

Somebody has to determine how many programmers,testers, etc. need to be hired; how much time to give those people to complete the various parts of a project; how to assess progress and quality; and so on. If you are a programmer, who do you want doing this job:

  • Someone promoted from the sales department who can now not only make wild-eyed promises to customers but also demand that you make it so?

  • Some pointy-haired boss hired from outside who did a great job managing construction personnel but who is utterly clueless about managing technical projects?

  • One of your fellow programmers who turns out to be utterly clueless when it comes to management?

The right answer might well be none of the above. You want someone who is clueful with regard to management and programming. The discipline of software engineering is a fairly recent addition to the set of disciplines needed to bring a complex software project to fruition. It borrows a lot from systems engineering (which is also a fairly new discipline). As was noted in other answers, several colleges now offer degrees in software engineering.

share|improve this answer

There are also algorithm developers, which I could not find on the BLS website. They can have a degree in computer science, mathematics, physics, etc. often with a Ph.D. Their primary role is to explore and develop new algorithms for solving specific problems.

Depending on the field and the company they can use enviroenments such as Matlab, Mathematica and R or languages such as Perl, C and C++.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.