It's an interesting topic, and I think it says a lot about job titles and what they mean to us. Job titles, especially in the tech industry, are a lot more flexible and often a lot more unique than you'll find in more traditional industries. But one thing which I've noticed throughout my career is that developers and engineers derive a lot of self-worth from their position and title, and I think this is how the junior and senior title have come to be synonymous with experience and ability.
I'd like to offer my take on this. There are so many job title prefixes: intern, junior, the omitted regular, senior, principal, lead, chief, vp, director, and so on. When you only look at job the job titles junior and senior, it's easy to fall into the trap of thinking they simply refer to experience, but when you look at the larger list, it becomes apparent that they refer to your role within an organisation.
For example, an intern is there to learn and gain experience, they'll probably pick up some crummy tasks, but they won't be leading any projects. Juniors tend to fall into the same category, being in a position where they're learning, and will often have a mentor, but unlike the interns, juniors tend to be more permanent members of a team and have slightly more responsibility.
Then you have the regular-level developer, where the position qualifier is omitted. At this level, they'll be expected to take on more responsibility, perhaps be more independent, and generally do more.
Following this is usually the senior developer, which again will come with an increase in responsibility, which can be anything from mentoring other members of the team, to being responsible for more projects, or overseeing more systems, etc.
And on it goes.
I'd like to introduce a theory I have on the progression of programmers, as I believe there are two main routes that one can take in their engineering careers, the specialist route, and the generalist route.
Those who follow a specialist route tend to develop a deep understanding of a limited number of subjects, and often in the workplace this means certain projects and systems. The trajectory of these careers tend toward increased responsibility for these areas, and in the day to day management and development of them. As their responsibility increases their roles will change, to senior, principal, lead etc, as would be expected.
On the other hand, those who follow a generalist route tend to develop a broad understanding of many subject areas, and often in the workplace this can mean being responsible for a larger number of projects and systems. While generalists lack the deep understanding of certain subjects that specialists have, by having a broad understanding of many areas, they fit well into architect roles. As their responsibility increases their roles will change, to senior, principal, lead etc, as would be expected.
So above we have two very different types of engineers, on one hand, highly knowledgable specialists, experts in their fields, and on the other hand, generalists, widely knowledgable in many fields, and yet they often share the same job title prefixes. This is because it refers to their role.
It's not about whether you're new to what you're doing, it's not about whether you're better than someone, or not good enough yet. The job title you have, the qualifier before your profession, should refer simply to the role you fulfil within the organisation.
Whether you're 21, straight out of university and in your first junior role as a web developer, or you're 40 and have recently changed careers to a junior role as a web developer, you're both juniors. Your position is that of a junior, and that's okay.
It doesn't say any less about who you are. As your role grows, and your responsibility increases, so too will your job title qualifier, whether you become a highly seasoned artificial intelligence natural language processing expert, or a wily and battle-hardened distributed systems architect.
I hope you enjoyed this ramble, and my terrible drawings above.