For Software Engineers, interviewing at multiple companies simultaneously can quickly become a gargantuan effort, not to mention a confusing endeavor. Unfortunately, there is not a standardized leveling matrix for Software Engineers across companies, which means it’s difficult to determine which positions, titles and level are appropriate for your skills and experience. If you’re not sure where you land on a company’s ladder, you’re not alone. While there is not a consistent rubric outlining the level for Software Engineers, there are some similarities in the requirements across the technology industry.
Based on our research, and information from our contributors, Levels.fyi has compiled an overview of levels/roles, scope of work and expectations from numerous companies to serve as a standard Software Engineering framework. Software Engineers are expected to develop their skills in a variety of areas to be eligible for promotion and move to the next level. While all company leveling matrixes have their own nuances, three key categories consistently appear across most companies: ambiguity, scope of work and impact.
Although not limited to these areas, industry standards require that Software Engineers demonstrate progression in key categories to be considered for promotion. Other areas of assessment may include: technical knowledge, ability to execute, implementation of process improvement or communication.
Entry Level Engineer (New Grad)
The Entry Level Engineer is typically a new graduate with a freshly minted university degree, and may have up to two years of applicable professional experience. As an Entry Level Engineer, you’ll be expected to develop and maintain lower complexity components under the guidance and tutelage of more experienced team members. Although mostly working on group projects, the Entry Level Engineer is encouraged to demonstrate initiative to innovate and should perfect basic coding skills. The impact of their work is generally difficult to see beyond the parameters of their team.
Software Engineer
The Software Engineer demonstrates the ability to work on projects autonomously. They also develop and maintain low to moderately complex components, likely leaning more towards the moderately complex problems. Specialization in one or more coding languages is common. Software Engineers usually work in a team environment, thus expect to contribute to impactful projects in a siloed, yet meaningful way. Generally, the Software Engineer will receive less guidance and support from their senior level peers than the Entry Level Engineer.
Senior Engineer
The Senior Engineer, in a natural state of progression, is expected to develop and own moderate to complex components. Beyond their technical work, they may also lead a small team or spearhead a project. At this level, leadership ability is a must, and the Senior Engineer will be able to mentor junior engineers, provide technical guidance, code reviews and design and deliver on small projects end-to-end. As a Senior Engineer you will typically see the scope of your effort Impact the immediate team as opposed to the larger organization or company. The Senior Engineer is typically considered a 'career-level', meaning the majority of Software Engineers will spend their careers operating and contributing at this level.
Staff Engineer (Senior Staff Engineer)
The Staff Engineer or Senior Staff Engineer level, is expected to lead and own complex technical initiatives. They are also responsible for establishing vision and associated strategy to lead their team to achieve lofty goals. Depending on the size of the company, the Staff Engineer generally pivots more towards design than implementation. As such, far fewer Software Engineers progress to this level, and usually make up less than 10% of the company.
Principal Engineer
The Principal Engineer is entrusted with business-critical projects and is responsible for setting technical vision for an organization, or occasionally, multiple organizations. On a granular level, the Principal Engineer is responsible for reviewing and providing feedback on technical designs across an organization. At this level, the role becomes hyper focused on organizational vision and company needs. It’s not uncommon for the parameters of the role to be loosely defined. Rarely do they do any day-to-day coding. The Principal Engineer is expected to operate fully autonomously, and is typically viewed as a leader in their organization.
Distinguished Engineer (Fellow)
The Distinguished Engineer will have a wide breadth of knowledge of current technologies and will be abreast of new ideas and concepts. This role is expected to have a sharp technical skill set and thorough understanding of the core business supporting the company. Frequently, heralded as a leader in their industry or company, it’s common for them to be sought out for advice and mentorship. The Distinguished Engineer’s impact spans across the company and sometimes industry, and they are known to be published authors and speak publicly regarding their area of expertise.
Hopefully, this overview offers valuable information regarding where your individual skill set lands in the matrix. For a simplified overview, we’ve summarized the main takeaways for the Software Engineers interested in understanding how companies use leveling systems and titles in a standardized career framework. Use this tool to compare and contrast levels across technology firms. It will offer insight into the leveling intricacies of a number of recognizable companies.
Looking for more information regarding levels, titles and job ladders? Check out this article for a comprehensive overview of each.