A quick search on the Internet suggests that the majority of people say there is no difference between the two terms.
Well, I'm going to suggest a difference: from now on I'm saying that programming is the general term, and that coding refers specifically to text based programming.
It's quite straightforward: you program your digital video recorder, dishwasher or home alarm system. you code in Java, Python or C++
It's a useful distinction. It allows you to distinguish between programming in languages such as Scratch, and coding in languages such as Logo.
The National Curriculum in England requires pupils to "use two or more programming languages, at least one of which is textual", obviously recognizing the importance of coding.
Why is coding so important?
From the standpoint of the professional, it's important because that's how you get things done. Programming languages are too restrictive, you're restricted to the functions built into the language. All the jobs are in coding.
But I believe there's an important pedagogical reason: coding gives students a better understanding of how computers work. Coding means that students learn syntax and structure. The syntax of coding can be off-putting, it's an extra thing to learn and it can be difficult for low literacy students. But my experience is that it's not the syntax that students struggle with.
It's programming structure that students need to understand. Visual programming languages such as Scratch give the appearance that students are learning. They can produce impressive programs very quickly, but do they really understand what's going on?
My experience suggests no. It's not until students begin coding that they really understand structure.