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.
Like any algorithm, there are preconditions that must be satisfied before we can proceed:
You are employed - You can’t get promoted if you don’t have a job. I also won’t cover how to get a promotion by moving companies.
You are not on a performance improvement plan and are generally meeting expectations at your current level - Promotion occurs when you can successfully convince the right people that you can handle more scope. If you aren’t meeting expectations at your current level, focus on that before trying to get promoted.
You have a supportive manager - It’s critical to have the support of your manager because, at most companies, managers are the ones who shepherd employees through the process, author promotion documents, and compile promotion packets. If you have a bad relationship with your manager, focus first on repairing this relationship. If this is not possible you may have to switch teams or companies since they are so essential to the process.
Promotion is possible where you are - Some companies have instituted promotion freezes due to the economy. You may also be "capped out" at your current position, as some companies don't promote people past a certain level. The easy way to know whether a promotion is possible is if others have been promoted at your company in the past to the level you are targeting, though even this might not be enough. If your company has a quota system, you may not be able to get promoted until someone else leaves.
The Tech Promotion Algorithm consists of three steps.
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.
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.
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.
To create a comprehensive assessment of yourself, you must get feedback from the following sources:
Previous promotion feedback, if applicable
Self-assessment
Manager
Peers at the same level or below (what I call adjacent and downward)
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.
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-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.
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.
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.
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:
Make sure that there’s nothing in your plan that takes longer than the time you have. You can certainly work on a project with a delivery date that is after your target promotion date as part of your plan, as many projects take years to deliver, but this will require describing a successful partial delivery. Try to describe a portion of the work as a complete whole, such as with critical milestones.
Think about things in terms of evidence and artifacts. What could you produce that is durable, and can be referenced as a smoking-gun of next level performance? This includes big deliveries, check-ins, publications, documents, internal wikis, patents, resolved issues, Etc. This will also aid in the assessment process for big projects where there are many contributors, it may be unclear who did what.
Study what others have done to get to the next level. Many promotion announcement emails have a summary of how the person got there. Use these emails to get a sense of what type of work gets people to the next level.
Ask those that have achieved the next level what they did to get there. You can also try to find their artifacts to examine how they went about their work.
Work with your manager and product managers to look ahead to see if there is next level work on the horizon that you can pick up.
If you’re having problems getting assigned work, it may be necessary to create a side project on top of your everyday tasks. If you’re targeting a high-level, there may be a criterion that requires you to wholly define and deliver an initiative with large scope.
Part of your plan may be to learn or master a technology or to pick up a new skill. Make sure that your plan doesn’t solely consist of passive activities like reading or watching videos. The best way to learn is by doing and by teaching others. If you want to learn a new framework, create something in that framework. If you are targeting a high-level, it may be required that you build something like a framework. Creating blog posts, wikis, or videos on a subject is a tangible way to create artifacts that demonstrate that you have acquired a new skill.
If your weaknesses are behavioral or soft-skills it may be difficult to create a plan to address them. The first step is to stop doing these things so that they no longer become reasons not to promote. The first order of business should be to gain enough awareness that you can recognize when you are about to exhibit those behaviors and to catch yourself. One approach I teach others is to observe who exhibits these soft-skills as a strength, and to either copy them, or to set up some time to pick their brain on how they operate.
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.
This is where the rubber meets the road.
There are three elements to successful execution of your plan.
Time management and making consistent progress
Ensuring visibility
How you deliver
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:
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.
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.
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.
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.”
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.”
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.