“When I use a word,” Humpty Dumpty said, in rather a scornful tone, “it means just what I choose it to mean—neither more nor less.”
– Lewis Carroll (Charles L. Dodgson), Through the Looking-Glass (1872)
I’ve had a few discussions recently about IT job titles. My conclusion is that there is little agreement between organisations on the differences between senior developers and ordinary developers. Which should, perhaps, come as no surprise given that Robert Martin‘s latest book suggests that we as an industry have widely divergent definitions for the word architecture.
GDS & Associates was the best IT shop that I worked for before I founded Clarity Cloudworks. One thing GDS did oddly was assign job titles based on age. Senior developers were not more capable or have more responsibility than junior developers. Senior developers were just older.
When I use the word “senior” to qualify a role, I mean that:
- the role’s focus is to ensure and improve the process of doing the work. A senior developer still writes software day to day. But they primarily write programs not because the team needs to produce programs, but so they understand the process that the rest of the team are using. Their goal is to improve the team and the process.
- Part of a senior role is making change happen.
- Training, both new team members and existing members in new processes, is a large part of being senior.
- Senior people are responsible for the documents, both for the team’s processes and their objectives.
- Finally, senior people are responsible for explaining the team’s processes to anyone outside of the team.
The consequences of the confusion caused by using the same titles for different meanings are many.
- We hire people who don’t have the skills that we need.
- People take on roles that they do not want.
- And, given that we can’t hope to read the detailed job descriptions of everyone we interact with, incorrect assumptions about duties lead to constant, low-level conflicts. Which, in turn, often cause delays and periodically cause failures.
There are two trends that will help:
- The Skills Framework for the Information Age details skills and responsibilities. This won’t be perfect, but at least we can differentiate between the person who wrote programs from the person who set the standards to which programs were written.
- More promising are the flat, cross functional teams of Agile and DevOps. The details of job titles are less important when everyone is expected to have broad skills and the team is responsible for governing itself.
When hiring or looking for work, I urge you to ask the person who you are meeting what the difference is between a role and the senior version of that role. Discovering a difference in interpretation early could save you a lot of pain.