Core engineering values

Our core engineering values are the values that we internalize deeply and guide our day to day decision making.

Our choice of values is what sets us apart as a team, in contrast with other teams that embody a different set of values. While there are many good values in the world, trying to uphold them all is equivalent to upholding none.

We have 4 core engineering values that we uniquely uphold over all others:


Find the right frame.

Wisdom is about finding the right objective function under each circumstance and choosing a reasonably maximal solution.

The first part is much more important to get right than the second, because it is better to be approximately right than precisely wrong.

Reasoning about each circumstance from first principles and figuring out the right lens with which to view it is the most important activity we engage in.

Relentless User Focus

The only thing that matters in the end.

There is one objective function that reigns above all others, and that is the product experience for the end user.

How much we improve their working lives, how much simplicity & power they gain when using our product, how much delight it brings to them — these are the measures by which we ultimately live or die.

In any circumstance where there is a user-maximizing decision, there is no choice at all.


Get it right.

This codebase is our home. We spend more time inhabiting this mental space than any other space in our lives.

If we make it good, we will love coming back to it day after day. If we love coming back to it day after day, we will almost certainly deliver outsized value for our users. It will also make our own everyday experience that much more fun and joyful.

If we let it fall apart, we will hate inhabiting the one space we inhabit most. We will achieve only average results and quickly become irrelevant.

Far from being superfluous, craftsmanship is critical to the longevity of our success.

Intellectual Rigor

Achieve understanding.

We care deeply about achieving understanding in what we do.

We put in the time to read the source code of libraries and services we use and getting to know how they actually work.

We put in the time to read papers and blogs to understand the state of the art and to learn from how leading practitioners think about their fields.

We put in the time to fully articulate our designs and implementations, putting their claims to the test with code (tests, benchmarks) and conversation (dialogue, RFCs).

All of this time is time wonderfully spent.

At the margin it might seem unclear how a deep level of understanding translates to an immediate unit of output. But understanding is a compounding force. Over time, our understanding becomes an unsurpassable moat, giving us the ability to do things that no one else can do.