An RFC, or “Request For Comments” is a detailed technical document we use to start new projects.
Sharing ideas, issues, and improvements is great, but documenting the problem, researching how to solve it, and describing the best way to release it is better.
Having the RFC document written down is really helpful for a remote team to collaborate and share context and ideas async. It's been extremely important to us to understand the entire scope and size of the project. It allows us to do deeper research on the problem we're trying to solve.
It facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas but more so a collaborative practice to shape an idea and to find serious flaws early.
Here's a summary of the template we use.
# PurposeDescribe the specific problem or opportunity for the problem.# BackgroundContext and detail the current situation and how we've acted on the problem.# ProposalOutline the proposed solution or change.# Technical DetailsDive into the technical aspects of the proposal. Map the changes we must make in each service, the database changes, and prototypes.# Implementation PlanWe break down into phases, each phase should have a goal for us to release in production incrementally.# General QuestionsAnswered questions that people may have about the proposal suggestion.# Open QuestionsOpen questions to everyone to contribute and help evolve the RFC.
After the RFC is written, we share it on Slack so everyone can see and collaborate on the discussion and decisions regarding the proposal.
We use Notion to write and document the RFCs, so people leave comments on certain parts of the proposal with suggestions or questions to be followed up by the writer or others.
When everyone is happy with the decision, we move the RFC to Approved
.