系统即一切,软件即是系统最近我和一位朋友聊天,问他想不想多学点编程,他说不想。我接着说,从软件设计中学到的东西在日常生活中非常有用,但当时说不清楚为什么。后来我仔细想了想,有了更连贯的想法,于是写下来。1、系统无处不在。理解复杂性、权衡取舍、系统如何生长与演化,适用于很多事情,因此普适有用。
2、软件工程是系统思维最纯粹的体现,也是普通人可以边做边学的途径。
系统即一切
“系统是一组相互作用、相互关联的元素,按照一套规则运行,形成一个统一整体。”以上三者相加 → 所有人类组织都是系统
法律体系是系统
家庭关系是系统
语言是系统
对话是系统
社会规范是系统
物理定律是系统
等等,不胜枚举
定义这么宽泛,那我们还能说出什么具体结论吗?我认为可以:系统可以是不可变的(如物理定律),也可以是完全任意的(如穿搭潮流),或介于两者之间。
系统可以更复杂或更简单,至少相对于同类系统而言。规则可多可少,元素可繁可简。
越简单的系统越容易学习、传授、理解。
我们日常接触的大多数系统,要么不受控制(如物理定律),要么影响力极弱(如通过民主影响政府),要么是现成的(如规范、文化、语言)。我们很少需要深入思考如何构建一个好系统,更少有机会从零搭建。
我相信还有更多,但希望到这里你已经能感受到:“系统” 一词虽宽泛,却依然有深度与实用价值。软件即是系统
现在我写东西尽量不假设读者懂代码,毕竟我妈妈也会看,所以我会尽力把鸿沟填平。把软件还原到最本质:我们只是在给机器写指令,让它按特定顺序做计算。元素是数字(0 和 1),规则是数学。它本身就是一个系统 —— 既然万物皆系统,这一点也不意外。有趣的是,我们不会让它随便算,而是让它做有用的事。“有用” 几乎总是意味着:与现实世界的某物对应。电子表格可以是公司财务的简单模型
天气预报模拟真实天气
互联网有点像和人交谈
电脑游戏试图成为虚拟世界
你可能已经看出一部分结论:如果你有机会设计这类系统,它会成为学习现实系统的绝佳方式。我们常说,真正理解的标志是能把概念讲给别人听。而讲给不会自动帮你补全漏洞的计算机听,效果是等价的。收获还不止于此。你在做的过程中可能想修改模型,只为省时间或探索可能;你还可以给系统加上全新的功能。比如在互联网上给任何人发推文,这种交互在软件出现前根本不存在。我们一起体验这些新交互的美好与麻烦。但你不需要做 Twitter 级别的项目才能学到系统设计。哪怕是中等规模、只有自己在用的软件,也能让你体会到系统的力量与挑战。还有一些领域也在持续产出系统,比如物理模型,和软件很像。但借助高级语言、尤其是现在有大语言模型辅助,我们做软件时只需要专注思考系统本身。相比之下,就算你有机会设计公司组织架构,它的生长和变化速度也远慢于软件。对我来说,软件里的很多道理放之四海而皆准。我第一篇文章里说的复杂性会填满给它的空间,就是绝佳例子。看着空类被越来越多代码填满,我意识到这个现象,然后开始在所有系统里看到它:团队不断膨胀、拆分、再膨胀;组织章程越来越复杂,照着框架填充,哪怕其实没必要。再比如调试。我很喜欢的一条原则是:没搞懂问题,就不许修复。修复 bug 常有很多办法,有时你明明不懂原因也能修好。但风险很明显:根本原因需要被找到、理解、深究。在软件里明白这一点,你就会发现它适用于所有系统。比如靠喝咖啡提神对抗困倦,而真正该做的是多睡觉。最后我想对朋友说
我不会说 “你应该学编程”—— 这对我想表达的东西来说门槛太高。我更想说:有一种思维方式,要做一段时间才会显现。你会开始看到规则,而不是表面。你可以从别的路径抵达,但软件是我所知最便宜、最快的一条,也是一位不会帮你补漏洞的罕见老师。https://wilsoniumite.com/2026/05/15/systems-are-everything-software-is-systems/