August 21, 2020

The Map Is Not the Territory

There’s a mental model called “the map is not the territory”. In software development we create all kinds of abstractions that model real-world items:

  • We create user stories that are approximations of what we want.
  • Write tests that try to cover a territory (the code) we’re unfamiliar with.
  • Build software that codifies the (hopefully) interesting parts of the problem.
  • Create diagrams and documentation for the systems we’ve built.

It’s important to remember, however, that all maps are reductions. If they were complete pictures they’d need to be as large and complex as the territory they were mapping, defeating the purpose of the map. When we forget this we open ourselves up to committing errors of overconfidence, both in ourselves and in others. One way we fall for this in software development is to code exactly to a user story without remembering that every user story is a map of the thing we want and is therefore subject to the limitations of maps.

As a map maker it’s important to remember that people may travel or build based on your map. As a map user it’s important to remember that the map maker is human and a number of things can conspire to make a map wrong - the terrain changed after the map was produced, something was obstructing the map maker’s view, or just a misunderstanding of the language used.

“All models are wrong but some are useful.”

-George Box

© Eric Biven 2020