I started to write software in 1995 and since then I used the terms programmer and developer interchangeably and I thought that they are synonyms. These days I was thinking about my first post on this blog and I concluded that writing about this subject would be a good idea. I asked google on what it knows about what is a programmer and the results were quite surprising.

The first result was from wikipedia and it confirmed on what I knew so far:

A programmer, computer programmer, developer, coder, or software engineer is a person who writes computer software.

Confident on my knowledge so far I continue to read the the next articles. It didn’t take long and Alan Skorkin’s differences really made me think. He discusses differences between Computer scientist, Programmer and Developer. I never considered myself a scientist and after finding out that

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.

I was absolutely sure about that. I continued with the other two definitions and I bellow I extracted what I found relevant:

Programmers write awesome code. A good breadth of algorithmic knowledge is imperative. Communication and people skills are desirable traits, but not emphasized. Software process and team dynamics skills are desirable traits, but not emphasized. Developers write code. Communication and people skills are paramount. Process and team dynamics are bread and butter skills.They are consummate generalists without any truly deep specializations.

Alan’s post puzzled me a little bit and so I wanted to find out if others think in the same way. A few clicks away I found Scott Hanselman’s venn diagram that states:

  • Coders - Can pretty much figure out it. It’ll work, but it won’t be pretty.
  • Hackers - usually low level folks, skillful, with detailed understanding of some area deeply, often scarily deeply.
  • Programmer - Write code and understand algorithms. Often work alone and well.
  • Developer - Are the best generalists, can use lots of different systems and languages and get them to talk to each other. Are true and broad professionals, work with people, and communicate well.
  • Computer Scientist - Need to be able to prove how computers work, at a theoretical level. Are usually math people also.

His classification has a lot in common with the one from Alan so I stopped here with searching on topics on this subject. It is time now to draw a line and see what I am based on these findings.

I concluded earlier that I’m not a scientist. I also don’t have that detailed understanding to be an effective hacker. When I write code I’m thinking on future maintenance so I try to write it as understandable as possible. From this perspective I’m more than just a coder. Even after two good posts I’m still not sure about the last two categories, programmer and developer. I think I’m a bit from both of them. What about you? Are you a programmer or a developer?