As anyone who has finished Philosophy 101 should be able to tell you: definitions aren't important, what you do with the definitions is what matters. The definition of programmer you use when hiring someone to build a web app is going to be rather more specific than what you use when you are hanging out on IRC.
Also, if you are concerned that "programmer" covers both rockstars tinkering with JavaScript and Donald Knuth levels of cleverness, there's a simple solution. Prefix the word programmer with an adjective. I would recommend "competent" and "experienced" (and their antonyms) as good adjectives to start with.
Also, if you are concerned that "programmer" covers both rockstars tinkering with JavaScript and Donald Knuth levels of cleverness, there's a simple solution. Prefix the word programmer with an adjective. I would recommend "competent" and "experienced" (and their antonyms) as good adjectives to start with.