I would like to know the difference between a programmer and a software developer. From what I understand a programmer is someone who codes a solution whereas a software developer finds a solution to a particular problem and then designs the application. Is this correct?

+6  A: 

I've always regarded them as the same.

John Topley
+48  A: 

There is more to software development than programming. Calling yourself a software developer is choosing to emphasize that fact.

Simon Gibbs
gathering requirements, thinking about user interface design issues, writing documentation, support work, getting a system to operate well and making it easy to support, I'm sure there are more but those are the ones I regularly do on top of my programming duties.
Simon Gibbs
I think you are technically correct, I have seen roles advertised as software developers which incorporate exactly what you said above, then again I have also worked with people who called themselves software developers, however only did the "programming" role day-to-day.
Richard Slater
These are all tasks that are often separated into other disciplines in the software industry at large. In the industry, software developers are the ones writing the code and are not responsible for UI Design, requirement gathering, market analysis, technical support, etc.
Dustin Campbell
"In the industry" is a clumsy way saying "in larger software companies." :-)
Dustin Campbell
Exactly, in larger companies these things are probably separated. In smaller companies you just have to do everything yourself :-)
Joonas Pulakka
Then in larger companies it really would be just bathroom tissue / toilet paper issue, but thankfully I don't get pigeon holed quite as tightly. Anyway, choosing to emphasize something doesn't make it true ;-)
Simon Gibbs
+31  A: 

Isn't the difference between a programmer and a software developer the same as the difference between toilet paper and bathroom tissue--in other words, just a prettier sounding term that looks better on a résumé? :-)

Dustin Campbell
A software developer is much better paied than a programmer, so no: They are not the same.
Programming is by far not the only thing needed to develop software.
A software developer is much better paid than toilet paper. Or bathroom tissue, for that matter
Phil Nash
I think this is a common misconception IMHO. I believe they cover different scopes, there was a great article on this.. somewhere...
I believe the comparison should be between a bathroom and toilet paper. As stated throughout this post, programming is just one aspect of software development just as toilet paper is one aspect of a bathroom.
Yeah, but my titles have jumped all over the place while I did essentially the same thing for different companies.
David Thornley
+27  A: 

I call myself software developer, because programming is only part of my job. Actually I spend most of the time figuring out what needs to be programmed.

Joonas Pulakka
+12  A: 

Programmer is what you think you are, Software Developer is what an employment agency thinks you are.

+8  A: 

I suspect the distinction is made to emphasize the "industrial engineering" aspect of the trade.

A programmer... programs, but a software developer should also register his actions within an "industrial" process (made of well-defined, easily repeated or reproducible steps) like:

  • manage his code in VCS
  • have several environments for:
    • developing the current version
    • debugging the previous one into production
    • integrating in advance some new library for a next future version
  • check that code against a continuous integration process

and so on.

In short, a software developer thinks of his activity as part of a larger organization, whereas a programmer could just think of his code ;)

That said, the distinction is often artificial and many programmers are well-aware of the aforementioned "organization".

+7  A: 

Strongly depends on local/corporative nomenclature and on the context. I'd say "software developer" is very general and doesn't define position, while "programmer" is clearly positioned in corporative hierarchy below "analyst". In many corporations "programmer" == "coder" == "code monkey".

BTW. Wikipedia's entry sheds some light on this:

A programmer is not a software developer, software engineer, computer scientist, or software analyst. These professions typically refer to individuals possessing programming skills as well as other software engineering skills. For this reason, the term programmer is sometimes considered an insulting or derogatory oversimplification of these other professions. This has sparked much debate amongst developers, analysts, computer scientists, programmers, and outsiders who continue to be puzzled at the subtle differences in these occupations.

I put less stake in what I read at wiki than what I read here when it comes to a topic like this.
Fine with me. The thing is, language is alive. Words semantic is what ppl do understand when reading them. It's the same thing that occurs with word "hacker". Here most of ppl will tell you that it means expert programmer, but that's not what HR ppl reading your CV will get.

In practical use they are the same, just like using a meaningless title like "software engineer". So few people can make a distinction that (like most things in natural language) there is no distinction outside of small groups.

On technical grounds a programmer is a subset of a developer. A programmer programs, but does not do the analysis or "real world problem translated to computer solution" part of the process. A programmer has to be told what to create in programmer terms, not human ones ("Create a hash map and based on the name in the customer record" vs "I need to quickly look up my customers by their name").

Personally I use and see used the term "Programmer Analyst" as a more well understood way of saying "developer".

A Software Engineer is so much more than a programmer.
I didn't say it was more or less, I said the title itself has no true, commonly understood meaning. As a result the only thing that makes the title "Software Engineer" describe something more then "Programmer" is that one sounds fancier. Sorry for inferring a "foo bar" is the same as a plain "bar".

"Software development" sounds cooler than "programming". I guess it's the same as "development" vs "building" in construction. If I talk to a person who doesn't really understand waht stands behind "programming" claiming to be a "software developer" makes me look much cooler.

