editione1.0.1Updated October 11, 2022
As companies hire, grow, and promote from within, they often need to make decisions about the requirements and responsibilities for each role, including each individual’s salary compensation. Job levels are a tool that many organizations use to standardize these decisions and explicitly define and document the responsibility level and expectations for each role at a company. Job levels are typically associated with pay bands or salary ranges for each level, and different companies structure their levels differently depending on their unique organizational needs.
So, why do companies utilize job levels?
Job levels allow organizations to be strategic with their hiring decisions and bring more consistency to the hiring process. Levels provide a helpful framework for how a company should hire, promote, and retain their talent, as well as providing a way to highlight specific areas for improvement, while developing their employees along their career growth trajectories. Additionally, job levels bring fairness and transparency to promotion decisions by providing a structured approach to identifying when an employee is ready to move to the next level with a promotion.
So, how can you use your company’s job levels to leverage a promotion?
Whether you like it or not, climbing the corporate ladder is a game. And the job levels provide an even playing field for you and your peers. Fortunately, these job levels also lay out the rules of the game for everyone to see, so the better you understand the rules of the game, the better you can use them to your advantage.
First off, if your manager or HR department hasn’t already provided you with your company’s job level matrix, you should ask for one. Most larger companies should have a job-leveling framework in place, but not all do. If you’re working at a smaller company or a startup, they may not have one, but it’s still good to ask. At the very least, it will show your manager that you’re motivated to grow your career and work your way up the org chart, and you might even convince them to create one.
Once you have a job level matrix, you’ll be able to see exactly what is expected of you in your current role. You’ll be able to see your current responsibilities and identify areas that you know you need to improve. Even better, you can also see what skills and responsibilities are expected for more senior roles, and it provides a blueprint for exactly what you should be working on in order to jump to the next level.
So, let’s look at what a common job level matrix looks like for programmers. It’s valuable to view a junior role and a senior role side-by-side so you can compare and contrast the differences in impact and responsibilities. Although it may already be apparent, it’s important to note that there is an assumption that these levels are cumulative, meaning that a senior programmer is expected to meet all the criteria in their current level, in addition to all the criteria and responsibilities in the lower levels as well. Keep this in mind as you’re working towards your promotion, because you need to build a solid foundation in your current level before you can work on the responsibilities of the next level.
Here’s what a common job level matrix for junior and senior programmers looks like.
|Junior Programmer||Senior Programmer|
|Job Scope||Performs moderately complex problem solving with guidance and assistance. Is able to follow functional specifications for new features. Primarily involved in implementing systems that others have designed. Expected to spend majority of time learning the system and software development best practices.||Performs complex programming tasks, often without guidance or assistance. Has solid understanding of the impact of their code on the team’s infrastructure. Has a strong understanding of how the different components of the system fit together. Is able to write thorough specifications for new features. Primarily involved in designing systems that they and others will implement. In-depth understanding of software development best practices.|
|Knowledge||Demonstrates solid understanding of programming fundamentals (data structures, object-oriented design, algorithm complexity). Has strong knowledge in their core area of the tech stack (programming language). Has general understanding of the components that make up the overall system.||Is highly competent in one or more areas of the tech stack (multiple programming languages). Can design a modular solution to medium and large problems. Possesses deep understanding of how the different components in the system interact with one another|
|Communication Skills||Communicates effectively in a number of scenarios: Code reviews, one-on-one conversations, small and large groups, management.||Is able to discuss technical trade-offs and alternatives in a rational and impartial manner. Has the ability to accept criticism of their designs and iterate based on feedback from others. Knows when to escalate issues.|
|Ownership||Contributes code that meets specifications. Troubleshoots issues and fixes defects in the codebase. Reviews code written by their peer. Contributes to documentation.||Identifies, proposes, and leads discussions that address problems impacting the team. Admits quickly to mistakes and works quickly to resolve them. Strives to learn from their own failures and failures of others.|
|Judgment||Offers their perspective during planning and design reviews. Proactively shares status updates with project stakeholders.||Is able to accurately estimate the amount of effort or complexity required by each task. Plans out work to ensure tasks are delivered on schedule. Proactively raises concerns with project stakeholders to ensure projects are delivered on schedule.|
|Character||Demonstrates initiative and an eagerness to learn. May provide mentorship to interns and peers.||Demonstrates initiative and a willingness to mentor others without being asked. Offers assistance outside of their own tasks when needed. Provides guidance to interns and junior level developers. Delivers constructive criticism when asked for feedback.|
Table: Job level matrix for programmers.
This is meant to serve as an example job level matrix that you would find in any engineering organization. Your company’s job levels may differ from the ones presented here, but the general idea will be the same. Your job as a developer is to identify which areas you feel you meet the requirements for, and which skills you know you are lacking. Once you’ve identified each category and where you stand, you have a blueprint for exactly what you need to work on in order to jump to the next level.
You may feel like you already possess certain skills or meet the requirements for the senior developer level, and that’s great! But remember that to be eligible for a promotion from one level to the next, you must demonstrate a proven track record of meeting all the requirements in the job level for your current role, plus some or all of the requirements in the next level. Only once you’ve proven you can handle the responsibilities of the next role will you be considered for a promotion to a senior engineer.
And remember, it doesn’t always have to do with how long you’ve been coding or how long you’ve been with your employer. The job levels are meant to provide an even playing field, and it’s entirely possible that someone with fewer years of experience will get promoted before someone who has been working at the company and coding longer.
Additionally, getting promoted to a senior developer role is not just about a change in your title. As you can see in the job level matrix, moving up to a higher level involves a broader set of responsibilities and more trust that you are capable of solving complex problems and that you always put your team’s interests before your own. In many cases, this also means there is more pressure for you to perform and deliver results on time. A senior role brings increased accountability along with more ambiguity in how to achieve your expected outcomes.
When it comes time for your annual review, it’ll be significantly easier to ask for a promotion to a senior role if you’re able to demonstrate that you consistently meet all the requirements in the job level matrix. One of the first things your manager will do is compare your past performance to the traits laid out in the senior job level matrix. And any requirements you haven’t met will immediately jump out as you’re being considered for the promotion.
Hopefully, you’ve learned enough to put yourself on the path to success. You should now have a better understanding of what you need in order to work towards that senior role, but it’s important to realize that it won’t happen overnight. The journey to becoming a senior developer takes years and requires a tremendous amount of discipline, hard work, and most importantly, constant learning. You are a student of the craft, and you will continue to learn throughout your career.
While becoming a senior programmer may be your goal, it should not be your destination. You should always be pushing yourself for continuous improvement. If anything, your learning will accelerate as you progress in your career, because you’ll be building on the foundation you will lay in these next few years. You’ll start to see how all the puzzle pieces fit together, and you’ll begin to design, influence, and engineer complex systems. You’re building a strong foundation today so that you can solve your customer’s toughest problems in the years ahead.
The Differences Between a Junior, Mid-Level, and Senior Developer (betterprogramming.pub)
Programmer Competency Matrix (sijinjoseph.com)
Job Titles and Levels: What Every Software Engineer Needs to Know (holloway.com)
Software Engineering Levels (dev.to/shavz)
Software Engineer Qualification Levels: Junior, Middle, and Senior (altexsoft.com)