Developer is a person who solves problems and usually aren’t focused deeply on the code unlike a programmer. They deal more with the project from a bigger picture point of view. For example, they connect together different technologies and people involved in the project. They are responsible for organizing the requirements and specifications of the project and deliver these to a programmer, who then implements them. Usually developers don’t need so much programming skills.
Programmer is a person who writes programs based on the requirements or specification they receive. They write beautiful code and have thorough knowledge about a programming language, algorithms and how to do things really well and optimized in code. Usually they don’t need people skills much.
Coder can be someone who writes code and deals directly with tasks that are clearly defined and problems already recognized. For example, they create an HTML and CSS layout of the website. Many times this title means the same as programmer.
Architect is someone who looks at the big picture of the project. They need management, people and general technology skills.
Important thing to understand is that many times these titles are also a matter of a perspective and can be used interchangeably in the coding world. Sometimes they are used to differentiate the responsibility, knowledge and skill levels. So if you’re confused about this terminology, you can just refer to them all as engineers.
Technology evangelist is someone who promotes particular technology or product by blogging, conference and meetup talks, writing articles, sharing information on social networks and similar in order to convince other people to use it as well.