A brain dump of my thoughts on system design skills at different levels.
One important note, one has to repeatly demonstrated at each level first, before moving on.
Level 1 - Junior
Based on concrete task requirements, can design, develop, test and launch work that fulfills all the requirements.
- Scale: Service components or modules. Small to medium features.
- Other skills: Familiar with the development process, unit/integrated testing, code review, system stability/monitorings, on-call and system know-what.
Level 2 - Matured Junior/Senior
Before the task/product requirements are finalized, can take the initiative to clarify details, discuss requirements based on the constraints of the existing system.
- Scale: Medium-sized features. Development of a new microservice (non-critical).
- Similar: Migrating an existing mature service to a new tech stack.
- Other points: Project planning (Write engineering spec, tasks breakdown, estimations, execution and retrospection). Make sure all stakeholders know the status/outcomes of the project in a timely manner.
Level 3 - Matured Senior/Lead
Before the product requirements are finalized, can grasp the essence of requirements and identify the volatile points, can start the system design without waiting for finalized requirements, so that the requirements and the system designing process can be carried out in parallel.
- Scale: Medium-sized to large-sized features.
- Similar: Migrate an important online service smoothly. Master different migration methods.
- Other points: Effectively collaborate with multiple teams/stakeholders. Coordinate parallel development with different engineers (web/mobile/backend) whenever possible.
Level 4 - Lead
Since the beginning of user requirment collection, can participate as an technical expert, go one step further in understanding the problem, can create and lead an evolving system design that can stand in >=2 years of continuous iterations.
- Scale: Large-sized features.
- Similar: Refactor or breakdown a core system to support a next level of system scale, and lead multiple engineer to execute at different parts in parallel.
- Similar: Platformize a core system, and successfully onboarded multiple users. The platform can evolve and stand in iterations across time.
- Other points: Deal with complexity and ambiiguity. Drive alignment among stakeholders. Ability to train new engineers.
Level 5 - Matured Lead/Staff
Based on in-depth understanding of requirements and industry knowledge, able to propose and launch new complex system in important parts of a sophisticated production systems, lead to new empowerment of growth and scale.
- Scale: Large-sized, multi-staged projects.
- Similar: Sort out and refine existing requirements in a large and complex product, then identify and iterate new architecture improvments/migrations with minimal downtime impact on existing systems.
- Similar: A breakthrough change/improvement in a core area, that lead to a comparative advantage for the orgnization.
- Other points: Ability to persuade others. Lead multiple engineering teams.
Level 6 - Senior Staff?
Can bridge business, organizational capability and architecture design, able to find a new direction, create and drive a reasonable strategy to make it successful.
- Scale: Organizational-wide projects.
- Similar: Organization migrations to the cloud/multi-cloud.
- Other points: Organizational skills.