Skip to content

Instantly share code, notes, and snippets.

@zhowzeng
Last active May 17, 2024 19:08
Show Gist options
  • Save zhowzeng/3c7c814f25c5ae2c0d404ebdf035af2e to your computer and use it in GitHub Desktop.
Save zhowzeng/3c7c814f25c5ae2c0d404ebdf035af2e to your computer and use it in GitHub Desktop.

[Design Doc] Your Project Name

Design docs are a way to propose future work and get detailed technical feedback.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment