↓ Ir para o conteúdo principal

← todas as notas

📎 Webclip

Design Docs at Google

Google uses design docs as informal documents written before coding to define software designs. They record the high-level implementation strategy and the trade-offs behind key decisions, helping engineers solve problems early, build consensus, and keep cross-cutting concerns in view.

Reading notes
#

  • Design docs are written before implementation and focus on the problem, the intended solution, and the trade-offs considered.
  • The document can be more concise and easier to understand than code when the goal is to discuss a problem at a higher level.
  • They help identify design issues early, align the organization, scale senior engineers’ knowledge, and preserve design decisions as organizational memory.
  • A useful doc usually covers context and scope, goals and non-goals, the actual design, and alternatives considered.
  • The design section should explain the chosen solution and why it best fits the goals under the given constraints.
  • Useful material includes system-context diagrams, relevant APIs, data storage choices, and links to prototypes, while avoiding unnecessary verbosity.
  • The shape of the doc depends on how constrained the solution space is, from greenfield projects to legacy systems with narrow options.
  • Alternatives matter because they show why the selected design is preferable given the project goals.
  • Cross-cutting concerns such as security, privacy, and observability should be addressed explicitly, often with dedicated reviews or separate docs.
  • A design doc should be detailed enough to be useful but short enough for busy readers, with large projects often around 10 to 20 pages.
  • A design doc may not be worth writing when the solution is obvious, the document becomes an implementation manual, or the overhead conflicts with rapid prototyping.
  • The lifecycle includes creation and rapid iteration, review, implementation and iteration, and later maintenance and learning.
  • Reviews can range from lightweight team feedback to formal meetings, and their main value is early incorporation of organizational experience.
  • During implementation, the doc should be updated when the design changes, especially before the system ships.
  • Older design docs remain useful as an entry point for understanding a system, even if they drift over time.
  • Re-reading old design docs can help engineers see what they got right, what they got wrong, and how to improve future design decisions.