Effective Modeling
All models have a purpose, and an effective model contains only the details needed to fulfill its purpose. For example, you won’t see subway stops on a world map. On the other hand, you cannot use a subway map to estimate distances. Each map contains just the information it is supposed to provide.
This point is worth reiterating: a useful model is not a copy of the real world. Instead, a model is intended to solve a problem, and it should provide just enough informa‐ tion for that purpose. Or, as statistician George Box put it, “All models are wrong, but some are useful.”
In its essence, a model is an abstraction. The notion of abstraction allows us to handle complexity by omitting unnecessary details and leaving only what’s needed for solv‐ ing the problem at hand. On the other hand, an ineffective abstraction removes nec‐ essary information or produces noise by leaving what’s not required. As noted by Edsger W. Dijkstra in his paper “The Humble Programmer,”4 the purpose of abstract‐ ing is not to be vague but to create a new semantic level in which one can be abso‐ lutely precise.