In my opinion they are two words for the same thing: Someone who builds software.<p>The word programmer refers to the literal act of writing the code, while to me the word developer implies writing the code, but also all the other "software engineering" aspects of developing software. If you wanted to be technical, you could say a programmer just codes, while a developer codes but also determines requirements, develops a specification/scope, etc.<p>I refer to myself with both interchangeably, and I assume most others do as well. I really don't consider them to be different in any meaningful way.
I (and many I know) tend to think of programmers (or coders) as those the concentrate on specific tasks, such as programming a specific type of hardware, phone system, manufacturing machine, or those that write code as a part of a larger project but typically work only on small pieces of the larger whole, with tight guidelines.<p>Developers are those that work at the next level. They have their fingers in the project as a whole, or at least in multiple modules. These people are are typically the leads, or senior people in the group.<p>For the engineer comparison... I would compare them to software architects. They probably aren't writing much code, but they are building out specs and test cases.<p>Where the engineer designs the bridge, the contractor handles sub projects, and the worker welds the beams... the architect designs the software, the developer manages interfaces and algorithms, and the programmer pounds out lines of code.<p>$.02