This is perhaps the most well known job title in the field of Computer Science. Most people know in order to get a computer working, it has to be programmed. A Computer Program is a collection of instructions, logical and mathematical equations that describe a task to be carried out by a computer; in other words telling a computer what to do and how to do it.
So by definition, people who design, write, test, and maintain computer programs are the programmers. A Web Programmer writes programs that get executed on the internet, or to be more precise on the Servers.
A programmer often starts by planning on a piece of paper, or napkin, or in her mind, and then she types them into a computer as a series of statements called the Source Code. Source code makes up the body of a program. A Computer Software is a collection of many related programs in one package.
Programmers often write programs according to the specification provided by Software Engineers, Software Architects, or Computer Systems Analysts. Programmers could also design specifications for smaller projects and those programmers who expand their level knowledge and skills could become Software Engineers, and System Analysts by trade.
Imagine if an Architect is building a high-rise apartment, the trade workers and Construction laborers come and implement the Architect’s plan. A Construction laborer could also do small construction project without having to consult an Architect or Engineer. In this analogy the Skilled Construction laborers are the Programmers.
There is a flaw in my analogy, because in smaller teams or projects Software Architects may not only do Design and Analysis, but Programming too.
I have occasionally met Software Engineers who market themselves as Programmers mainly because many potential employers still do not know the difference between the two!