An organizational methodology that reflects our values
We’re rethinking the way our technical organization works - borrowing a few pages from places that have innovated in this area, but also building on top of those approaches and extending in different directions.
The best of feature and functional teams
Functional teams are key when investment in infrastructure is the emphasis, and feature teams are most effective when maximizing product delivery.
As we are focused on both, we organize our engineers into Lego-brick sized functional units. These units consist of 2-5 engineers, each with their own leads. We aim to piece together units, rather than individuals, to create a feature team. This allows for redundancy of each function within a feature team, as well as for code reviews, technical strategy, and execution flexibility to occur on a hyper-local level.
Despite best intentions, decision-making power seems to concentrate around the people manager - not necessarily the domain expert or the person tasked with a given responsibility. We seek to change that by empowering based on criteria other than the number of reports.
Between our adoption of servant leadership and our individual-contributor career tracks, we are committed to changing the traditional corporate power dynamic. Being given the responsibility but not the authority is an anti-pattern we seek to avoid. As a result, we push as much authority and responsibility to the edges as possible.
We are ardent believers in not only servant leadership, but in leadership coming in many forms. To that end, we’ve identified three types of leadership roles that are “decorators” or “hats” that any individual within a unit can take on. These additional leadership roles are meant to be a tax on individual contributor duties, not an outright replacement.
The Tech Lead is responsible for the technical direction, component architecture, and code hygiene of their area. They are the guardians of the codebase under their purview.
Author, edit, and/or approve design docs
Review code and/or gatekeep on code quality
Provide technical guidance and mentorship
The Project Lead is responsible for execution. They ensure everyone is on the same page and moving in the same direction.
Focus on execution and transparency
Quantify uncertainty (to the extent that it’s possible to do so)
Identify roadblocks or bottlenecks, and identify where people or processes are getting stuck
The Unit Lead is responsible for the well-being of their unit. This role is a stepping stone on the way to becoming a full-time Engineering Manager, and can be thought of as an "emerging manager".
Focus on the on-the-job needs of their unit
Understand strengths and weaknesses of their unit
Balance priorities (e.g. between PLs and TLs)
Illuminate career paths and staffing needs