From my experience, a programmer/engineer can build a very efficient reverse tree sort doodad, and it come out PERFECT awesome, but they rarely build entire products. Then a developer/architect comes along and takes that brick and sticks it alongside a bunch of other bricks to release a product.
Developer Programmer Software Engineer Software Specialist Coder Webdev Dev
We can go by so many different names and I really feel that they all essentially mean the same thing. It could all be about keywords too. Take your LinkedIn profile and add all those keywords, and you will have LinkedIn emailing you that people looked at your profile. I think its all a matter of choice or the position that your company names you.
EDIT: Another interesting point is that originally programmers were more specialized and dedicated to a single set of tools/languages while developers, when they first appeared, were more concerned with "developing" the ideas into a useful system and writing it in whatever language got the job done faster. Now today pretty much anyone with any skill set calls themselves developers but you see more old timers calling themselves programers.
The difference being that the developer is expected to be able to identify problems to be solved and the solutions to the problems, in addition to implementing them. The programmer is told what the problems and solutions are and only needs to be able to implement them.
However, not everyone makes any such distinction, and in the vernacular the terms are basically interchangeable. If someone uses one or the other term, don't assume they make that distinction; assume they're just talking about someone who can program. If you see one or the other in a job title or description, you will still want to speak with the hiring manager to understand the scope of responsibilities.
That said, some companies do differentiate, so it pays to really read the descriptions.