Let's do a connotation reduction. Programmer, Developer, and Engineer all end in -er but have a significant root word in the meaning, thus evoking similarly specific large activities with 'attached' occupations.
Programmer evokes programs. I.e., that our job basically comes down to code. In some ways this is the most humble of wordings because although true to a certain extent, it's rather like saying a writer is a word smith, or a doctor is a good health-er, etc. It leaves unexplained how such programs are written, but it somewhat correctly indicates how foresight and planning is key to creating these end products. Also, read the Alan Perlis foreword to SICP.*
Developer evokes, in my mind, real estate developers and business development developers and all that. Bridge developers. People who oversee the completion of medium to large-scale work. This evokes a certain level of experience and responsibility on their part. Granted the term is applied to anyone who has created a website, etc. But it does sort of evoke that they have completed something. They've 'developed' it. It's closely linked to 'architect' too. And probably has objectivist leanings. It also, and in my opinion even more importantly, reminds the developer that a lot of what he or she does is re-development, and even more importantly, self-development. Whereas programmer doesn't evoke how the programs are made, developer evokes that the business of writing programs is largely about how to oversee requirements, code reviews, test cases, etc, and whatever makes 'development' more efficient. That it's mostly about what you bring to the table with experience. The programming itself is just part of the implementation.
Engineer, contrary to Fred Brooks, evokes the idea that you can put 20 people on a project. Because of how this works in other fields where engineers are used. It also evokes the long history of engineering which is a very privileged association, and one we should be lucky to have. It evokes that figuring out how the programs work, in addition to doing the actual programming itself (programmer), or supervising the completion of the task (developer), is very often at the heart of what we do. It is the closest probably to the term 'hacker' (although this is debatable and most hackers would consider themselves programmers, I think, because of the generality of the term and the understated quality to it), in that it's about hacking on thought problems and ingenuity. On the other hand, it evokes the 'disciplines' in other engineering fields. But originally it gets its connotation from the fact, through hundreds of other fields' use of the term, that the engine is the heart of the train, car, system, etc.
Overlayed on top these connotations are what businesses decide for job titles. And that, quite like with postmodernism and its relativistic approach to connotations, affects things also; however it is there to serve the purposes of the business first, and other long-term qualities second.
* http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html#...