The Tech Promotion Algorithm: A Structured Guide to Moving Up

While most topics in the ByteByteGo newsletter focus on technical knowledge, we also acknowledge the critical role of managing career growth and development, particularly for those at or targeting senior software engineer roles. In today's issue, we are fortunate to have Steve Huynh, Principal Engineer at Amazon, as our guest contributor. Steve is an 18 year veteran at Amazon. He’s conducted more than 850 technical interviews, trained thousands of people on how to conduct interviews and assess candidates, and has directly mentored dozens of folks to get to the next level.

I encourage you to check out his new program, Speedrun to Promotion.

I also encourage you to check out his YouTube channel, and his free newsletter for further insights.

Follow Steve for more on LinkedIn and Twitter.


If you choose to go down the path of becoming a high-level tech IC, there’s a common frustration and helplessness that comes from not knowing how to get promoted. It’s easy to feel stuck and uncertain about the next steps in your career progression, even if you are doing everything that has been asked of you. The lack of clarity and guidance on what it takes to level up can be demotivating, especially if your peers seem to be passing you by.

A lot of this frustration comes from the lack of structure to the whole process. But because promotion is a process, it can be streamlined and optimized. In this newsletter, I’ll explain to you my personal approach to promotions that takes the guesswork out of the equation.

A lot of advice for promotion I would characterize as guess and check. It’s not wrong per se, but it doesn’t take into account the specific situations people are in, and it’s not guaranteed to terminate. Advice like “you should become a subject matter expert (SME) on your code base, ” or “you should lead a project from start to finish” may very well be true. The problem is that some of this advice doesn’t have clear boundaries. When exactly do you become an SME? You can also lead projects from start to finish and still be passed up for promotion and not know why.

A better approach is to invert things to create a plan that addresses gap areas that you proactively identify. This ensures that your effort is focused on things that directly address next-level criteria, instead of things where you’ve already demonstrated strengths, or worse, put effort into things that won’t make a difference at all. I call my approach the Tech Promotion Algorithm. In this newsletter I will share the exact steps to this algorithm.

I developed this framework over the course of nearly 20 years in the tech industry. Over this time I’ve helped dozens of people get to the next level, whether that was a promotion in-role or a lateral role change, like from SDET to SDE. This also includes several people that I’ve directly helped get to the L7 principal engineer level.

Preconditions

Like any algorithm, there are preconditions that must be satisfied before we can proceed:

Tech Promotion Algorithm

The Tech Promotion Algorithm consists of three steps.

  1. Generating a 360 assessment of where you stand - You need to identify what the next-level criteria is, and determine your strengths and weaknesses against this criteria by doing a self-assessment, working with your manager, and soliciting feedback from other coworkers, preferably with the people that have a say on whether you get promoted or not.

  2. Developing an actionable plan and reviewing it with others - Once you’ve compiled a comprehensive assessment of where you stand, you need to generate a plan of action. Review this plan with the same audience that you solicited feedback from to ensure that the plan sufficiently addresses your areas of growth.

  3. Execute - Since you’ve created an actionable plan it’s time to action that plan. How you deliver is just as important as what you deliver.

Iterate on these three steps until you are promoted. After every iteration, your areas for improvement should shrink, the plan should have less and less ambiguity, and execution should be much more focused. While there is no guarantee that this approach will always lead to a promotion, it optimizes for taking action on targeted areas in a systematic manner, so you at least avoid relying on guess and check methods.

360 Assessment

To create a comprehensive assessment of yourself, you must get feedback from the following sources:

  1. Previous promotion feedback, if applicable

  2. Self-assessment

  3. Manager

  4. Peers at the same level or below (what I call adjacent and downward)

  5. Individual Contributors (ICs) and managers who are at higher levels and outside of your local organization (what I call upward and outward).

I will go over each type of feedback provider in more detail. But it’s critical that you both ask for your strengths and areas for improvement in terms of next-level criteria. Feedback against at-level criteria is useful for things like yearly performance reviews, but they are not the same.

