I've had a pretty good run with promotions lately. When I transitioned from being an engineer to management, I had eight people report to me. Two years later, all of them got promoted to the next level, as well as a few other developers, who joined my team later on. I've since helped people outside my team put together successful promotion cases and have been a member on a few promotion committees for engineers. Recently, I also got promoted to the next level of engineering management.
Promotions become a sensitive subject for developers, sooner or later. When joining a company, few people have this on their mind - rightfully so, as engineers 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. As a manager, it naturally became a topic I frequently found myself thinking about.
This article collects advice on promotions that I've been giving to engineers on my team - many of whom have since been promoted to that next level.
- Do your preparation
- Set your sight on the promotion
- Get help & frequent feedback
- Put in the work
- Stay grounded
- Help others
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.
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.
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.
This kind of conversation always felt awkward for me, as an engineer, and I avoided it for a long time, in my career. Looking back, I wish I hadn't. There's a simple reason why.
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.
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.
First, there might be a budgeting limit to how many people can be promoted to higher levels. Some places require a business case on why a lead, staff or principal engineer is needed for a given team or area. If there's no business case, you might not be able to be put up for promotion. This is true even if you might have a fair chance of being promoted otherwise.
Second, above the senior engineer level, you might find it challenging to find projects that are large and impactful enough to warrant a promotion. For example, your team might be busy shipping small, incremental features, that have little complexity, but decent business value. You almost certainly won't be promoted beyond the senior level by just doing great work here. This is a case where you need to take ownership of your career and decide how to move forward. Do you wait around for a new opportunity to come by? Do you move teams, to lead work on a complex and impactful greenfield project? Do you propose a new initiative that has a massive business impact, convince stakeholders to kick it off, and end up leading it? There are no simple answers: you'll have to take the initiative, gather support, and ultimately take smart risks in your careers.
As you move up the career ladder, it gets harder and harder to get to the next level. It's a similar challenge on the developer ladder, as it is with management. Going from manager to director is usually similarly difficult, as it is going from senior engineer to staff or principle.
Once you know how the promotion process works, have assessed yourself, and have your manager on your side, it's time to focus.
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.
There are two kinds of promotion cases. One is a dead-simple one: the engineer has, without doubt, been executing at the next level for a long time. The other one is more challenging: the person shows lots of promise, but there are a few areas where they fall short from the next level. This second type of promotion case is the coin-toss-type, where the outcome could go either way.
When you're working towards a promotion, aim to consistently perform at that next level: don't limit this only to your focus areas. If you're aiming for the senior level and your team's project is at risk, set up and help the whole project succeed. If your manager is asking for volunteers for a chore that is boring, but important and no one is stepping up, consider putting up your hand. On top of smashing this work, automate parts of it, to make it easier for the next person on the team to do it.
When the time comes for your manager or you to put together a promotion case, the first question will be on what you've achieved, that warrants this promotion. By that time, you will have forgotten much of the great work you've done. So get ahead of this and start writing up all the work you're getting done.
Start a brag document or something similar, that you continuously keep up to date. Share this with your manager, so they also are aware of all the work you're doing. No one knows the work you do better than you do. You'll likely surprise your manager with how many additional things you're getting done. And you'll make both of your lives easier when you do get put up for promotion.
Working towards a promotion is no short process: it can range from a few too many months. It's easy to lose track of how you are doing and if you are still on target for demonstrating that you are at the next level.
While your manager is probably on your side with working towards a promotion, there is only so much feedback they can give you. You can speed up your professional growth by getting a mentor, who is another engineer.
Try to find a developer who is already at the next level. Even better, if they have been promoted within the company. Ask them for mentorship specifically on growing to the next level. Share your assessment and goals with them and ask for feedback and help on helping you grow to that next level.
Within my company, I've noticed that developers who proactively set up these kinds of mentorships saw multiple benefits. For one, they became a lot more strategic about how they wanted to based on feedback from their mentor. These mentors usually have been with the company for longer and helped the engineers navigate some of the not-so-well-documented parts of promotions. Second, even when they were not promoted, developers with mentors bounced back a lot easier. They had their mentor on their side, who were invested in them getting to that next level. This made it easier for these developers to pull themselves together, keep being great at their game and land that promotion the next cycle.
Setting goals and working towards them is one thing. However, especially when you're working towards a major milestone like a promotion, getting regular feedback on how you're doing is just as important.
Make a point to regularly present progress you think you've made to your manager. Ask feedback from them about your progress towards that next level. Have conversations early, on whether they support you being up for promotion at the next cycle. Even if the answer is "not yet," get them to help define actionable things, that if you complete, you will be ready for that next level.
If you've made it explicit to your manager and mentor that you are working towards a promotion, put in the work. In the months leading up to the nomination, double down on performing at the next level, getting things done and helping others.
A mistake I sometimes see engineers do is being so focused on their promotion is they end up damaging the team. Come promotion time, and they often end up not being promoted, as it's clear that they were the opposite of a good team player. More and more companies are careful - rightfully! - to not promote people who pull the team down.
Elbowing people out of the way to reach the goals that you set for promotion is a bad strategy. First, it's very short-term thinking. The same peers you might walk over might be asked for feedback at promotion time. But even if they aren't, it's a sign of immaturity. The more senior you get, the more you are expected to be a great team player while delivering solid results. It's not always an easy balance to strike. But if you catch yourself pushing ahead with your goal, in a way that upsets people on your team, consider changing your approach to be more collaborative.
Once, a developer set the goal with their manager, that if they successfully lead and ship ComplexProjectX, they will be up for promotion. The project went well, and the person went up for promotion. As this person heard the good news, they kicked back, letting go of the project, without delegating anything to others. As the project was rolling out, more and more issues surfaced, with no one taking action. Eventually, the rollout had to be reverted.
This happened right before the promotion committee met to discuss the case of this engineer. In the discussion, they agreed that while this person showed great skill in many areas, they displayed immaturity by disappearing the eleventh hour from the steering wheel. There was no communication and no good explanation of why this happened. The person was not promoted that cycle.
The first thing I tell all engineers on my team is that neither I nor any manager can guarantee a "sure promotion." If anyone tells this to them, don't believe it. I've seen too many developers getting burned by promises like this. Even with the best meaning manager, there are many reasons why that "sure" promotion won't materialize.
First, any manager can unexpectedly leave. The most common bitter story goes like this: "Manager X promised I'll be promoted, based on the great work I did. Then they left. My new manager did not honor this promise and decided against promoting me". The second reason is that any manager can misjudge either how well their direct is doing, or the political situation around promotions in the company. As tempting as it is to believe good news around "already in the pocket" type statements: don't. You're setting yourself up for disappointment if you take promises like this at face value, however sincere they might be.
However well you might be displaying performing at the next level, and however much your manager supports you, you might not get promoted. If your only goal was the promotion itself, you'll be demoralized and might consider quitting and looking for a new job, just because of the outcome itself.
I once had an engineer who I strongly supported, and I was 100% convinced they would get that promotion. They still didn't, despite me fighting for this person, going high up the chain to make my case for them. After this, I became even more committed to helping this engineer be recognized in the next cycle. Luckily, this developer was not only focused on the outcome but cared just as much about growing in other areas. The next time, they smashed the promotion process and continue to have a high growth trajectory.
If your primary goals are about professional growth, even if you are not promoted, you will have gained valuable skills. These skills might be things like conveying engineering best practices, mentoring others, leading projects, sharing knowledge, and others. Focus on these skills over just the promotion. Promotions will a hit or miss, based on the process your company follows. But no one can take away your growth from you.
Many people look at promotions as a validation of having done a great job. However, while a successful promotion does mean stellar feedback, most of the positive recognition you'll get won't be via promotions.
You'll get feedback every day from people who work with you, people saying things like "thanks," "you really helped me" or "I would have been stuck a lot longer without you." You'll get feedback from your manager and mentors. And, of course, there's that formal performance review, where your manager will also summarise the great stuff you did - along with areas to improve. Getting a bonus or a pay rise is also all positive feedback - and all of these will happen far more frequent than promotions.
I've had a talented developer with a few years experience join my team, who was itching to get to the senior level. They had a friend who had been promoted to this level recently, and they felt that this friend was ahead of them. This person was frustrated when, after going through their self-assessment, I told them they have far too many gaps compared to the next level to go for promotion this cycle. I said that even if they put in the work, I can't see them going up for promotion before the next cycle, which was 9 months away. I suggested we put a plan together to make this happen.
First, this person was upset and thought I had it out for them. Slowly, after calming down, we put together a plan. Step by step, we made progress, and they started to realize just how much work they have to do. In the end, 9 months later, they got promoted. They still barely have 5 years experience and are already the senior level. For reference, it took me far longer time to get to the same level. Still, unlike them, I never felt behind.
Does an extra 6 or 12 months make a difference in your career? The earlier you are in it, the more you think it does. However, after a while, you might realize that it's not a sprint, but a marathon. While you might get promoted a few years into your first job, promotions will slow down over time: they'll be a lot more challenging to get.
Play the long game. Be positive and focus on your continuous professional growth. Treat your growth like a journey, not a competition of promotions. You'll be a lot more balanced by doing so.
Getting promoted within a company is never an easy achievement. When you succeed with this, consider giving back and taking someone under your wing, helping them grow. Let others know you're open to mentoring others. If you see someone in your team, who has good potential to grow and you feel you can help, offer to mentor them.
Even if you've not yet been promoted, do help others grow and get recognized for their growth. If you work in a company that has a more heavyweight promotion process, with peer reviews, you might be asked by others to give peer reviews for their promotion. If you joined at a higher level, other engineers might approach you for advice on growth.
Don't forget that promotions are a recognition of your growth. And one of the best ways to grow is to teach others, via mentoring. Keep being approachable and helpful, and pay it forward. You'll learn more, make many allies, and your career will be a far more enjoyable journey this way.
This article was originally posted on The Pragmatic Engineer Blog under Software Engineering Promotions: Advice to Get to That Next Level.
About me: I'm an engineer turned engineering manager, working at the intersection of Silicon Valley & European startups and tech companies. Follow me here and on Twitter. I write longer essays on software engineering on my blog, The Pragmatic Engineer. I also send a monthly newsletter with notes on software engineering, tech leadership and interesting things I've been thinking about.