I have often used those three terms almost interchangeably, yes, even computer scientist. After all, most of us have a degree in computer science, so what does that make us? However, recently I find that those three things have come to take on more and more distinct personalities in my mind. It has come to the point where if I think about someone I know – or know of – within the industry, they immediately fall into one of those three categories. Which is not to say that one person can't have attributes from all three, but regardless, they always tend to favor one most strongly and so I fit them into that category, programmer, developer or computer scientist.
It is difficult to define what each one should be, (it is more of a gut feel rather than a strict delineation) they are very similar (and rightly so), but I am going to attempt to do it anyway, cause I am a glutton for punishment :).
Computer Scientist

They write code (yeah I know it's a bit of a bombshell). It may not be the prettiest or most well-factored code, but it gets the job done. It is not about the design of the code or "good" practices, it is about proving what they set out to prove. A computer scientist is as much a mathematician as they are a technologist (they have 31337 math skills), they don't just need to know that stuff works, they have to prove it. Communication and people skills are desirable traits, but not emphasized. Software process and team dynamics skills are desirable traits, but not emphasized. They have good breadth of general knowledge of their whole field, but they deeply specialize in one or several narrow areas. In these areas they are considered world-class experts. They work on stuff related to their research in their personal time.
Programmer

Programmers write awesome code. Making it clean, well-factored and error free are very important concerns, but not at the expense of getting the job done. It is all about knowing the meaning of "good code" within their domain. They need to have some math skills, but this is not a paramount concern. They need to know of good (best) solutions to problems, but they don't need to prove it is the best solution. A good breadth of algorithmic knowledge is imperative. They have a depth of skill in a wide area of expertise and have reasonably good knowledge of related areas as well. Communication and people skills are desirable traits, but not emphasized. Software process and team dynamics skills are desirable traits, but not emphasized. They work on personal software projects they find of interest in their off time.
Developer

They write code. Making it well-factored and clean is important, but other factors often take priority. Math skills are very much optional, but it does help to be aware of common problems and solutions related to the domain they are in. Communication and people skills are paramount. Process and team dynamics are bread and butter skills. They are consummate generalists without any truly deep specializations. They are expert at finding ways around problems and plugging components together to fulfill a set of requirements. In their personal time they are either trying to build the next Facebook, or engage in activities that have nothing to do with programming, developing, or computer science.
- Developer are programmers to a greater or lesser extent.
- Computer scientists are programmers to a greater or lesser extent.
- Enterprise software is the domain of the developer.
- The Googles and Microsofts of the world are after programmers (and to a lesser extent computer scientists). The developers who end up there become product managers.
- RnD and academia are the domain of the computer scientist (and to a lesser extent the programmer)
The thing to remember here is that none of the three is derogatory or "bad" in any way. One is not more or less desirable than any of the others. They are simply different dimensions (with some crossover) of the field we are all involved in. Particular personalities will identify more with one but that does not mean that all three can't "bleed" into each other and combine favorably. It is entirely possible to be both an awesome developer and a great programmer (although it is difficult with so many important things to focus on). In rare cases you may even get an all 3 in 1 type of deal, in which case I'd love to hear from you, cause we should start a company together, so that I can ride your awesomeness all the way to easy-street :). But no matter where you fall, it is entirely possible to be highly successful if you fit snugly into just one of the three.
What about a software engineer? That's just a subset of developer.
What about an architect? They design buildings and stuff, so I am not quite sure how that's relevant :)
I do believe that I have thoroughly failed to communicate my meaning. No matter. I will throw the ball to you, dear reader. Do you see programmer, developer and computer scientist as distinct and if so are you definitions similar to mine? If not, then I'd love to hear your thoughts about them being one and the same.
Images by Esthr, Chealion and Pieter Baert

Pingback: Markus Tamm » Blog Archive » Links 16.03.2010
Pingback: Dew Dump – March 16, 2010 | Alvin Ashcraft's Morning Dew
Pingback: Différentes nuances | traffic-internet.net
Pingback: Thought Syndrome
Pingback: Michel Billard » Blog Archive » I’m a web developer
Pingback: Who needs math skills?
Pingback: Hackers and Programmers « Cvet's Blog
Pingback: geographika » The Seven Bridges of Königsberg
Pingback: [转载]成为优秀的开发者无需数学技能,但成为卓越的开发者需要 | 人工智能&机器人
Pingback: Webs Developer » How To Be A Real Elite Programmer And Make Sure Everybody Knows It
Pingback: Sự khác nhau giữa Developer, Programmer và Computer Scientist | Kucku's Blog
Pingback: tekcastdesigns.ca » Blog Archive » The Difference Between A Developer, A Programmer And A Computer Scientist
Pingback: You Don’t Need Math Skills To Be A Good Developer But You Do Need Them To Be A Great One « lei
Pingback: 开发人员、程序员与计算机科学家三者之间的区别 « 爱puck
Pingback: The Difference Between A Developer, A Programmer And A Computer Scientist | 做人要豁達大道
Pingback: 一个人的天空 » 开发人员、程序员与计算机科学家三者之间的区别
Pingback: The difference between a Computing Scientist, a Programmer, and a Developer | Jansepar.com
Pingback: 开发人员、程序员与计算机科学家三者之间的区别 》CrazyCoder
Pingback: 开发人员、程序员与计算机科学家三者之间的区别 « 编程王网站
Pingback: 开发人员、程序员与计算机科学家三者之间的区别 - HappyStudy - 乐学博客
Pingback: 开发人员、程序员与计算机科学家三者区别 | 否何 - fouhe.com
Pingback: From the web #11 | Jamie Osborne
Pingback: Hva bør en SharePoint-konsulent være? Utvikler, funksjonell designer eller dokumenthåndteringsekspert? – BEKK Open
Pingback: 开发人员、程序员与计算机科学家三者之间的区别 - 博客 - 伯乐在线
Pingback: Vpopulare.ru » Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?
Pingback: A$hraf – a personal blog » Blog Archive » The Difference Between A Developer, A Programmer And A Computer Scientist
Pingback: «Программист» — это сверхобобщение [habr.ru] « JTProg
Pingback: Phân biệt khái niệm: computer scientist vs. programmer vs. developer | hajimezhao
Pingback: Phân biệt khái niệm: computer scientist vs. programmer vs. developer « hajimezhao
Pingback: mdominick.com - One Job, Many Titles
Pingback: From the web #11 | Jamie Osborne
Pingback: The Difference Between A Developer, A Programmer And A Computer Scientist | Juan Pablo Zamora