To me, the factual reality of what is or isn’t a programmer (or any other classification by the way) is of little consequence.
The only place where it would be relevant, a job interview, will be heavily influenced by the conceptions/misconceptions of the HR person conducting the interview, so splitting hairs about the definition is pointless.
The interesting part, on the other hand, is the philosophical self-definition as “programmer”, just as people who define themselves as “heavy”, “vegan” or “Lady Gaga”.
But that interest is merely on the philosophical discussion about it, the thing with these philosophical self-definitions is that there isn’t really a right or wrong, so again it is pointless to fret about concrete definitions, as someone who believes themselves to be a programmer, even when all they do is data entry, will keep having their belief no matter how you try to prove otherwise.
What we choose to identify with is mostly a matter of opinion, and as such, can’t really be argued away.
Also, while I’m not saying you can get a job as a programmer just because you define yourself as such (That’s what I meant with the first two paragraphs about relevance to job interviews) the ironic truth is that it is possible to just bluff your way through an interview and land the job, and even keep it if you can manage faking it. So much for definitions.
(On the other sad hand, and I speak from experience, HR reps that don’t know what they are talking about can disregard actual valid candidates just because they somehow think that “programmer” means “living encyclopedia of all things computer that should be able to solve college level tests on a whim” or, even more sadly, “electrician”)