1 分钟阅读
你的 Bug 可能正是别人的功能
软件工程的魔幻定律(1)
Part I-I:架构与复杂度
Gall’s Law:从简单开始,别想着一步到位
原文:
“A complex system that works is invariably found to have evolved from a simple system that worked. A complex system built from scratch won’t work.”
这条定律出自 John Gall 1975 年的著作《Systemantics》——一本对系统理论的批判性审视,但它在软件领域几乎无处不在。每次大型重写项目的失败,背后几乎都有它的影子。
原因并不神秘:我们对复杂系统的理解,往往只能通过运行它才能获得。一个设计精良但从未投产的系统,必然遗漏了大量只有在生产环境里才能发现的边界条件、状态转换和外部依赖。
Google 的很多核心基础设施、Linux 内核,都是从极简的原型演化来的。反面案例更多,但大多数人讳莫如深。
实践含义很直接:新功能从最简单可用的版本开始,验证假设之后再迭代复杂度。 不是因为工程师偷懒,而是因为这是唯一经过验证有效的路径。