IT Titles as described by Joel Spolsky
Programmer emphasizes the coding aspect of the job.
Software developer can be seen to encompass other aspects of the software creation process, such as software design, architecture, design, testing, documentation, deployment, and maintenance.
Engineer has some regional variations. In some places it implies an accredited or licensed professional. In other places (including Silicon Valley) it does not. However engineer also encompasses other technical roles in the organization such as systems administrator, network administrator, database administrator, and so forth.
Hacker adds a facet of pragmatism. A hacker, it is implied, gets things done with limited resources and leverages other work to "hack" together a working, valuable solution.
Code-monkey is insulting but is most often used in a self-deprecating way to indicate a programmer who is expected simply to write code without thinking about the larger picture (such as the code architecture or the business needs).