Software engineering levels are the road map that gets you to your career destination.
Of course, it’s not all just for you. Levels bring also help employers in the hiring and promotion process. Even so, the main benefit for you is that software engineering levels create a clear ladder of progression, and understanding the responsibilities and expectations for each level will help you to climb that ladder.
What you can expect from this article is a look at a standard level system, a discussion on the value of levels, and then a zoomed in look on how that system plays out in specific companies. By the end, you’ll have the information and tools you need to see how you need to get where you want to be.
According to Levels.fyi, the standard software engineering levels are as follows:
- Level 1 - Software Engineer
- Level 2 - Senior Engineer
- Level 3 - Staff Engineer (alternate: Senior Staff Engineer)
- Level 4 - Principal Engineer
- Level 5 - Distinguished Engineer / Fellow
Individual companies often use personalized leveling systems that contain more tiers, but they generally follow this basic outline. Keeping in mind that this is a generalized list, let’s look at what’s expected for each level.
Level 1 - Software Engineer
The Role: This position, sometimes called a Junior Software Engineer, is usually someone’s first full-time software engineering job. Engineers at this level are not expected to take much ownership over the company’s product. Instead, they work on assignments given to them by people who have decided on the direction of the product.
The general order of operations looks like this: The highest level engineers find problems and focus teams on those problems. Mid-level engineers take those problems and find solutions. Those mid-level engineers then explain the solution to junior engineers, and junior engineers work on coding one piece of that solution.
Engineers at this level are expected to be competent, but not experts. The company knows that there’s going to be a learning process, and they know you’ll even mess up sometimes. That’s fine. They want someone who is a quick learner, a creative thinker, and can work well on a team.
$$$:Of course, compensation packages have a wide range depending on who you’re working for and where you’re working.
The average software engineer in San Francisco earns about $115,000 per year. Software engineers at the top tech companies like Google can earn about $187,000 per year considering the total compensation package. With that in mind, it’s a good time to mention that Exponent’s Software Engineering Interview course provides the tools you need to succeed at interviews with those top tech companies.
The Next Level: On top of experience, getting to the next level will require proven competence across a wide range of tools and types of problems. Basically, the ability to ride the bike after taking off the junior engineer training wheels.
To get there, learn and practice as much as you can. Learn about new programs. Learn about solving problems you’re unfamiliar with. Keep notes on things you’ve had to ask for help with, and practice those issues so you can do it independently next time.
Don’t shy away from asking for help—mentoring is one of the best ways to learn—but you’ll want to eventually show that you can work well with minimal supervision in order to get to the next level.
Level 2 - Senior Engineer
The Role: This is a position typically for a software engineer with 3 or more years of full-time engineering experience, and that doesn’t necessarily have to be at the same company.
While the scope of this position is not significantly larger than that of a junior engineer, the position carries higher expectations. It’s not a manager position, so a senior engineer will still be working on solutions given to them by management, but management will expect that a senior engineer can complete the solution with little or not guidance.
Senior software engineers will also be expected to have at least some kind of role in guiding the junior engineers. It’s not completely their responsibility, but senior engineers are knowledgeable people on the team, so it’s expected that they can help get junior engineers up to speed.
The Next Level: On top of experience and everything else, the next level requires people skills. In the next level, you’re either moving towards management or becoming an independent contributor. Both require excellent communication skills.
This doesn’t require you to over the top with forced small talk at every available moment. In fact, doing so is more likely to annoy coworkers than to endear them. Instead, just take a genuine interest in the people around you. Remember that success at a job requires honing your skills, but it also requires supporting your team.
Additionally, getting to the next level requires an understanding of the big picture. The big picture of how systems come together when developing an app. The big picture of what direction the company is going in and why.
Level 3 - Staff Engineer
The Role: With the staff engineer, we are officially into management territory. This position is often 6 or more years into your career, and now it starts to become a benefit if those years are at the company.
We mentioned before that junior engineers aren’t deciding on the problems nor are they coming up with the solutions, but instead they are given solutions to work on by managers. A staff engineer is likely that manager giving the solution. A staff engineer will often act as a go-between for the higher management who are making the company-wide decisions and the engineers who are writing the actual code.
A staff engineer will sometimes help decide on a problem to focus on and sometimes a staff engineer will spend time writing in code, but the primary role of a staff engineer is to ensure the team produces a strong solution for the problem upper management wants to focus on.
The Next Level: The next level is tough, and most will not reach it. On top of people skills and coding skills and all the other skills mentioned, advancing to the next level requires a long track record of ownership over projects that are more than just successful. It requires innovation. For the next level, they’ll be looking for people who can do more than correctly use the systems. They want people that can change the systems.
Level 4 - Principal Engineer
The vast majority of engineers will not progress to this level. These positions are rare, requiring a long track record of proven success as well as a good deal strategy—or luck—with being in the right place at the right time.
The higher one goes into management, the more difficult it is to say that this position will come after X years, especially when different companies are using different level systems. However, this position is usually 10 or so years down the line.
While the staff engineer ensures success on their team, the principal engineer begins to transcend teams. The focus is now on the company as a whole. And rather than finding solutions to problems, the principal engineer is now working on finding what those problems are in the first place.
This is a significant shift in scope of one’s work. This position is far less about coding, and far more about business and theoretical ideas.
This is part of the reason why it’s so important to understand software engineering levels for the company you’re at. If managing teams and deciding the direction of the company sounds exciting to you, then chase this ladder. However, if that doesn’t sound interesting and you’d rather develop into an all-star coder, then you should look into ladders that lead to being an individual contributor.
$$$: Salaries become far more difficult to predict at this range. Glassdoor places the average salary at $148,633 per year, but that can go up to $907,500 a year at the big tech companies, with a total compensation package of well over a million dollars.
The Next Level: Exceptionally few get to the next level. The next level is reserved for those who shape the entire industry.
Level 5 - Distinguished Engineer / Fellow
This is essentially the top of the totem pole. These are computer science gurus who have imagined, built, launched, and maintained multiple massively successful projects. Their influence trickles down throughout the entire company. If the company is influential enough, that influence likely extends throughout the entire industry.
For example, Sebastian Thrun is someone who has held the honor of being a Google Fellow. He co-developed Google Street View.
$$$: The sky's the limit.
The Value of Levels
Overall, levels help both you and the employer because they create clear expectations, thus avoiding misunderstandings. To set the stage, let’s first discuss why companies use levels. Then we’ll look at how you can make the level system work for you.
Although this article will focus on software engineering levels, the concept of a multi-tiered leveling system is not unique to software engineering positions. Lots of fields and companies use levels to add structure to their workforce.
The main way that levels benefit a company is that it helps to avoid conflict. In an article on Noteworthy - The Journal Blog, Chuck Groom describes several awkward situations that a company can avoid by using a well-structured level system.
One situations states:
Frank wants a promotion to a “Senior” title, but we don’t feel he’s ready yet; he asks why not? → We need a way to explain the difference between levels, and give Frank guidance on which skills to develop.
Another hypothetical situation he gives is:
We hired Karen a few years ago at $85k/year. We hired Noreen this summer — after a bidding war with Facebook, her salary wound up being $120k/year. Karen and Noreen do the same work. Over drinks, Karen finds out how much Noreen is paid. → This is a disaster. We can’t afford to pay everyone $120k. But Karen has every right to call foul.
These are nightmare scenarios for any manager or HR department. It leads to conflict, and conflict leads to a disgruntled team. Things start to fall apart all because the company had no satisfying answer to give for why this employee wasn’t ready for a promotion or why that employee earns less than a coworker. Using levels gives companies that satisfying answer.
On the flip side, a company might be able to get by with paying some employees less if they didn’t use a structured level system. However, the level system helps companies to avoid a world of headache.
It’s like the difference between haggling over the price of an apple at a farmer’s market versus buying it for the listed price at Target. I might save a few cents by haggling, but I’d rather not debate the price of produce every time I want an apple.
Employers use levels because it helps them, but it also helps you as an employee. The main reason is that it provides clarity to your career path.
Suppose you’re in the position of Frank, engineer from the scenario a few paragraphs prior. He’s an engineer looking for a promotion, but he works at a level-less company. His promotion is denied and he’s left without knowing what he could do better to ensure the promotion next time. Was his work not good enough? Did he not have enough years of experience? Do the managers only give promotions to their personal friends?
Levels do away with all that mess. They clearly state that to get a certain position, you’ll need X number of years and Y set of skill equals. Therefore, you know exactly where to direct your energy in order to improve your career. There will still be some level of discretion from managers, but levels generally make promotions far more straightforward.
Likewise, levels can make the process simpler if you’re applying to a company that you know uses levels. Gone are all those worries over which position to apply for, constantly wondering if you’re selling yourself too short or overselling yourself. Levels show clear expectations so that you know exactly for which position you should apply.
SoundCloud has a great write up on their level system. In a brief section explaining why they use a level system, they say:
To provide clarity on what our understanding of growth is, we have a level system (as many other companies do). This system defines our engineering culture by giving guidance to people on how to increase their impact within SoundCloud, facilitating career discussions between engineers and their managers, providing a framework for setting salaries, and last but not least, encouraging and rewarding certain behaviors.
Transparency around everyone’s level at a company helps people identify their role models. Additionally, an explicit level structure is beneficial for people who are underrepresented, as non-explicit hierarchies tend to favor the people who form the majority (which, most of the time, is white men).
A good exercise is to spend some time on Levels.fyi comparing companies to each other. Look at the structure of their level system, and also click on the first few levels to get a general idea for that level’s compensation and how many years of experience it requires.
What you’ll often see is that while using levels provides structure, it still has flexibility. It becomes even more flexible the higher up the ladder one goes. The more control over the company a position has, the more inclined a company is to take a personal approach instead of following an assembly line promotion process.
Google’s level system is certainly the most influential throughout the industry. Many smaller tech companies and departments use a similar system. Still, variety exists. One can see this just by looking at five of the biggest tech companies.
A quick glance gives you a rough idea of what progressing through the company would feel like. Google, Facebook, and Amazon all use similar tracks. They don’t have notable variation, and what variation exists is generally towards the higher end of the ladder.
The two outliers are Apple and Microsoft. Microsoft has roughly double the number of levels as the other major companies. A career with Microsoft would likely mean that each promotion is smaller, but those promotions come much more often. Apple has significantly fewer levels than the other companies, so the opposite would be true.
Variety can go even further than that. In the image below, one of these is not like the others:
Netflix chooses to operate without a level system. All of their software engineers are senior software engineers.
The lack of levels seems appropriate for a company like Netflix. They aren’t developing a hundred different projects like other tech giants. Instead, they have their streaming platform, and all they want is to work on that one project.
Additionally, Netflix famously has a culture which values merit over hierarchy. Every engineer is a senior engineer because they seem to only hire engineers with years of experience. They expect their people to work hard and speak their mind. The push employees, but also compensate. Their pay leans much more towards base salary than company stock, but the overall package is often higher than it is for similar years of experience with other companies.
Companies use levels because it provides structure, and you can use that structure to make your climb easier. Every company will have a leveling system that’s slightly different, but the basic idea will remain the same. Learn the levels, learn what’s expected for the next level, and then direct your energy in that direction. This is the best strategy to advance your career.
And if you’re just starting your career, Exponent’s system design interview course provides the jump start you need to succeed.
*Title imagine source: Jukan Tateisi on Unsplash.com