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.
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.
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.
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.
$.02
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.
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.
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.
$.02