# Intro

Theory doesn't convince.  Understanding theory optimizes application.&#x20;

The forever questions in software design are:

* When do I start making software design decisions?
* When do I stop making software design decisions and get on with changing the behavior of the system?
* How do I make the next decision?

These questions aren't immediately answerable because we lack the information needed.

<mark style="background-color:green;">Understanding theory sharpens judgement</mark> for when you have to answer the questions (above) on speculation. <mark style="background-color:green;">Understanding theory let's you disagree constructively</mark> with fellow geeks.

#### This section addresses the following questions:

1. What is software design?
2. How does software design drive the cost of software development and operation, and how does the cost of software development & operation drive software design?
3. What are the trade-offs between investing in structure and not investing in structure.
4. What principles, economic & human, can we use to inform whether and how to change the structure of software?
