Engineering principles and practices
This page documents principles and practices that we follow in engineering.
We build things incrementally
We reach high quality outcomes by shipping incrementally, collecting feedback, and learning continuously.
- Make it work: Build the minimal useful thing that we can use to start collecting feedback and validating we are on the right track. Take shortcuts where possible (cut scope, not quality) because this work might get thrown away if we discover we are going in the wrong direction. We can hand-hold first users (internal or external) through a rough experience as long as it works well enough for us to collect feedback and validate that we are solving the right problem.
- Make it smooth: Once we have signal that we are building the right thing, the next goal is to make the experience smooth so we feel good about putting this in front of more users in a more scalable way that doesn’t require handholding.
- Make it fast: Now that the experience works smoothly, make sure it is fast for users. There is no benefit to speeding up a fundamentally broken experience.
- Make it scale: Make it work at large scale. It is better to have high demand and need to surge on scalability than to make an infinitely scalable unused feature.
The person doing the work owns the decision by default
We facilitate high agency engineers by sharing problems and expecting engineers to plan solutions to those problems.
The default owner of any technical decision is the person or team that owns the work implied by the decision.
If ownership is unclear, ask your manager (or in an appropriate channel) “Do we have a designated owner for X?“.
If agreement cannot be reached on a decision, then perform a clean escalation.
Make time to work on things you think are important
We love it when engineers have ideas for things they think would be valuable to do given company and team goals.
If you have an idea for something you want to work on, then you have a few options:
- Just do it if you can timebox or spread out the effort such that it won’t impact your ability to deliver on existing plans.
- If working on your idea would require a non-trivial amount of time or would impact your ability to deliver on existing plans, then have a discussion with your manager to come up with a feasible plan (for example: explicitly schedule time to work on your idea during the next iteration).