← 返回规律列表
决策

地图不等于疆域

我们对现实的表示,不等同于现实本身。

显示原始英文内容

The Map Is Not the Territory

Our representations of reality are not the same as reality itself.

Takeaways

  • Design docs, UML diagrams, and architecture schematics are abstractions. Don't confuse the blueprint with the actual running software.
  • When implementing a system, expect that unforeseen factors will emerge that weren't captured in the initial designs. Be prepared to adapt the plan as you discover new 'terrain' during development and testing.
  • Models and designs are valuable for guiding development, but always be willing to question assumptions when evidence from the real system contradicts them.

Overview

"The Map Is Not the Territory" is a mental model originating from general semantics. It encapsulates the idea that our perceptions or conceptual models of things are not the things themselves.

In software, we constantly create "maps": requirements documents map user needs, architecture diagrams map how components should interact, and our mental understanding of a codebase is a personal map of how we think the code works.

These maps are useful and necessary. Without them, we couldn't plan or reason about complex systems. However, problems arise when we forget the map's limits.

A typical example is overconfidence in initial design: a team designs a system on paper, but when coding begins, they discover modules cannot communicate due to latency issues not captured in their assumptions.

As statistician George Box said, "All models are wrong, but some are useful."

Examples

Consider designing a microservice system where Service A communicates with Services B and C via Kafka topics. The diagram assumed "the network is reliable" or "latency is negligible," but in cloud infrastructure reality, those assumptions fall apart. The team updates the design to include retry mechanisms or schema validation.

In performance modeling, an engineer might model a database handling 10,000 queries per second based on specs. In production, due to specific query patterns and data distribution, it only achieves 5,000 qps. The model didn't account for query plan edge cases.

The Agile methodology itself embodies "map vs territory" thinking: instead of detailed 2-year plans, Agile uses short iterations with continuous feedback from reality to correct its maps.

Origins

The phrase was popularized in "Science and Sanity" (1933) by Alfred Korzybski, a Polish-American scholar. Korzybski highlighted how our language and knowledge mislead us into believing our constructs actually represent reality.

核心含义

架构图、指标、需求文档、领域模型和测试报告都是现实的模型,而不是现实本身。模型必然选择性地保留信息,过度依赖模型会让团队忽略现场行为和未被记录的约束。

好的工程决策会在模型和现实之间来回校验:看数据、访谈用户、观察生产系统,并根据反馈更新模型。

实践例子

架构图显示服务之间完全解耦,但生产问题却集中发生在共享数据库和隐含同步任务上。图没有“撒谎”,只是没有表达系统真正重要的关系。

来源与边界

这一说法与 Alfred Korzybski 的一般语义学相关。模型仍然非常有用,问题在于把简化后的模型当成完整事实。