👉 Please remove tutorial text as you go along.
👉 Expect to spend a ~1h working on this doc at the beginning of most projects than are scoped to take 1w+. Timebox this to no more than 3h.
👉 The core engineer building this project should be the person writing this doc, but collecting input from other engineers / tech leads is encouraged.
🌞 Vision
Link to the original PRD for this doc. If one doesn’t exist (it probably should!), write a one sentence description of the intended outcome of this project.
⚖️ Requirements & Constraints
In this section, describe any engineering specific requirements or challenges (performance, scale, etc.) that we foresee.
Ex: Since this function is called 10k times during planning, it needs to be highly performant Ex: We want to re-use this flow in future features, so it needs to be designed to be generic / reusable.
📕 Plan
Data model: Describe any changes to the underlying data model, including both modifications to existing objects as well as net new ones. Migration: If this is a breaking data model change, include a plan for how old data will be managed (migrated, deleted, etc.) API Design: If any new endpoints need to be built, describe the new endpoints and input / outputs. Reusable Components: Describe any new generic components are being built here. Libraries: If any new external dependencies are planned to be introduced, include that here. We encourage explaining alternatives considered, especially the alternative of simply no new dependencies. Architectural diagram: If significant backend changes are happening, feel free to include an architectural diagram illustrating how components will interact (not required for most simple projects)
📖 Testing
Describe what your plan for testing this feature is. This should focus mostly on engineering specific testing and less on product flows.
What unit tests do you plan to write? Any new alerts / logs we should be monitoring?
⏰ Timeline
Add a bullet point for each milestone and a rough estimated timeline. For each step, lead with the primary engineer / person responsible as well as additional resources you may need. End with a total proposed timeline.
Ex: Michael: Build X API (1 day), need ola for code review Ex: Stella: Build reusable component (1w), need design for design review
🙋🏼♀️ Open Questions
Add any open questions that need to be answered here.