Sometimes it's expected that developers don't only write code, but also work with requirements and actively participate in other software project activites. Eric Sink discusses this regarding small companies.


Difference? Purely semantic.

Yuval A
you mean syntactic? ;-)
+3  A: 

To me, it's like the difference between "janitor" and "sanitation engineer".

If I needed something really coded up to save my life, I'd trust the guy who calls himself "programmer" before I'd trust the guy who calls himself "software developer". I think that term has been co-opted by people in software companies who don't really program, but believe that it conveys some status.

Strange, I believe most people would opt for the software developer to save there life though code.
Brian Gianforcaro
+33  A: 

The act of programming is a subset of the activities that make up software development.

Programming is the act of writing, compiling, testing and debugging source code.

Software development includes other activities like:

  • Requirements definition
  • Specification writing
  • Project planning
  • Creating an installation package
  • Troubleshooting problems during installation
  • and, and, and...

Therefore a programmer is a person who produces code, usually after some sort of specification. This is focused on a specific functionality.

A software developer is producing a solution for the customer, with a big focus on customer satisfaction.

In some organizations this distinction would be true. In others, it wouldn't be (titles aside).
Point taken: My last position was System Analyst, the current is Automation Engineer... did I mention that my work consists of developing software?
+1  A: 

I think it comes with age. I am now 33 years old, I am a programmer and I am a rusty nail. I'm still sharp, I still hold things together, and I can even be used in new problems.

However, the advent of very high level, interpreted languages made people who actually knew what their code was doing to a computer want to differentiate themselves from the person who read the `idiots guide to (???)' and got hired.

Yet, I remain a programmer. I still find some esteem in the title, especially when I'm able to demonstrate some level of skill (beyond reading the `complete idiot's guide to "foo"') and actually argue with a compiler.

Here come the flames .. here come the flames ...

Tim Post
+3  A: 

Just to use Salary.com as a reference...

Software Developer I has a median salary between $50,131 and $61,405

Programmer I has a median salary between $47,025 and $60,800

Just thought that pay was interesting to look at as well because there really isn't that much difference.

However, I think a lot of companies just pick a title that sounds nice without actually reflecting your work. I have been a Software Engineer, Programmer Analyst, Software Developer and Programming Engineer. I think they just sound nice when you say it to other people, haha.

+3  A: 

about $15k/yr

+3  A: 

Just to mention another dimension that might not be valid in every country.

Specifically in Greece, sometimes, when I am asked what is my profession, if I say "programmer" then the person asking might not understand I am referring to programming a computer. I have to say that I am "developing software" for them to understand what I am doing exactly.

I am not sure this is the case in other countries. Maybe this has to do with the language as well as how developed the country is.

+2  A: 

I'm neither. I've coded for 16 years, and I'm a Software Engineer.

+1  A: 

Programmer doesn't have to develop software, programmer can program shaping machines :) I've just realised the possible difference :).


This is a programmer, software developers write fancy documents that tell programmers what to do.


According to this: http://www.npr.org/blogs/money/2009/05/going_into_therapy.html

the job outlook for Software Engineers is much rosier than the outlook for mere Computer Programmers. I wonder what the outlook for Software Architects vs. Designers looks like?

+1  A: 

A software developer is familiar with the entire process of software development, not just the programming.

A programmer fulfills spec, much like framing a house, it's hammer and nails.

Programmers can often build a shed without a blueprint, but rarely a house.

Software developers can design a plan, and build it and plan for the lifecycle of the house.

Jas Panesar
+1  A: 

What's the difference between a "cashier" and a "sales associate?" It's all about making people feel better about their crappy job.

Personally, I prefer "code monkey."

That's 'Cheeto-eating code monkey', please.

It relates to perceptions...

You have...

Programmer, Software Developer, Software Engineer, Analyst

Each of those carries slightly different connotations of what they do and how they do it, depending on local culture.

Paul Nathan

Just to toss another in the mix, see one of the more interesting articles I've read recently:

Why writing software is not like engineering


Are the differences between a programer and a developer the same as those between a contractor and a consultant?

+1  A: 

Programmer :- One who programs. They don't write specs,No automated test case. They will not help the customers to solve tough problems. They don't know the non coding aspect of the of the product development. Developer :- One who develops. They are the people who will contribute in many ways to make the product successful. They are active in all stages of the software development. Developer involved in many areas in software development such as

Preparing Spec / document Writing code Code reviews Configuration Management Testing Automated Tests Fixing Bugs Solving tough customer problems

Sai Prasad
+1  A: 

The difference is historical, and it's a change of terminology that reflects a real change in the role.

Years ago, before we had fancy languages and libraries and list comprehension and actually needed to worry about things like memory management, there was a long, involved task that consisted of taking a specification for a subroutine and translating that into whatever crude programming language was being used. This is not to say that there were not design aspects to developing software -- there were, and they were just as important as they are today -- but the largest single chunk of a "programmer's" time was devoted to the actual programming task.

