A | B | C | D | E | ||
---|---|---|---|---|---|---|
1 | Level | Execution & Results | Technical Skill | Communication & Influence | ✔➡ | |
2 | SDE I | • Estimate simple projects and deliver them on time, most of the time • Complete simple projects containing some amount of ambiguity with minimal oversight • Complete well defined, moderately complex projects with guidance from another engineer • Know when to ask for help vs. trying to solve an issue individually • Seek out architectural help as needed from other engineers before diving into a project • Address mistakes quickly; may occasionally make the same mistake more than once • Reflect on mistakes and suggest improvements for minimizing them in the future • Remove some blockers individually and escalates the rest as needed to become unblocked quickly • Lead the incident retrospective process, occasionally with guidance of more senior engineers; identify low-hanging action items to prevent or mitigate the effects of similar incidents in the future | • Write elegant, easy to understand code • Write simple tests, drawing from pre existing patterns • Code review simple projects and provide meaningful feedback • Internalize best practices and processes, and employ them effectively • Learn new technology individually with little or no guidance • Leverage an on-call runbook in order to help troubleshoot the most common production issues; escalates a majority of uncommon production issues to more senior team members | • Communicate relevant updates to the team proactively • Provide actionable and specific feedback proactively • Reflect on product successes and failures; participate meaningfully in retrospectives • Communicate effectively with collaborators and stakeholders • Communicate blockers proactively, even if a path to becoming unblocked is known | ||
3 | SDE II | • Estimate moderately complex projects and deliver them on time • Complete moderately complex projects containing some ambiguity with minimal oversight • Split projects into smaller subtasks/milestones when asked, and prioritize and sequence subtasks and milestones for effective delivery • Serve as a technical lead for simple to moderately complex projects with guidance and oversight • Pair with other engineers on highly complex projects with guidance and oversight • Solves most issues individually, occasionally escalating to other engineers for assistance • Will make mistakes occasionally, but does not repeat the mistakes • Lead and facilitate sprint standups and retrospectives • Remove most blockers individually and proactively escalate or seek assistance to become unblocked quickly • Lead the incident retrospective process completely, soliciting input and data from others as needed; drive the process to identify and identify action items or process changes that will prevent or mitigate the effects of similar incidents in the future | • Debug moderately complex issues most of the time, especially when we've encountered the issue before • Write effective tests, creating new test patterns as needed • Code review simple to moderately complex projects and provide meaningful feedback, encouraging the use of best practices and patterns that would improve the elegance of the code • Core competency in at least one technical area • Troubleshoot and resolve most common production issues without assistance; able to determine basic troubleshooting steps for uncommon production issues and occasionally contributes to on-call runbook | • Provide feedback for helping to shape best practices and processes within the team when asked • Provide guidance/oversight to other engineers, helping them to develop good judgement on solving technical problems • Ask questions if the goal or impact of a project is unclear • Communicate relevant updates to the team, stakeholders, and collaborators proactively • Proactively seek feedback and always looking for opportunities for self-improvement • Lead retrospective discussions and writeups in collaboration with other engineers • Mentor other engineers in core competency area(s) • Communicate effectively across the organization | ||
4 | SDE III | • Estimate highly complex projects and deliver them on time • Complete highly complex projects, sometimes with a fair amount of ambiguity, with little to no oversight • Split highly complex projects into appropriately sized subtasks/milestones, and prioritize, sequence, and delegate subtasks effectively to other engineers for effective delivery • Define success metrics for projects; ensure proper instrumentation and experiment design • Serve as a technical lead for highly complex projects with minimal oversight • Lead and facilitate planning and grooming discussions within the team • Persistent and vigilant in pursuit of unblocking themselves or others on the team • Contribute key technical insights to incident retrospectives that help the team determine the best action items to prevent or mitigate the effects of similar incidents in the future | • Debug most highly complex issues regardless of whether we've seen them before • Write effective tests to catch/prevent subtle or complicated bugs • Code review highly complex projects, identifying most opportunities to improve the correctness and elegance of the code through recommended best practices and patterns • Rarely requires assistance to troubleshoot highly complex issues • Core competency in two or more technical areas • Rarely makes coding mistakes • Identify root cause of most production issues, provide for temporary resolution as needed, and provide direction on longer term resolution; frequent contributor to on-call runbook | • Mentor other engineers on writing elegant, easy to understand code • Mentor other engineers to develop proficiency in serving as a technical lead • Provide guidance to other engineers on the team to help them refine estimates, enabling them to deliver on time • Proactively helps iterate/evolve best practices and processes to address friction and challenges within the team • Occasionally identify opportunities to address friction and challenges across the engineering team • Core competency in at least one product area • Partner effectively with product and design to help ensure we are utilizing our resources in the most impactful way for the business • Provide mentorship to other engineers, helping to improve their technical decision-making and judgement, as well as their impact on the team • Help other engineers on the team to reduce coding mistakes • Lead retrospective discussions and writeups seeking input from other engineers, collaborators, or stakeholders as appropriate | ||
5 | SDE IV | • Lead completion and delivery of multiple concurrent projects with clear deliverable timelines and milestones • Contribute to common/shared code, components, libraries, and/or services resulting in substantial improvements to developer productivity • Identify and mitigate risks, ambiguities, and unknowns in very highly complex projects that may negatively impact on-time delivery • Assess scope vs. value tradeoff effectively in all the work that we do, collaborating with product, design, and other engineers as needed to ensure the right balance on a per-project basis • Lead and effectively complete and deliver very highly complex projects with a high degree of ambiguity, typically involving other engineers • Strategic use of technical debt as a lever in effective delivery of project • Revisit tradeoff cost/benefit decisions, especially those involving the purposeful accumulation of technical debt • Provide guidance in incident retrospectives to help the team determine the correct priorities and sequencing for action items | • Provide key input and guidance in helping to solve our most difficult and challenging issues, and provide recommendations for preventing or mitigating the effects of the issues in the future • Introduce new testing methodologies, best practices, patterns, or frameworks as needed to ensure comprehensive test coverage • Code review highly complex projects both within and outside of the team • Core competency in several technical areas • Proactively identify opportunities to improve performance and resiliency of our platform to make on-call more tenable for future engineers | • Identify inconsistencies caused by lack of best practices and patterns, and proactively collaborate with the team to gather input to define and rollout new best practices • Identify opportunities to improve processes and organizational structure to address ongoing friction or challenges • Mentor other engineers on increasing their impact both within and outside of their team, including identifying opportunities for them to do so • Mentor other engineers on improving estimation accuracy and mitigating risks that may prevent on-time delivery • Identify opportunities to improve the efficiency and effectiveness of the broader engineering team • Identify opportunities to improve the technical proficiency of the broader engineering team • Core competency in multiple product areas • Active voice in shaping priorities and resource allocation for the team • Participate in shaping longer term technical and architectural goals in consideration of product/company strategy, organizational growth, scalability, security, and other factors |