Software Design Goals
Discussions about software design are sometimes started with attempts at justification: "Why should we do this?", "What are the benefits?" "What is the purpose?" I think this is a great way to start because downstream decisions (e.g. when you are choosing between design patterns) can often be guided by