Promotions become a sensitive subject for engineers, sooner or later. When joining a company, few developers have this on their mind - rightfully so, as people are focusing on getting up to speed. But as time goes by, and as more and more people get promoted around them, promotions become top of mind for many.
Do Your Preparation
Once you decided you have some interest in being promoted, start with gathering information on the basics, and assess how realistic a promotion for you is.
Understand the promotion process at your company.
Every company has a different process for promotion. While similar companies might have similar processes, but don't take this for granted. If there is information written down on the process, that's a great start. The best place to start with is asking your manager. As companies grow and mature, promotion processes change. The most common types of promotion processes I've observed are these three ones:
Informal promotions: managers decide who gets promoted. Several managers getting in a room, then coming out with a list of people promoted is the typical process for smaller startups and companies. In the meeting, managers present people on their team, and the group decides if they are ready for promotion.
Semi-formal promotion process with a manager-heavy promotion committee. As the company grows, getting all managers together becomes difficult and overly time-consuming. Also, the biases of the previous process start to be a lot more visible. Leadership will aim to put a process in place that is more scalable and fairer. This usually begins with writing down basic expectations for each engineering level and requiring managers to submit short documentation on why the engineer on their team is ready for promotion.
Formal promotion processes: promotion packages and committees. This is the type of process companies like Google, Uber, and several large tech companies follow. It requires having clearly and extensively defined job ladders, with clear expectations at each level. The idea is to make promotions as unbiased as possible. In return for a more fair and transparent process, far more documentation is produced. Extensive self-reviews, peer reviews, and manager reviews are written. A promotion committee formed of senior engineers and managers decides on whether the promotion can go through.
All approaches have their benefits and drawbacks. Know what your organization is following, so you have a better idea of how you and your manager will have to prepare for it.
Most tech companies follow an approach of promoting people to the next level, who are already performing there. Promotions are usually a recognition that your impact and skills are consistently exceeding what is expected of you, and they are in line with what is the norm at the next level.
So how are you doing, compared to the next level? Answering this question is a lot easier when you work at a company, where competencies and levels are clearly defined in a document, that you can reference. Some good examples of well-defined competencies include the likes of Monzo, Square, or Rent The Runway. If your company has well-defined competencies, read through the expectations at your level, and the next level. Make a list of skills that you've demonstrated and the impact you've delivered and how it matches those expectations.
If your company doesn't have clear competencies and expectations, you still need to figure out how you are doing against current expectations. You'll also want to know what is expected to get to the next level. As a rule of thumb, to be considered for promotion, you're expected to do very well at your current level. So you can start with getting feedback on your current performance, talking with the person who is in the best position to give this feedback to you: your manager.
Get your manager on your side
No matter what process your company follows, if your manager does not support a promotion, you have very slim chances of getting there. So make sure to get your manager on your side. How do you do this? Ask them about how promotions work, what their philosophy on promoting is. Ask them how they would rate your current performance, compared to the current and the next level. Depending on your manager, you might decide to bring this up step by step, but you'll need to have an honest conversation about this, sooner or later.
It is in the best interest of your manager for you to be promoted - when you are ready. Managers are judged by their ability to have their teams deliver better outputs. They do this by having their engineers be more efficient as a team. For the team to be more productive, engineers on the team need to grow to be more efficient, reliable, and senior. One of the externally visible indicators of growth is promotions. A promotion implies that the manager helped this person grow - either by mentoring, coaching, or just getting out of their way. A manager, whose team is becoming more senior indicates they are doing an excellent job cultivating talent.
So we know that promotions make managers look good. Still, there are plenty of developers who think "my manager would never promote me.". Ask yourself: why is that? A manager whose directs are stagnating starts to draw unwanted attention, both from above and from their team. If people keep getting average or poor performance reviews, never being up for a promotion, that also doesn't look good on the manager. So after you've asked yourself why your manager doesn't seem to want to promote you, ask your manager as well. It is in their best interest to tell you what the areas are that you can and should grow.
Be realistic in promotions above the senior bar
Typically, being promoted up to the senior level is mostly based on gaining skills, demonstrating those, and delivering impact. However, above the senior engineer level, other factors come into play.
Set your sight on the promotion
Once you know how the promotion process works, have assessed yourself, and have your manager on your side, it's time to focus.
Set goals to close the gap on areas you lack for the next level
There will undoubtedly be several areas you need to either get better at or demonstrate impact. This might be ranging from areas like software engineering, executing with impact, designing solutions to complex problems, collaborating better with others, and many more.
Set S.M.A.R.T. goals that will help you get there - specific, measurable, attainable, realistic, timely. Set goals that are only dependent on you, not on external factors, like being given an opportunity. For example, if an area you've identified to improve is to get better on architecture, don't set a generic goal of you architecting a complex project. But you could set a goal of thoroughly reviewing at least one proposal per month, mentoring at least one junior engineer for 3 months on this area or reading a relevant book and presenting learnings to your team and organization the next 2 months. If you are confirmed to lead a project, you could set the goal of getting your proposal reviewed by two people senior to you, who are outside your team.