Chapter 3. The Future

The primary question that faces software designers is “How do I make decisions about my software?” When faced with many possible directions you could go in, which option is the best? It’s never a question of which decision would be absolutely right versus which decision would be absolutely wrong. Instead, what we want to know is, “Given many possible decisions, which of those decisions are better than others?” It’s a matter of ranking decisions, and then choosing the best decision out of all the possibilities. For example, a designer might ask himself, “There are 100 different features we could work on today, but we only have the manpower to work on two. Which ones should we work on first?”

The Equation of Software Design

The above question, and indeed every question of this nature in software design, is answered by this equation:

image with no caption



Stands for the desirability of a change. How much do we want to do something?


Stands for the value of a change. How valuable is this change? Usually, you would determine this by asking “How much does this help our users?” although there are other methods of determining value as well.


Stands for the effort involved in performing the change. How much work will the change require?

Essentially, this equation says:

  • The desirability of any change is directly proportional to the value of the change and inversely proportional to the effort ...

Get Code Simplicity now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.