editione1.0.8
Updated August 24, 2022You’re reading an excerpt of The Holloway Guide to Technical Recruiting and Hiring, a book by Osman (Ozzie) Osman and over 45 other contributors. It is the most authoritative resource on growing software engineering teams effectively, written by and for hiring managers, recruiters, interviewers, and candidates. Purchase the book to support the author and the ad-free Holloway reading experience. You get instant digital access, over 800 links and references, commentary and future updates, and a high-quality PDF download.
Companies often create career ladders or career lattices that illustrate the job levels at the company, explain what is expected of employees at each level, and clarify the different growth paths an employee can take. A career ladder shows only vertical progression through job levels, while a career lattice shows possible lateral movement as well. For instance, a common pattern at tech companies is to provide a dual-ladder approach, in which there is a technical ladder for individual contributors and a management ladder for more senior employees.
Source: Holloway
There are both benefits and risks to having more structure around levels. On one hand, without levels, engineers may be unsure about how to progress in their career and have more impact, and the company might end up making arbitrary decisions around promotions and performance management. Clearly delineated levels in a career ladder help mitigate bias and provide fairness and transparency. On the other hand, these systems add complexity. They also risk undermining employees’ intrinsic motivations, and many companies find that people can become fixated on their level or title and lose a focus on teamwork and collaboration. A dual-ladder approach in particular can introduce concerns about fairness between individual contributors’ and managers’ career prospects.*
For the purposes of hiring, it’s important to have some sort of structure, with the appropriate level of complexity based on your company’s stage. This structure will help ensure that your hiring assessments and your expectations of future employees are aligned. It will also help you decide what role (and corresponding level, title, and compensation) a new hire should receive.
You can browse a collection of ladders and rubrics made public by their respective companies at progression.fyi. It’s a good exercise to read through a few of them and understand the reasoning and philosophies behind them.
SE2 | SE3 | Senior | |
---|---|---|---|
Entry-level | Mid-level | Experienced | |
Knowledge | Has engineering and programming foundation. Expected to spend majority of time learning about code and development best practices. Understands scope of small features. Has a basic understanding of what all components in their product are. | Has a basic understanding of development best practices and comfortable writing code. Uses and understands tools needed to debug and diagnose issues in a test and/or simple production environment. Understands the scope of medium features. Has a basic understanding of all their product components. | Has in-depth understanding of development best practices. Has mastered the tools needed to debug and diagnose issues in any type of environment. Understands the scope and relationships of large features and production stack for their area. Has subject matter expertise in at least one component. Has a good understanding of all components of their product. |
Job Complexity | Performs basic programming tasks. Contributes to functional specifications and participates in code reviews. Writes and executes test plans. | Performs standard programming tasks. Contributes to functional specifications and participates in code reviews. Writes and executes test plans. | Performs complex programming tasks. Participates in code reviews and can sign off on small features. Writes and executes test plans. Can write functional specifications for small features. |
Independence | Given an introduction to a small task from a more senior engineer, can drive a task to completion independently. (Can fill in the blanks) | Given an introduction to the context in which a task fits, can design and complete a small to medium sized task independently. (Can create some blanks) | Given a medium to large understood problem, can design and implement a solution. |
Professional Character | Shows initiative and is motivated to learn. Provides guidance to interns. | Shows initiative and offers assistance when needed without being asked. Provides guidance to entry-level engineers. Constructively escalates problems and issues. | Shows initiative and offers assistance when needed without being asked. Delivers feedback in a constructive manner. Provides guidance to entry-level engineers. Works well with technical leads, incorporating feedback as needed. Helps focus discussion on important aspects. |
Source: Sequoia Capital*
Staff | Senior Staff | |
---|---|---|
Advanced | (Advanced)^2 | |
Knowledge | Has mastered development best practices. Understands the limits of our tools and when a problem that exceeds those limits deserves the effort of producing a new tool. Understands the scope and relationships of large features and production stack for their area. Has subject matter expertise on multiple components. Has a strong understanding of all products relevant to own areas of expertise. | Has deep knowledge of entire system, and can jump into code in any component and fire fight and contribute. Makes decisions on product direction and internals based on deep subject matter knowledge. |
Job Complexity | Performs expert programming tasks. Handles large-scale technical debt and refactoring. Shapes coding methodologies and best practices. Participates in code reviews and can sign-off on large features. Can sign off on test plans. Participates in requirements gathering with a customer. | Sets product direction and has ownership over large components. Thinks both strategically and tactically, keeping in mind both technical goals and company goals. |
Independence | Given a large, poorly understood problem, can explore the solution space (possibly with numerous POCs) to determine correct course of action. Participates in and supports initiatives outside of main area of responsibility. Provides technical leadership for projects including 1–2 individuals. | Given long term strategic goals, can lay out a path across many versions. Participates in and supports initiatives outside of main area of responsibility. Provides technical leadership for projects including 3–4 individuals. |
Professional Character | An approachable mentor who is viewed as an expert and acts like one. Constructively challenges assumptions. Guides more junior engineers to correct solutions while encouraging collaboration. | Builds strong relationships in their own team and across the company. Understands multiple points of view and drives a process to conclusions in a timely and respectful manner. |
Source: Sequoia Capital*
Lead | Director | VP | |
---|---|---|---|
Leads team and/or projects | Manages teams | Product owner | |
Knowledge | A senior engineer, who in addition has very broad knowledge of the entire product, and can help with any component, or type of issues. Strong awareness of the state of the product and team at all times. | A great lead engineer, who knows how to allocate resources among projects and understands how company priorities map to their tasks. | Knows the entire product, how customers use it, what they want, and where it should go. |
Job Complexity | Contributes to code at a Senior engineer level (or above). Prioritizes work across projects and people. An expert firefighter who is often called in to make things right. Shows great ability to direct project and/or people. | Balances strategic and tactical goals, distributes work across team. Shapes coding methodologies and best practices. Participates in requirements gathering with a customer. | Owns a product, the team, and is responsible for both. |
Independence | Leads projects and/or small teams. Participates in and supports initiatives outside of main area of responsibility. | Manages multiple teams and projects. Responsible for team retention and hiring. | Is a great leader, sets direction for product. Understands vision, drives it forward. |
Professional Character | Takes responsibility for their team/project. Communicates effectively and respectfully to all members of the organization. Keeps team morale high. Supports and motivates team members. | Takes personal accountability for failure, while praising team for accomplishments. Communicates effectively and respectfully to all members of the organization. Keeps team morale high. Mentors team members. | Works exceptionally well with their own team, other engineering teams, and the company at large. Takes responsibility for their team and product. |
Source: Sequoia Capital*
You’ll notice that both the Radford and Sequoia rubrics split the levels between individual contributors (ICs) and managers. The tech industry has moved away from viewing management as the de facto progression in an engineer’s career, with an increasing number of companies providing separate management and IC tracks that can support both paths without forcing engineers into management. While levels alone indicate some degree of advancement and progression, most companies that have formal levels eventually establish ladders to further clarify how employees can progress up levels, either on IC or management tracks.
Here are some additional resources and a few public examples of ladders that aren’t on progression.fyi:
Engineering director Chuck Groom highlights key differences people might see between ladders, including:
How many individual-contributor levels should there be? (Three? Six?) What do you do with your super-senior folks?
How detailed should your job ladder be? (This runs the gamut of complex point systems, spreadsheet matrix, paragraphs of text, or just a few general guideline bullet points.)
What are the specific roles and responsibilities for a “tech lead”?
“How to implement an engineering ladder at your organization” (Lisa van Gelder)
contribute If you’re aware of other companies’ published engineering ladders, please let us know!
Something as seemingly simple as a job title can contain and convey a complex range of information—the nature and scope of work someone is responsible for; how senior they are; and potentially whether they report to or manage other people.
Titles can be confusing. Systems Engineer could mean very different things to different teams or companies depending on the degree of specialization. Someone who works on applications could be an Application Engineer or a Fullstack Engineer or a Frontend Developer. And yes, you’ll even see Programmer thrown around as an actual title. Any titles might also be combined with seniority designations such as Junior, Senior, Manager, Director, and more. This can make it hard to determine meaningful relative comparison across organizations—an Engineering Manager at a startup compared to one at Google likely have very different responsibilities.
Larger companies typically develop specialized titles based on the functional area, as shown in the table below.