You’re Not a Senior Engineer, Yet
How I would choose to promote a developer, and why
TL; DR
- To become a senior dev, you need multiple skills — not only technical and experience, but also soft skills.
- You should be senior in your head and seen as so by your colleagues before any claim for the title.
Motivation
Every developer has once thought about being promoted to senior developer, for some reasons (career move, wage rise, daily tasks change, etc.). Each company has its own way of promoting people, with more or less equality and intelligence. Sometimes, being promoted senior is just getting a better salary. Sometimes, people don’t even know why they are promoted, or if it is deserved or not. Sometimes, people just want to be promoted because someone else was promoted in the team.
So let me list a few reasons that are insufficient to claim being promoted as a senior.
Age
I should be senior, given that I am older than anyone in the team.
Sorry, but if this really is what you think, then you will never be a senior dev. Maybe the company has recently hired you, or maybe you have been doing support in the last ten years before coming to development. Age by itself is not a reason. If your manager considers it as a reason to be taken into account, then he/she probably was not a developer himself/herself.
Experience
I should be senior given I am experienced.
OK, that’s already better than just being old. But again, what does experience mean here? Experience within the company? Experience within the current research field? Experience because you have been working for dozens of companies? A mix of this?
I personally believe that experience is key to become senior because it gives distance to the problems you have to tackle, but it is important to understand that experience alone is not equal to seniority.
Skills
I should be senior given I am a highly-skilled developer.
The question to answer is how you measure your skills and the quality of your work. Do you consider yourself being generally better than your teammates? Do you think your deliverables are close to perfect? Should your colleagues ask for your help to improve their code? If you respond “yes” to a single question above, then sorry, you are missing the point, although you may be the best developer ever.
However, being skilled in development is very important because it gives credibility — it helps in solving difficult challenges, it gives the ability to provide hints to teammates, it facilitates the code review, etc. So yes, a senior dev definitively has to be skilled, but not just skilled.

Knowledge
I should be senior given I code it the right way.
Have you ever met the kind of person who always knows how to make it right from start to the end, and who complains about the terrible design of legacy systems? Such people are often in love with a particular language or technology, which is of course way better than anything else.
Honestly, I believe it can be terrible to have a dev like this to manage or to work with. His/her judgment may be a strong issue for the whole team. Last but not least, preaching as a technology evangelist may very quickly become boring for the teammates.
On the other hand, it’s good to know a lot of technologies, it’s good to have convictions about good practices in development, and it’s good to defend opinions and to politely challenge the proposed solutions — as long as it remains respectful and clean. In short, know-how is a prerequisite for being senior, but with parsimony, and with human-feelings. And also only if you understand that there is not only one way to do things correctly, as Graham Lea smartly tweeted:

Soft skills
I should be senior given my human qualities, my leadership, and my communication skills.
You may be right — such qualities are necessary in order to be considered as a senior. If you are poorly skilled in technical questions, it may not be easy for you. And in the end, most of the tasks devoted to senior devs are strongly related to technical features: You need to be technically skilled, too.
But note that a purely technical guy who dislikes collaboration and meetings will probably not be a good senior in the eyes of the team leader, the project manager, or the immediate teammates.
So What?
None of the reasons above alone is sufficient to make a good senior. It is better to have a bit of all of them, without having one very high and the others very low. This is my personal definition of maturity.

Do you like to answer technical questions? Can you teach a junior the way to properly work in the company? Are you available for your colleagues, including offshore, and is it OK to pause your tasks to help them first? Do you understand the benefit of writing a minimum of specs before developing a feature? Can you work with a lot of context switching? Make sure to answer yes to each of those questions, because this is likely what the job is made of.
Personal considerations
My advice would be: do not expect a promotion just for its official sides. This is not about negotiating a title or a salary, but more likely a matter of attitude that eventually leads to a promotion.
You should already be senior in the eyes of your teammates and your managers before you claim the title.
If your colleagues show respect for your technical skills, your patience, your ability to explain, your experience, then it becomes harder for your manager to deny that your title should be upgraded to senior.
You’re Not a Senior Engineer, Yet was originally published in Better Programming on Medium, where people are continuing the conversation by highlighting and responding to this story.