I recently wrote a post about how some companies use attractive job titles to lure in candidates, even if the title doesn’t accurately reflect the job. At least by 2023, due to the hot labor market, companies have been lowering their expectations for industry-standard job titles. This trend is known as «title inflation» and it stems from the rapid growth of the global IT industry over the past 20 years, where companies have been using fancy job titles to attract people seeking career advancement.
My previous post focused on job titles for managers and how they correspond to industry standards. Now, I will share my thoughts on job titles for individual contributors (ICs).
The inflation of engineers’ job titles has happened not only due to the reasons mentioned earlier, but also because of the shift from local software to internet and distributed systems. This shift has created a new generation of engineers who are capable of creating complex, stable, and performant systems with less experience than the previous generation. In the past, a Senior engineer role required 10+ years of experience, but nowadays this requirement sounds ridiculous. Senior engineers usually have 5 to 10 years of experience, while 10+ years usually means someone with a staff or principal title for ICs.
To summarize, I will now outline the criteria I use to define the expectations for engineers who hold an industry-standard IC title:
- An Intern / Software Engineer I is a recent graduate (or a last-years student) with no commercial experience. They require training and deep supervision, as they are still in the learning phase of their career. While they can produce some code independently, it may not meet production-quality standards. They have basic computer science knowledge and are proficient in at least one programming language, although their experience with it may be limited to non-commercial projects.
- A Junior / Software Engineer I typically has between 3 months to 2 years of experience and requires supervision, mentoring, and guidance. They are capable of completing small, well-defined problems independently and producing production-quality code. However, they are still in the early stages of their career and are expected to grow rapidly by improving their technical knowledge through code reviews, reading, observing, and hands-on experience.
- A Middle / Software Engineer II typically has 2 to 5 years of experience and is a solid independent contributor who produces high-quality code. They are capable of owning and completing short-term projects (epics) autonomously. While they still require some guidance and mentoring, they are able to mentor interns themselves. They are skilled communicators and proactive collaborators who continue to grow and develop their skills.
- A Senior Software Engineer (III) typically has 5 to 10 years of experience and is an experienced and independent technical contributor who also serves as a leader. They have the ability to organize and implement complex, loosely defined projects and are experts in their domain and tooling. They efficiently handle uncertainty and can understand and adopt unfamiliar codebases quickly. They are responsible for owning and driving application and long-term project scopes, methodically estimating timelines and budgets, cutting scope as needed, removing or working around roadblocks, and being accountable end-to-end for projects. They are strong, clear communicators who move their team forward through collaboration. They actively mentor engineers of lower levels to help them grow and develop their skills.
- A Lead Software Engineer IV typically has 8 or more years of experience and is an experienced engineer whose technical expertise benefits the entire team. They are proficient beyond their own domain and can handle cross-team collaboration and solve wider technical issues. They are responsible for driving their team and ensuring they are working on the right things while reliably delivering results. They also manage stakeholders’ expectations. Independently, they scope and implement solutions to extremely complex problems and projects. They contribute to hiring and performance management and are proactive in mentoring all engineers of lower levels, actively sharing knowledge beyond their team. They have ownership over team/domain/roadmap/solution architecture scopes.
- Software Engineers at the level of «Staff» or above typically have 10 or more years of experience and are proven and respected cross-team technical leaders and solution architects. They are responsible for delivering complex cross-team initiatives that align with the top-level company goals. They work closely with engineering and product leadership, contributing to culture building, hiring, and performance management. They scope, design, and deliver solutions for large, complex challenges and provide oversight, coaching, and guidance through code and design reviews both on and off the team. They are very strong communicators and have outstanding stakeholder management skills. They have ownership over cross-team/domain/cross-domain/enterprise scope.