🗓️ 28032024 1449
📎 #template
design_doc_template
Problem Context
Brief description of what the problem or opportunity is. Give an overview of the domain and pain points. What is the current solution? Give some details about what its shortcomings are.
Proposed Solution
Give a high-level summary of your proposed solution. This should explain what it will do, how it will be built, and what’s different. Explain the advantages of your proposal here.
Goals
Go over the goals of the project. Explain the requirements and outcomes you expect in bullets:
- requirement/impact
- requirement/impact
- requirement/impact
Non-Goals (Optional)
if there’s anything you’re not trying to do, mention it here. For instance, if you’re refactoring for dev velocity and not performance wins you might want to clarify that:
- non-goal
- non-goal
Design
Give an overall summary of the design and major pieces
A diagram may be helpful for the reader here to understand the top-level view.
- Give the reader context on relevant design details like the major request paths and data model you’re proposing
- You may need to add sections for each major component to explain the design, feel free to add them.
Alternatives Considered
What were the other solutions you considered? Why weren’t they chosen? Useful for discussion but also to serve as documentation so these alternatives aren’t considered again.
Open Questions
List any open questions that you’d like to discuss that still need to be ironed out:
- Question1
- Question2
Parties Involved (Optional)
If this is a collaboration, include the names of other relevant engineers that will be key to the project's success. If the work will be split up, identify who will be working on each part.
Timeline and Milestones
Add high-level timelines and key milestones for tracking project execution.
Appendix
Space for you to add any relevant links or detailed figures that you didn’t want to inline.