Now, the process of developing software still involves all the same steps, but high level languages, frameworks, best practices, widely available rich libraries, and pre-built components have reduced the programming step down to almost nothing. Programming, that is, translating a detailed mental picture of what the computer should be doing into the programming language, has faded to a small part of what a software developer does.

There's an interesting remnant that shows something similar in the military -- the Surgeon General isn't (as far as I know) a surgeon. His/her title is a remnant from when the only thing that differentiated an MD from any random person who knew how to set a broken arm was that an MD performed surgery.

Now, programmer is a poor term to refer to a software engineer because it's like calling a carpenter a nail hammerer -- that's just a part of his job.

Sure, people can invent different meanings of the terms to make it sound like they all refer to different things, but to say that "programmers" and "software engineers" are different types of people or different job roles makes it seem like a reasonable thing to say that your department has 5 programmers and 3 software engineers. It isn't. Maybe we could differentiate based on type of application people write, enterprise vs. web applications vs. shrink wrap, or the preferred language, or UI vs. data layer, but certainly the distinction between "programmer" and "software developer" doesn't capture any of these.

Kevin Peterson
+6  A: 

Anyone who says Software Engineering is the same as Software Development/Programming obviously has NO idea what they're saying! Most people that call themselves software engineers are computer science and IT majors that do software Development. Software Development in my book involves tasks such as programming, basic "low level" design, testing, UI design etc. I'd like to make 2 points:

  1. Software Development vs Programming: Back in the day, when people from random majors tried their hand at "programming", you would call them programmers. In today's age when most computer science and IT degrees have a well structured and evolved degree program, calling such people "programmers" carries the wrong connotation and hence "Software Developer" is a more appropriate title.

  2. The Real Software Engineers: Real Software Engineering is as much an engineering discipline as a computing discipline. There are numerous aspects of building software besides programming/coding. Although the work of an ordinary Software Developer may involve several of those same tasks such as requirements gathering, testing, planning, etc. Software Engineering takes all these tasks to a whole new level by applying engineering approaches to these.

  3. Software Engineering vs Software Development: Let's take a simple example of building the user interface for a website. A software developer might put in several days designing a user interface and finally come up with the "perfect design" - green colored notifications for pass, red ones for critical errors and so forth. A real Software Engineer will typically have spent an entire semester in school learning about user interaction and will know that about 8% of males are color blind and most of them are deuteranopic, (AKA red/green color blindness). They will know how the size or relative distance of buttons affects the interaction. They will actually employ a representative sample of end users and carry out usability testing to measure response time for typical tasks, go back to the drawing board, redesign and try to optimize the user interaction based on empirical data.

  4. What else do Software Engineers do?:
    Software Process Engineering: Project planning, estimation and managing the Software Development Lifecycle. Agile, lean, Scrum, RUP, etc. are all part of it. Software Requirements Engineering: Getting to know what to build. Keep in mind that two-thirds of all failed software projects had poor requirements.
    Software Design: GoF design patterns (O-O design), refactoring, etc.
    Software Modeling: Specifications and modeling using formal methods, to model the behavior of systems before actually building them. Very useful for mission-critical systems, concurrency issues and complex business logic.
    Software Architecture: High level design of how various components interact, quality requirements, Product Lines, Service Oriented Architecture, Information Systems Design, etc.
    Software Testing: Engineering and process techniques applied to testing - regression testing, continuous integration, etc.
    and much much more...

  5. How do you become a real Software Engineer? :

You have a couple of options. Traditionally, you start off as a computer science/IT or Engineering major and get a Master's/Doctorate degree Software Engineering. You can get it from places like CMU, UTexas, Penn State, etc. Ideally you would want to ensure that you are actually getting a degree in Software Engineering and not just a masters in computer science with a few Software Engineering courses thrown in as a 'track'.

The other option is to get a Bachelor's degree in Software Engineering. This is a relatively advanced and challenging and only a handful of colleges offer this option. Examples would be Rochester Institute of Technology (it is by far the best and also the first to start it), Drexel University, Florida, etc.

Also a software engineer is a professional and is held to the standards of the profession( **Ethics** )
Not to beat a dead horse here, but I don't think many "Software Engineers" use the processes you describe, or if they do I don't see the results of it. A simple example might me... Windows is written by "Software Engineers", while GNU/Linux is written by random people with different backgrounds. I also think calling what software engineers do "Engineering" is somewhat dishonest. Mechanical, Chemical, Civil and Electrical engineers are licensed professionals with professional organizations, standards etc. Software engineering lacks all of these things.
Chris D.
Estimated @user345889 Your comment is way valuable! I agree with every part of your answer. Thanks for sharing.
Ramon Araujo

There are some other points that about everyone has missed.

  • it is that a programmer is not much experienced in programming and environments. on the other side, a software developer/engineer is much experienced than a programmer.

  • Programmer may be a programmer just for fun and might not get any financial benefits from his job while software engineers/developers are professional.