First of all, avoid asking questions about "differences", such are questions are usually logically incorrect. How would you define "difference".—SA
Now about these terms. Want to know the truth? The "difference" is purely demagogic. Yes, as simple as that.
Perhaps, a special thing is "coder". This word often carry some negative connotation. I would advise not to use it ever. More exactly, many use this term as some second-class worker, somebody who, never takes care about, say, mathematical model of some phenomena described by programming, architecture and design, someone who does strictly what more capable and responsible people say, gets some input and provide some output.
Such role is a pure myth, probably stemmed from old time when people used perforated cards or something like that. Well, some people who cannot do anything beyond such work do exist somewhere, but nobody need such workers, ever. This is quite apparent: these days, it's much easier to solve some problems with your own hands than to explain what to do to such "coder". Only extremely illiterate people still think that "coders" can be used in practice.
Unfortunately, there is one other phenomena. Sometimes you faces with technically illiterate functionaries,
bureaucrats, "managers", who are afraid of people with scientific and technical knowledge and skills and try to belittle, disavow them by pretending that they "just write code". This is just a cultivate myth. Such people are disaster, companies should get rid of them.