Many companies, especially large ones, have published promotion criteria and leveling guidelines for each role. If this exists for your company, you are ready to proceed to gathering feedback.

If your company is small or doesn't have formal promotion criteria, don't fret. If you do some sleuthing online, you can find the role and level guidelines for other tech companies. Use sites like levels.fyi to map your role, level, and company (or a comparable company) to the level guidelines that you've found online. This approach isn't perfect, as there is often company-specific culture and terminology baked into these documents, but for the most part, these criteria are shared across the industry. Gathering 2-3 of these level documents and mapping them against levels.fyi should give you a good sense of the scope required at the next level for your company.

You should have 8-10 dimensions for which you need to gather data points. Put these in a spreadsheet as rows. The columns will be the feedback sources. To fill out your assessment, you will color the cells red for needs major improvement, yellow for needs minor improvement or more data, green for strength, and gray for no data.

Previous promotion feedback

A quote that resonates with me is “you either get the success you want or the lessons you need” after you attempt to do something ambitious.

If you have it, the best type of feedback comes from prior failed promotion attempts. While it never feels good to be rejected, this is the best type of feedback because it speaks to the exact reasons why you weren’t promoted.

Sometimes the process fails and this feedback can be cryptic, ambiguous or not actionable. If this is the case, make sure to follow-up for clarification. Giving poor feedback from a formal process is unacceptable, and if needed, should be escalated.

I have heard of second-hand stories where a promotion panel was not inclined for promotion, but changed their minds after clarifications were requested, which gave the manager an opportunity to provide further evidence that eventually made the difference.

If you know who your promotion feedback providers were from previous cycles, schedule some time to chat with them about your strengths and weaknesses. These folks are typically inclined for your promotion, as those who aren’t inclined usually decline to provide feedback, so it’s really important that during these conversations you focus on your weaknesses and not on rehashing your strengths.

Self-assessment

Self-assessments can be challenging due to our inherent biases and blind spots. Doctors, for example, avoid diagnosing themselves because health issues can create blind spots and can hinder their ability to identify those same health issues.

While filling out the spreadsheet column with your self-assessment should be relatively easy, it’s important to keep two things in mind. First, you’ll likely be lenient on yourself when assessing whether you are operating at the next level. Don’t think of each item as a checklist where one data point is sufficient, but rather treat it like a situation where you need to demonstrate multiple data points for a sustained period of time at the next level scope. Second, what’s really valuable when generating a plan is discovering a significant discrepancy between your self-assessment and assessments from others. If you do find these, make sure to spend the time to understand why there is a disconnect. I have noticed that this is often the reason the people I’ve worked with are held back for an extended period of time.

Managerial Assessment

Taking this matrix that you're filling out to your manager is a really easy way to get feedback on your performance because you've done 80% of the work for them. You just need to go line by line and get their opinion. Sitting back and answering yes/no/maybe questions is not as mentally demanding as trying to generate specific feedback. 

Again, you are looking for significant inconsistencies between other assessment sources and your managerial feedback. If you discover these, do your best to inquire why your manager thinks this without becoming defensive or confrontational. If you come across as genuinely wanting to improve, it makes a big difference. This is also a useful exercise if you meet with your skip-level manager if they have visibility into your performance.

Adjacent/Downward and Upward/Outward Feedback

It can be really uncomfortable to ask coworkers for feedback, especially in the context of your own promotion. It can feel forced, contrived, and disingenuous for both parties. To get over this, ask for feedback in the context of an ongoing or recently completed project, initiative, or delivery. "Hey Steve, now that project XYZ is completed, I wanted to talk to you about my performance. I'd love to hear your opinion on what went well and if there are any areas where you think I could have handled things differently." Bonus points here if you can target people who will either be in the room when a promotion decision for you will be made, or folks who were in the room when they declined to promote you.

