I found it awkward when a friend asked me many years ago, "buddy, what's the difference between a junior developer <or insert any other profession here> role and a senior one? because they don't wanna give me senior..."
Honestly at the time, I didn't have a spot on and immediate answer. I had to think about it for a while, and even then it wasn't sharpened as I liked it to be, since then I matured as a manager, and had to understand it, as it's a key for building a good organisation.
Before answering that, I will start with why it matters, or why it's important to understand the distinction between the two. If it was so clear why it matters, most people should have known some good answers to the difference, but from my experience most people (around me) don't have a clear answer, unless they start thinking about it and even then it's not immediately obvious. By asking a few more questions soon you will see why such a subtle question matters to you directly as well.
How do you tell whether you "deserve" more autonomy in your workplace than other employees (e.g. be it pushing code on your own, or handle the cash register yourself, or whatever)?
How do you know what salary range is right for your experience?
When and how do you, as a team lead, decide to promote somebody in your team?
How do you set terms with your newly recruited personnel on their title, "Senior Software Developer" vs. "Software Developer" (nobody likes to be called junior straight out there I guess, although some Linkedin searches resulted in showing some people use it :)?
To answer all these questions and more (you get the idea), it all comes down to a single question, the way I see it: what's the difference between senior and junior roles?
For any profession since the beginning of time, someone had to start "junior" without experience and probably learned on their own how to do some feat and developed the skill. Later, if they wanted to extend their "shop" and recruited more people and they taught them how to "work right".
A senior role means that a person:
- has to act professionally (it's worth its own post on this topic alone).
- has to have a high skill of the work they are required to do at their position.
- has to know the relevant processes of the organisation they are part of.
- has to be part of the culture of the organisation (pffft I'd love to get started on this).
- has to know the values of the organisation they are part of, as I discussed in a previous post about the values of an engineering organisation.
- is able to be as independent as possible from their co-workers and team lead, unless they need to escalate in certain cases...
- can teach the above and look over a newcomer to do their job professionally.
- takes more responsibility and accountability over whatever they work on.
And as some of us like to put it bluntly "If I woke them up at 2AM, they will know the damned answer and how to handle the situation".
Only once a newcomer achieves the above, they can be promoted to a senior role. Once we laid out the difference and expectations from senior roles, it's easy to portray how a junior can learn what they have to do in order to become seniors. It's clear as to why they "deserve" a promotion in salary as well. And now, as a team lead, you can have a plan of how to make it happen for them, and they know the path (+1 right here for good organisation).
In essence, even if you're a senior developer already, and coming to a new organisation, sure you can keep your title (given it's justified mostly on your experience and skills), but you will still have to learn the current place's processes, culture and values in order to really claim your seniority.
On the other hand, if you're a junior, there are still a minimum of required expectations from you, that's why there's still some orientations, boot-camps and on-job-training, etc. And hopefully, someone to show you the way.
You're welcome to share your experiences on this gap and how you think it should be bridged.