Software Engineering Career Ladders
This is my take on software engineering ladders and what it takes to be promoted from one band to another.
Software Engineer I:
You are tasked and are able to deliver a feature part of a bigger release. Special skill to acquire to be promoted to the next level is clear communication and status update.
Software Engineer II:
At this level you should have delivered multiple features with high quality including unit tests and instrumentation. You should be viewed and have the reputation of an engineer who can deliver consistently with high quality with minimal guidance. You should also start mentoring interns or new engineers and start designing end to end features as a stepping stone for the next level. You are a great asset for your team.
Senior Engineer:
This is a terminal level at many companies. At this level, you should own a critical area in the product. You usually own a code area or repo and code review changes in this area.
You are battle tested and have some scars to show for it usually from over engineered systems. You are the go to person and the authority for an area of the product and receive multiple requests from different people looking into integrating into your area or needing support.
You have been a commander in outages and are one of the few who can return a system to a green status especially in your area of expertise. You mentor junior engineers and are able to drive the design and release of a complex product or set of features.
You set patterns or design software that are leveraged or adopted throughout the company. You are called upon for feedback and advice from upper management. You are a valuable asset for your company. You leaving the company is a considerable loss for the company.
Staff Engineer:
This is a continuation of the senior engineer role but your charter is now multiple teams and orgs. You avoid duplication and pursue opportunity for consolidation of redundant systems in multiple team. You build systems that improve developer velocity.
You have clout in your organization and lead by example. You set an example of good behavior and reprimand bad behavior. Your endorsement lead to promotions for junior and senior engineers.
You are able to architect and deliver end to end products from infra to user facing including developer experience, operations and release management. Example of deliveries is to move APIs from Rest to GraphQL or migrate a repo from a monorepo to microservices.
You leaving the company is a tremendous loss for the company.
Principle Engineer:
This is a continuation of the staff engineer role but you are closer to the executive layer at the company with a direct access to the CTO. You can prioritize initiatives and impact budgeting.
You are tasked with initiatives that are critical to the company. Failure to deliver on them have serious repercussions on the competitiveness of the company. You can reach deep and wide and commandeer any resource or engineer when pursuing company critical priorities.
Example of deliveries is moving from on premise infra to the cloud or responding to the emergence of web, mobile or AI as an example.
You leaving the company has financial and competitive impact on the company.
One last note is that every engineer wherever they are and no matter how successful in their careers will remember the manager that promoted them (knighted them) into their new band. This is a manager that recognized their contribution and trusted them into new responsibilities.
Software Engineering from the Frontlines Course on Maven
If you liked this article, I will be teaching a “Software Engineering from the Frontlines” course on Maven where I will teach hard-learned lessons I acquired developing large-scale products at companies such as Uber, Airbnb, and Microsoft.