In all cases, it's very important that you listen carefully to the feedback that others are providing and seek to understand what they are saying and why they are saying it. If you feel the feedback is vague, then ask for specifics. For example, if someone indicates that your code quality could be higher, it's fair to ask for specific examples. If they point to a pattern of behavior during meetings that you don't see, ask them to take you aside when it happens next so you can debrief on what happened.

The importance of listening, striving to understand, and not becoming combative or defensive cannot be overstated. It’s important to be aware of your tone of voice and body language. Even if you don't agree with the feedback and can provide evidence to the contrary, there is almost always a kernel of truth to the feedback that others have provided. Seek to understand why they feel this way. We tend to judge ourselves based on our intentions and others by their actions. Try to understand what actions made them feel this way about you.

Generate An Actionable Plan

After you've filled out this matrix it's time for you to formulate an actionable plan.

Promotions at most tech companies occur on a quarterly or semi-annual basis. It's best to start the algorithm as soon as possible by first identifying the promotion cycle you want to target so you can start right-to-left planning, i.e., working backwards from a target date. For example, if promotions happen twice a year, in January and July, and it's currently mid-October, it's probably wise to target the July cycle unless you are very close.

But don't target a promotion date too far out because promotion feedback from a formal process is the best input into the algorithm. I recommend in most cases that you target the next full cycle. The worst case is that you get rejected and receive a ton of actionable feedback. The best case is that you get promoted. I've worked with several people who didn't think they were ready but decided to make a push based on my advice and succeeded on their first try. As you are creating and finalizing your plan, review this plan with the folks you gathered feedback from to verify that it adequately addresses your areas for growth.

Generating a plan is the most challenging part of the algorithm because the sample-space of what you could do is very large. This is going to take time and a lot of effort. In my program, Speedrun to Promotion, I advise that people take at least two weeks to come up with a plan and review it with others.

Here are some tips on how to create a plan:

Generating a plan will take time, research, and a lot of mental bandwidth. It’s a lot of work because you’re transforming vague ideas into concrete, actionable ones. In a sense it’s a lot like taking product requirements and turning it into working code. If you spend the time to do the research, scheme, and incorporate feedback from others, I’m fully confident that you can transform your matrix into an actionable plan.

Execute

This is where the rubber meets the road.

There are three elements to successful execution of your plan.

  1. Time management and making consistent progress

  2. Ensuring visibility

  3. How you deliver

Time Management and Consistent Progress

A common complaint that I hear is that people don’t have the time to try to get to the next level given their current obligations and workload. If that’s the case, then you will need to become more efficient if you are going to succeed at the next level because the demands on your time are just going to increase.

I advocate for trying to find 8 hours a week to work towards your promotion. If there’s a natural intersection with your promotion work and your existing commitments, that’s great. Otherwise, you will have to find time from somewhere.

If you have 40 hours a week to devote to working on someone else’s dream but you don’t have 8 hours a week to devote to your dreams, you need to readjust your priorities.

There are really just three places you can find the time:

  1. You work more hours - There’s always the option of putting in more time during morning, nights and weekends. This isn’t usually sustainable for long periods of time.

  2. You become more efficient - There have been several studies conducted in many countries on the four-day workweek. They all seemingly conclude that there is no loss of productivity when workers work four days a week vs five because knowing that you have less time to do the same amount of work makes you more efficient. Eliminating distraction by turning off notifications and avoiding social media and news sites goes a long way.

  3. You say no to more things - Explicitly saying yes to one thing means implicitly saying no to other things. If you find yourself committed to work that isn’t going to move the needle, try to find ways to shed this work.

Your goal at the end is to find 1-2 hours of uninterrupted time per day that you can dedicate towards your promotion.

You want to execute with a slow burn instead of a heavy lift. In other words, you want to slowly chip away at your plan, and not pull all-nighters right before critical deadlines and milestones.  If you can make this work a habit, it won’t feel like you’re stretching yourself thin, and when you do get promoted you’ll be set up for success.

Ensuring visibility

