Want to get started right away? Start heređ
Background
Writing a great Product Requirements Doc (aka âPRDâ) can be hard. Even if you donât use PRDs or consider the term outdated, you probably have some sort of product spec. For these types of docs, itâs hard to choose the right âaltitudeâ to describe what your team is intending to build, as different cross-functional stakeholders care about different things and are equipped with varying levels of context. If you try to be exhaustive, you can easily write a 20-page spec that no one has the time to read (Iâve definitely written a couple of these in the past!). If youâre too vague, youâre not able to elicit meaningful feedback from the reader.
Over my time at Microsoft, YouTube, Uber, and now Figma, Iâve come to slowly gravitate towards a template for PRDs that captures just the right amount of information and displays it in a way that is useful to as many different stakeholders as possible.
How itâs structured
We structure our PRDs into 3 sections that align with the types of Product Reviews we have at Figma:
Problem Alignment: Where the PM clearly articulates the key problem we want to solve Solution Alignment: Where the team shares the proposed solution by embedding Figma design files and scoping features Launch Readiness: Where the cross-functional team outlines dependencies for launch
Letâs dive into what each of the sections look like.
Problem Alignment
I strongly believe that PMs are uniquely accountable for making sure the âwhyâ of an initiative is well-defined and well-understood. So often Iâve seen a team spend a ton of time designing a solution only to have the very premise of the problem itâs solving challenged at the very end. For this reason, I think just as much time should be spent defining the problem as determining the solution, as this saves everyone time in the long run.
Iâm not going to dive into whatâs the right way to write a problem statement as there are enough blog posts about that on the Internet. Rather, I want to share some additional color I like to include when defining the problem:
Ask âwhyâ one more time than you think you need. Donât just explain why youâre proposing this project; ask why the problem is important in the first place. Or why the problem even exists, to ensure youâre not simply describing a symptom of a deeper problem. Optimize for eliciting a meaningful reaction. Sometimes a reader wonât give great feedback on your problem because it âsounds good in the abstract,â but itâs unclear what core assumptions underlie this problem, or how severe you think the problem really is (since, at some level, everything can be described as a problem). This is why the âHigh-level Approachâ section is importantâit can quickly give a sense of scope and lets the reader imagine what a prospective solution might look like, which for many is easier to react to. State all your goals, even those immeasurable. Sometimes, the insistence on having only perfectly measurable goals and KPIs prevents you from clearly explaining what youâre trying to achieve. Simply describing what you want users to think, feel, and do can be an important first step in defining what success looks like. Solution Alignment
At Figma, we find presenting solutions via a couple different lenses to be most helpful: key features and user flows.
User flows are the easiest way for readers to understand the project because it shows how the customer will ultimately experience it. Key features is a quick way for other functions like marketing or product education to understand how we might talk about the initiative with our customers.
One common pain point with this section is keeping the designs up-to-date. Oftentimes youâre sharing this PRD early for feedback, or even as the product starts getting implemented, designs change. This is where Figma embeds save you a lot of timeâ, meaning that you can keep your existing sharing permissions (whereas previously you had to set the file to âAnyone with the link can viewâ). In Coda, itâs as easy as copy-pasting a link, and youâll get options for how to embed the content. Embed example:
Launch Readiness
In this last section, we create a checklist of considerations you want all teams to make before actually launching a feature. Your project may have unintended legal consequences or important marketing implications, and this list is intended to flag the right stakeholders at the right timeâand define criteria for launch readinessâso everyone can plan accordingly, well ahead of time.
One additional thing you can do here is to configure this so that certain individuals get notified (maybe via Slack) when the âYesâ checkbox is checked off.
A single source of truth
Because this template is written in Coda, I was able to remove any redundant data entry, and to make sure everything about the project is automatically kept up-to-date. At the very top, thereâs a section that gives readers extra context about the project (e.g., its current status). Go ahead and try it for yourselfâjust change the Project listed below and see all of the underlying info update:
TL;DR: Embed Figma files only accessible to specific individuals or teams
â â This is pulled in automatically from the Figma Project Tracker. As you add more collaborators, or as the status of the project changes, this will automatically be updated so youâre no longer having to keep multiple places up-to-date!
Read about how we've set up the Figma Project Tracker here: