Software Design Docs
What is a Software Design Document?
A Software Design Document (SDD) is a comprehensive guide that outlines the design of a software project. It serves as a blueprint for developers, stakeholders, and other team members to understand the project's architecture, functionality, and requirements.
- Scaling Engineering Teams via Writing Things Down and Sharing - aka RFCs
An Uber engineer shares their lightweight Request For Comments (RFC) process that has provided visibility, helped standardize tech and architecture choices, and successfully scaled to thousands of engineers.
- Tech Design at Riot
The Riot team discusses their decentralized and self-service approach to RFCs, including a tagging system, stakeholder self-identification, and adoption process.
How to Write Software Design Docs
Writing a Software Design Document requires a structured approach that involves identifying the project's goals, defining the scope, creating a high-level design, and breaking it down into detailed requirements. Collaboration among team members, stakeholders, and subject matter experts is essential in creating an effective SDD.
- How to write a good software design doc
Angela covers: • Why teams should write design documents • What to include in a design document • How to write one • The process before and after writing one.
- Writing a High Level Design
David steps through his approach in writing high level designs: starting with requirements, establishing the domain model, diagramming the system, exercising different scenarios, and iterating.
- Design Docs at Google
A Google engineer discusses the anatomy of a design doc, when not to write a design doc, and the design doc lifecycle.
What to Do After a Software Design Doc is Written
After writing a Software Design Document, it's important to review and refine it continuously to ensure that it aligns with the project's objectives. The SDD should be shared with stakeholders and team members for feedback and revision. It should also be updated regularly to reflect any changes in the project's scope or requirements.
- Learning to like design documents
Julia shares some thoughts on making the most of design docs, including: explaining the document in a meeting, handling conflicting opinions, asking for targeted feedback, and tracking historical decisions.
Software Design Document Templates
Software Design Document Templates provide a framework for creating an SDD that follows industry best practices. There are several templates available, each with its own structure and format. Choosing the right template depends on the project's complexity, size, and requirements. Templates can save time and effort in creating an SDD, but they should be customized to fit the project's unique needs.
- On Writing Tech Specs
Chuck covers: • The benefits of writing a tech spec • What happens in a scenario without a tech spec • An example tech spec • How to Write a Tech Spec, with 17 components to consider