For those of you that write code, what term do you prefer? Programmer? Engineer? Developer? Something else?
Dharmesh Shah asked this question Twitter yesterday, and I did a quick compilation of the public responses. For the answers with more than one vote I include the total votes and also a score. About a third of responces used some form of, “I like X, but sometimes I use Y”, and instead of throwing that information away I awarded 3 points for a first choice, 2 for a second choice and 1 point for a third choice.
- Developer – 17 votes/score 52
- Engineer –11 votes/score 29
- Programmer – 4 votes/score 11
- Hacker – 4 votes/score 11
- Coder – 3 votes/score 8
The answers that appeared only once were:
- Byte Surgeon
- Code Monkey
- Professional Geek
- Someone who types on a keyboard all day in air conditioning
- Chief Ideas Officer
It definitely looks like “Developer” is the standard, but what immediately jumped out at me was the way some people embrace the same aspects of the job others try to avoid. Some people reported that “Programmer” sounded too much like someone who just wrote code and didn’t think about it, whereas someone else described their job as “Code Monkey”, which revels in that role. Some of the creative responses, like “Chief Ideas Officer” didn’t imply any contact with code at all, where as others, like “Byte Surgeon”, implied a visceral, low-level involvement.
It seems like sone of the trade off is between “code” and “prestige”, which is always disappointing for me to discover. Several people suggested they would use different words if talking to a fellow coder rather than someone outside the profession, usually preferring "Engineer" when talking to people who don't write code themselves. This is perhaps why “Developer” wins out in the end: it seems to suggest a job that involves typing things that get executed, one way or another, without also suggesting that someone handed you pseudocode to implement. Which may be to say, it is uniformly bland and uninformative, conveying as little information about the tasks performed and the role plays as humanly possible.
It is clear that there are multiple jobs that would fall in this category, though, even if we don’t yet have the language to articulate the differences. Certainly independence vs. subordination is a common theme, but I also noticed there were no terms proposed that specifically called out “team member” or “collaborator”. I would personally prefer such a term to either the independence of “Hacker” or the subordination of “Code Monkey”. Unfortunately, any such word runs the risk of stepping too far from the technical roots,and implying that the code writer is no longer elbow-deep in bloody code.