10-预测未来的准确度

158 阅读2分钟

未来难以预测,但是对未来做出适当的判断非常重要。

有一个理论的基础版本是:

预测未来的准确度,会随着系统复杂性和预测点距今时间跨度的增加而降低。

预测“Hello World”程序在遥远的未来的行为非常简单。当你在未来某个时刻运行它时,大概率会继续打印出“Hello World”。你可以肯定地说有99%的概率在两天之后它依然会以今天相同的方式继续工作,但依然存在1%的概率不会。

但是当时间跨度达到一定程度后,甚至“Hello World”的行为也变得难以预测。例如:2000年用Python2编写的“Hello World”代码如下:

print "Hello, World!"

但是如果你现在尝试在Python3中运行它,它会提示语法错误。

你在2000年没法预测这件事的发生,即使你成功预测了,也没法为此做些什么。为了应对类似的情况,你唯一的希望就是保证系统架构足够简单,便于你轻松的将旧语法替换成新语法。注意这里对系统架构的要求不是“灵活”,也不是“通用”,而是简单到易于理解和修改。

不要想当然地依据你认将来会发生的事情做出决策。请记住所有这些即将发生的事情都存在概率,无论预测多少次都存在出错的可能。

当我们只关注当下,关注我们已有的数据,关注我们现有的软件系统,相比预测我们的软件在未来何去何从,我们更容易做出正确的决定。大部分在软件设计中犯下的错误来自假设未来需要做些什么(或者完全不需要做些什么)。

你永远无法完全避免代码修改,但如果你的软件简化到傻瓜都能理解的地步,那么修改的可能性就会大大降低。

编写简单的软件比编写复杂的软件花费时间更少。虽然有时候需要加入额外的思考,但总体来说需要的时间和投入会更少,所以尽可能保证架构的合理简约,就是在为我们自己取的一场胜利、为我们的用户取的一场胜利、为未来取得异常胜利。