Career Progression Overview
Overview of the software engineering career progression in terms of IC vs management tracks and various levels, including typical years of experience required.
As someone who is new to the tech industry, you might be wondering:
What is IC in software engineering? What is an engineering manager? What is the difference between IC and management tracks?
These are the questions that this guide on software engineering career progression will answer.
IC vs Management (Tracks)
There are typically two tracks for software engineers: Individual Contributor (IC) and Management / Engineering Manager (EM).
The key difference between the two tracks is the main contribution you make to the company.
IC Track
All software engineers start out on the IC track, where your main contribution is the individual work (code, architecture design, etc.) that you produce.
Typically you will start out as a (junior) software engineer, progress to mid level, and then senior software engineer. These levels are sometimes called IC levels.
This is also where the majority of software engineers will stay for the rest of their career.
Management Track
When you reach the level of senior software engineer, you may be offered a chance to lead a small team (team lead or engineering lead). This is where you can go towards the management track and eventually becoming an engineering manager (EM).
A typically new engineering manager may lead a team of 10 or more people, consisting of individual contributors as well as team leads.
Since the ratio of individual contributors to managers is around 10:1, the number of management positions is much smaller than the number of individual contributor positions. This means that not everyone can become a manager.
Career Progression Levels
Tech companies usually have well-defined levels for software engineers, along with the responsibilities and requirements at each level (job model).
Example: Backend Engineering Roles at GitLab
Promotion to a higher level usually requires having a certain number of years of experience (yoe). Exceptionally talented engineers can get promoted 1 or 2 years earlier. On the other hand, having a certain number of years of experience does not guarantee promotion to the next level.
Knowing what level you should expect with a certain amount of years of experience can be helpful in determining how well you are doing relative to others with similar yoe.
Different companies have different number of levels and naming conventions. Here are two examples of how it might look like:
Example A
Junior Software Engineer → Software Engineer (Mid Level) → Senior Software Engineer
Level | Title | Typical yoe |
---|---|---|
3 | Junior Software Engineer | 0 |
4 | Software Engineer | 1-2 |
5 | Senior Software Engineer | 5 |
6 | Lead Software Engineer | 7 |
… | … | … |
Example B
Software Engineer → Software Engineer || (Mid Level) → Senior Software Engineer
Level | Title | Typical yoe |
---|---|---|
5 | Software Engineer | 0 |
6 | Software Engineer || | 1-2 |
7 | Senior Software Engineer | 5 |
8 | Staff Software Engineer | 8 |
… | … | … |
Terminal Level
It is important to understand that the mapping between yoe and level only works up to the terminal level, which is typically senior software engineer or staff software engineer.
This is where you are no longer expected to get promoted to the next level (staff software engineer), and also where significant career progression stops for the majority of people.
Starting Your Career
Everyone starts out as a junior software engineer, or just software engineer.
The first promotion in your career is usually from junior to mid level.
Latest blog posts
Mar 23, 2024
Feb 3, 2024
Dec 29, 2023
Oct 20, 2023
Sep 21, 2023
Subscribe to receive latest updates
Using ChatGPT or Claude 3.5 Sonnet for coding?
Check out 16x Prompt to streamline your AI coding workflow