Building consensus through RFCs
October 1, 2024
Everyone at Level does a little bit of everything. We have a research, data engineering, and our investment team collaborating on initiatives, where the only consistency is the sheer variety. One practice that we've settled on is the use of Request for Comments (RFCs) to build consensus on technical initiatives across the firm.
RFCs come from a deep technical history for the development of the Internet. Although we have grand ambitions, we aren't developing something like the Internet, but the general concept and nomenclature is on point. We've adapted the RFC process for our own and, as a nod to this tradition, have kept the term.
We use RFCs to communicate on and build consensus for technical decisions that affect a large portion of our technology stack. They serve as authoritative specifications (i.e. specs) for these decisions and we mostly (though not always) implement technology against an RFC. RFCs need not provide exact details on a specific implementation, but they should include clear guidelines on expected and intended usage of various tools (whether code libraries, packages, technical tools, 3rd party tools, or otherwise).
Any person may write an RFC. The current owner of an RFC is responsible for managing the RFC process. The steps are as follows:
We currently have the following color-coded status for our RFCs:
RFCs are accepted via consensus. Consensus does not mean that everyone believes that the RFC is the best idea, but rather that there are no major issues and that everyone can live with the RFC as it stands. We should not let perfect be the enemy of the good: rather, we should make practical technical decisions that we can all commit to. By the nature and structure of our process, we inevitably build consensus by writing our RFCs and having a robust conversation about cross-cutting technical practices.
Our RFCs are authoritative. They specific how things should work, but sadly, reality may not always conform to our will. Sometimes, our actual technical practices or implementations will conflict with an RFC; any conflicts with an RFC are formal bugs or errors. This principle lets us distinguish between technical practices that develop out of habit vs. carefully made decisions.
If a technical practice conflicts with an RFC, then either the practice or implementation needs to change through our change control process or the RFC needs to be updated via the consensus process to reflect an actual change in how we do things.
Contrary to other RFC usage, our RFCs are living documents. It is appropriate for the owner to edit an RFC to reflect current implementation status, make things more clear, address additional questions as they arise, or otherwise keep the document up-to-date. The owner may make minor amendments from time-to-time about specific details if need be; the document history in Notion will reflect such changes and, as such, may not be explicitly called out.
By using this RFC process, we can build consensus for cross-cutting technical decisions across a highly multifunctional team.