As you progress through your plan, make sure that the right people have visibility into your work. For your manager you may already have a regular meeting. For others, it’s critical that they can speak to your work when asked about it in the context of your promotion. This may involve sending out status updates, adding attendees to meetings and sending out notes, adding people to code reviews, or scheduling more 1-1 meetings.

A technique that I’ve found useful is, for each feedback provider, to write down what you’d want them to say about your performance when it is collected for your promotion packet in the future. Then, when you’re executing your plan, you just have to operate in a manner that will elicit the feedback you want.

I do a similar thing with my YouTube videos. As I’m writing my script, I write out the comments I want for my future video. When I produce a video, I try to do it in a way that will elicit the comments that I want. It’s worked several times where I’ve called my shot exactly, and my viewers have left the same comment that I came up with.

This works in the real world too. If you want someone to comment on how efficiently you’ve delivered a project or explained complex topics in a concise and crisp manner, write out a paragraph in their voice about the type of praise you want. When the time comes to provide visibility on your work, you will instinctively know how to operate to receive those comments without thinking.

Because you have the most visibility into your work, I recommend that you attempt the first draft of your promotion document, even though the responsibility of the final version of the document likely lies with your manager. This does two things. The first is that there is a high likelihood that you will include things that your manager wouldn’t. The second is that it’s much easier for your manager to update a draft rather than compose an entire document from scratch. Freeing up your manager’s bandwidth increases the possibility that they can spend more time improving the quality of the document. The same goes for you. If there are document templates or example promotion documents you can get your hands on, you can also save some time and effort by drafting off of prior work.

“Success has many fathers but failure is an orphan.”  For large projects, make sure that it is clear from your artifacts what your specific contribution is while drafting your promotion document.  Artifacts are the only absolute way of knowing who did what.  For example, if you write a document make sure to indicate who was the primary author vs who was simply a contributor.  Avoid descriptions like “Steve was critical to delivering project XYZ, without his work the project would have been delivered late” and instead prefer things like “Steve was critical to delivering project XYZ because he was the first to discover an issue with the critical component ABC.  A lot of legacy code needed to be replaced very quickly, and Steve stepped in and created a work around with high-quality and at breakneck speed to save the project timelines.”

How you deliver

Oftentimes it’s not what you deliver but how you deliver it. As a thought experiment, if two engineers, a mid-level and a senior level person, were assigned the same exact work, would you be able to determine who the senior engineer was solely by their work? I think it would be obvious to most. What would those differences be?  Do that.

I tell people that their level is not tattooed on their foreheads. One of the best compliments you can give someone is saying “I just assumed Steve was a senior engineer during that meeting by the way he acted.” It comes down to presence and awareness. Can you read the room and act in a way where people just assume you’re already at the next level?

My current manager was the one that helped push my promotion to principal engineer over the finish line. He told me “I think about all of the bad bosses I had in my career and the good bosses I’ve had. I try not to do the things that annoyed me that the bad bosses did, and I try to embody the things I liked about my good bosses. It’s easy to say but hard to do.”

Conclusion

There are some more details and tactics that I haven’t outlined, such as some considerations for lateral role changes, how you can involve your skip-level manager, and techniques for documenting your achievements in a durable manner. There are also more details for those that are attempting promotions past the senior engineer level, since those come with some unique challenges, like a heavy emphasis on outsized impact. But generally, the steps are the same, assessment, plan generation, and execution. If you get rejected, repeat, otherwise, you made it.

Getting promoted is a matter of time. Some people don’t need any help as they breeze through the ranks to the highest level. Others need more help.

I describe my new program, Speedrun to Promotion, as a bootcamp for people who already have jobs. There, you’ll work closely with me and my team to generate a personalized plan, get hours of further course instruction, and join a community of like-minded and ambitious tech professionals. There will also be interviews with people that have been promoted extremely fast to the highest levels in big tech and executives with decades of experience promoting people.

I’ll be hosting a live stream launch event for Speedrun to Promotion on October 13th. If you’re interested, please register. As an added incentive, the first 20 ByteByteGo subscribers who join the first cohort will also receive a free 1-1 call with me.

Register Now