When determining what design decisions to document, it is essential to consider the context, scope, and complexity of the project. Generally speaking, some of the design decisions worth documenting include the high-level architecture and design patterns of the software system, key functional and non-functional requirements, design principles and guidelines, design trade-offs and alternatives that were considered and rejected, as well as design assumptions and dependencies. These elements provide insight into the use cases, scenarios, user stories, performance, security, reliability, scalability, coding standards, naming conventions, best practices, pros and cons of different approaches, risks associated with each option, costs and benefits of each decision, input and output data needed for the project, platform requirements for development or deployment, environment considerations such as tools or frameworks used in the project.