As a programmer, I often hear "writing a program" and "writing code" used interchangeably. The way I understand it, a program is a file which contains code written to perform a task or a series of tasks. Those who write computer programs (like myself) are typically referred to as programmers. However, the slogan of the popular website CodeProject is "For those who code," not "For those who program." Is there any difference in meaning between "I code for a living" and "I program for a living"?
Though some raise a distinction, there isn't a generally accepted difference between the two.
However, non-technical people may be more likely to understand what you mean if you call yourself a "programmer" rather than a "coder". The word "computer program" and "programmer" have very wide comprehension, whereas the term "code" - as a synonym for a computer program - has a narrower reach and is more easily confused with other meanings. Even worse: "hacker".
Programming encompasses coding, but coding does not encompass programming.
Programming is a blanket term for a set of activities, of which coding is one. See this explanation from WiseGeek:
"Generally, there are five basic stages of development that a computer programmer addresses in designing software. They are defining the need, designing a flowchart, coding the software, debugging and beta testing."
I would say rather that programming requires analysis, design, communication, coding, testing, and release management. A programmer not competent in at least a couple of these disciplines risks being a mere coder.