Our Job Titles: Developer, Programmer or Software Engineer?
If I look at the desired length of blog posts across the sites of customers for whom I’d write, it’s around 1,000 words. Given the length of Monday’s wildly popular post, that means I’ve got about 500 words left for the week. So today’s will be relatively short and sweet, lest I deplete the world’s word reserves. This is a reader question about what I think the difference is between “programmer,” “software engineer” and “software developer.” (I won’t block quote because that was pretty much all there was to the question).
Software Job Titles: A Rorschach Test
My take is simple: the difference is a Rorschach test of what the terms mean to you. If you google around a bit, you’ll find articles like this one, that’s pretty well written or this one, by Scott Hanselman, with an awesome Venn Diagram.
But all such posts that I’ve seen and conversations that I’ve heard seem to make the a priori assumption that since there are different words, they must have distinct meanings. After all, we try to keep things DRY in this line of work; if they weren’t different things, why would there be different words? There are then quests to establish a taxonomy that seems to vary for everyone establishing it.
My Own Experience Creating Titles: Trying to Make People Marketable
I was once responsible for creating a software department’s org chart, both in terms of titles and reporting responsibility. This meant that I had an utterly blank slate from which to choose. Anything was in play, and the folks working there could thus have become developers, programmers, software engineers, or code magicians at my whim.
I made the base position title “software engineer,” and do you want to know why? I didn’t do a careful assessment of their exact roles and responsibilities and create a taxonomy. Instead, I researched which title commanded the highest average market pay in the area at the time, and gave them that advantage, hoping that it would bring them a little compound salary interest throughout their careers.
I ignored the notion of a perfect, descriptive taxonomy and gave them titles based on market considerations. I have no doubt that other organizations do similar things, motivated by economic concerns of some form or another.
One Might Argue These Titles Matter Only Inasmuch as They Affect Your Pay
Perhaps some take the opposite tack as me, naming their folks the comparably less glorious sounding, “programmer” in the hopes that it will deter them from securing competitive offers. In any case, a decent argument could be made that the title distinctions are significant only inasmuch as they are predictive of different pay brackets.
Chris Lema’s article seems to go into this, effectively stack ranking in order of “programmer, developer, software engineer,” which I’d wager, corresponds to the stack ranking of their market values. But this is necessarily fluid and somewhat tautological, like saying that Programmer I is less experienced and lower paid than Programmer IV.
But We Sure Do Seem to Like Inadequate Metaphors…. Which Has a Cost
I don’t have a particularly high opinion of job titles, and I’d say it’s their wild variance across organizations that make any meaningful taxonomy a Rorschach test. The difference among these titles is really in the eye of the beholder. But I will leave with a final point — I’m fine with “programmer” and “software developer,” but I’m not really a fan of “software engineer.” Perhaps this makes me a hypocrite, but my goal in handing out that title was to make people more marketable, not to pick the title that I liked best. And the reason I don’t like the title “software engineer” might actually surprise you a bit.
I don’t like “software engineer” for the same reason that I don’t like “architect” as a title. I’m also not really big on the set of titles that link software development to the Medieval guild model. The reason for all of this is the same. Writing software isn’t like civil or electrical engineering. Writing software isn’t like building construction. Writing software isn’t like blacksmithing or making soap in 12th century France. Writing software is really kind of unlike anything humanity has done before, and so I prefer titles like “software developer” and “programmer,” that don’t carry the baggage that comes along with their analogy-oriented counterparts.
My standards for what we call ourselves are thus pretty low. I’ll settle for “anything that doesn’t create confusion.” I’m personally partial to “technologist,” and “problem solver.”
By the way, if you liked this post and you're new here, check out this page as a good place to start for more content that you might enjoy.
If there’s a world word reserve, I think I’d prefer for you to ignore it, Erik. I can come up with a list of people who need to engage in the conservation.
But besides that, I’ve always preferred to be understood, rather than attempting to impress people then needing to clarify what I just said. So whenever someone says, “… so whaddya do?”, I always answer with “programmer” until I have a better feel for their technical knowledge.
Thanks for the kind words! And, I’d say what you do sounds like a reasonable approach to me. I say things like, “I write software” to non-technical folks, typically. Industry savvier folks get, “I’m a consultant” unless they ask for more details.
For some more insight into this ‘title debate’:
https://www.youtube.com/watch?v=zDEpeWQHtFU
Interesting video — thanks for the link!
This talk is excellent!
Sorry to be picky buy you misspelled Hanselman, I don’t want you to incur any Hanselwrath.
Good catch — thanks!
I always preferred to call myself “designer”, “software designer” or (more specifically and accurately) “firmware designer”. “Designer” was what I was and what I did.
Makes sense. Did you ever have this formalized as a job title anywhere, or is this just how you explain your work to people?
The latter. Formal job titles were ‘the usual’: “Software Engineer”, “Senior Technologist”, and so on. Neither imaginative nor descriptively accurate. 😉
FWIW, I actually like “technologist.” I feel like it communicates a certain love of the game and an ability to do general problem solving.
Hmm. I’m glad it works for you, but to me, “technologist” is incomplete. It communicates that I am a scientist/engineer, a technical sort of chappie, but misses out on the creative and artistic sides of our discipline. IMO, of course. 🙂
Perhaps this discussion just illustrates that our profession is complex and multi-faceted, to the point where one or two words is insufficient to communicate all that we do?
Agreed, definitely. And that inherent reductionism is why I tend to view titles somewhat skeptically.