Coding and programming are indeed typically used interchangeably, which is what I tend to do, even though Wikipedia’s entry for Computer Programming seems to align with the distinction made between the 2 terms that is also made in the posting you linked to.
However, I prefer to use the term “software development” or “software engineering” rather than “programming,” as I find it more clear that those terms include the tasks of designing, problem solving, writing code and configuration (coding or programming, in my connotation), compiling, interfacing with other systems, testing, debugging, and perhaps packaging and deployment (on the ops end of the spectrum).
I tend to connote “programming” much more narrowly (and much more closely to “coding”). It is possible to know how to write a program in some programming language and run it without knowing how to do all of the other things I listed above. Being able to do this does require some problem-solving skill (in order to determine how to solve the problem at hand and translate the solution into code) along with some technical skill (such as how to compile [depending on the language] and run the program, and a bit of debugging skill to fix at least obvious bugs), but not necessarily to any great extent.
I find that someone who has deeper and broader knowledge of these things (including the things I’ve listed farther above) warrants a different (more encompassing) title, such as “developer” or “engineer,” and to take it a step further, I tend to connote an “engineer” as someone who has even deeper design and integration skills than a “developer.” And of course, beyond that would be an “architect,” but at that point an architect is not necessarily a good programmer, although it is often the case that an architect has progressed through programming, development, and engineering.
Anyway, that’s how I connote these terms.