Bounding Unicorns

Engineer Progression

A common issue facing growing startups is the need to formalize engineer levels. Early on a startup would generally hire simply "talented engineers" and everyone would be an "engineer", however as the company increases its headcount and starts hiring more junior engineers, as well as starts to seek out very experienced engineers in specific areas, it finds itself needing to define what "junior" and "senior" labels mean when applied to software engineers.

There are, of course, many possible definitions of engineering levels. What is interesting though is that in some companies, the qualities that are supposed to be demonstrated by engineers of different levels are more or less the same, and the difference in levels is that more senior engineers display "more" of these qualities. For example, a junior engineer may "infrequently" demonstrate leadership ability, while a director may "constantly" demonstrate such ability.

A totally different approach, and the one I present below, is to focus on the qualitative differences between engineers of different levels. I think there are many things that more talented, or more experienced, engineers do that less talented and less experienced engineers do not do at all.

Here is how the various engineering roles compare and contrast in my mind:

Engineer Senior Engineer Rockstar IC Team Lead Director+
Execution / Quantity Performs assigned (task-level) work expediently, with good quality, within standards set by the team Blends design/architecture work with implementation work at a particular tier. Proposes team standards by applying them in own work and demonstrating value Designs architectures over the entire stack. Prototypes implementations. Leads implementation efforts once design is decided on. Notices/identifies blockers and works with team members to unblock them. Contributes to implementation as needed. Defines technical requirements based on project business requirements. Delegates design/architecture work to Rockstar IC if there is one on the team, otherwise performs Rockstar IC functions. Prioritizes projects based on effort needed vs value created. Assigns projects to teams. Staffs teams for success.
Execution / Quality Recognizes when tech debt is being created and brings up to PM/Team Lead. Balances time to delivery and internal quality in designs. Maintains internal quality when developing features. Incorporates internal quality improvements into assigned development work. Continuously refactors codebase. Introduces new technologies and tools to solve challenges facing the team or enable the team to perform better. Able to trade quality for delivery time. Ensures work being done by team maintains quality standard. Advocates quality improvements to product and business teams. Allocates resources (time) to raising internal quality. Develops hiring processes to hire top quality talent. Structures engineering organization to enable internal quality improvements originated within the teams.
Engineer Senior Engineer Rockstar IC Team Lead Director+
Growth Studies new technologies, techniques and skills. Studies processes, tech ecosystem, engineer development. Specializes in chosen technologies. Studies product and business aspects of the company and how engineering attains the company's objectives. Studies the industry, partners and competitors. Thinks about scaling the engineering organization.
Collaboration Clarifies product and technical requirements with PM and Tech Lead, respectively. Offers assistance proactively to other engineers. Knows which engineers to ask for assistance with a given issue. Able to effectively utilize other people in product/engineering organization to answer questions and make decisions. Establishes self as the go-to person for issues within chosen tech domain. Pairs as needed. Creates a culture of effective collaboration. Establishes code review practices. Pairs as needed. Promotes collaboration across teams. Resolves cross-team blocks/dependencies. Sequences work effectively.
Engineer Senior Engineer Rockstar IC Team Lead Director+
Tech Strategy Writes code understandable by self in 3/6/12 months. Considers testing/QA, deployment, engineering/devops support implications of solutions being developed. Leverages ecosystem during product development. Champions open source contributions by company employees. Stays abreast of new technology in chosen field. Makes technology recommendations. Balances team velocity with internal quality. Estimates and commits to timelines on project scale. Identifies knowledge, skill and non-human resource requirements for projects. Aggregates resource requirements across teams. Creates engineering roadmap. Prioritizes engineering-driven work. Translates business and product requirements into engineering objectives.
Product Understands use cases behind assigned work and ensures delivered work fullfils the use cases. Understands the problems the product overall is solving, aligns development work to make future solutions easier and product overall more successful. Understands product/industry domain. Proposes technical solutions that improve the product offering. Identifies new products to build. Knows products the entire company is working on. Leverages other products to accelerate development. Creates work (re)usable by other teams to accelerate their development. Understands product roadmap. Provides engineering data points to product and business teams. Creates high level implementation plans for products under consideration. Communicates product and business vision to engineers.
Engineer Senior Engineer Rockstar IC Team Lead Director+