一到换季,我就觉得自己衣柜里缺几件衣服,现有的颜色、款式都不太让人满意。不只是换季,我似乎总是能找到各种原因添置新东西,这些东西不算奢侈品,也不能算无用,更算不上贵,盆栽、新伞、新的充电宝、价格划算的小装饰、几本书……

有的消费还会产生连锁反应,比如我买了手冲咖啡套装之后,就开始每个月买各种不同的咖啡豆。虽然没有吃灰,但总归是比之前花得多了。买了香薰机之后就会开始尝试各种味道的香薰精油,买了扩香石之后觉得一个颜色的水晶太单调,买了灯之后觉得另一个地方暗了,也要买新的灯。

我总是因为各种不大不小的原因买东西,买了之后,我的物欲只增不减。我试图在每次买东西之前说服自己不要买,这确实有一些作用,但渐渐地,我发现这种没有来头的自我劝说,只会让自己买不了真正需要的东西,而不会阻止我买没用的东西。

比如,我在买了一条裤子之后,发现说明书上写这条裤子不能直接机洗,如果不想手洗就要买洗衣袋。我意识到这又是一条消费的连锁反应,所以我对自己说不,即使十几块钱的洗衣袋能省下我每星期超过半个小时的时间。

而在另一边,作为一个脑回路不太正常的人类,我因为在外面和朋友逛街逛得开心,花 18 块钱买了一副 12 寸的扑克牌(因为一想到自己要「耍大牌」了就觉得很好玩)。

解决问题的思想

显然,面对众多的、不稳定的、难以控制的物欲,我必须在理智不能时刻在线的情况下,让自己尽可能做出更多理性的购物选择——我必须把在当前时间段所拥有的金钱,花在真正该花的事情上。

我需要另一个东西帮助我思考,让我在任何时候都能根据它,做出尽可能理智的决定,也就是说,我需要一个「系统」。

最近在读《算法之美》(Algorithms to Live by),虽然我还没遇到可以用书中提供的问题和思考模型解决的实际问题,但利用计算机科学的思想,辅助人做出决策的想法,真的对我很有启发。

那么,现在我们试着用「系统」的思想来解决遇到的这个问题。要应用这样的思想,我们要明确三个要素:目的、输入和输出。

分析目的:我希望达到什么样的效果?

前面已经分析过了,我的目的是让我合理地分配当前时间下可以支配的金钱。不过这个「合理」要怎样定义呢?

简单来说,我希望我不会阻止自己买真正需要的东西,也不能完全否定自己买无用之物的行为

比如前面提到的洗衣袋,我真的需要它,并且我真的想要保护好自己喜欢的那条裤子。这种我既想要又需要的东西,当然要优先购买。而那个大号扑克牌,虽然不需要,但它能给我提供情绪价值,当然可以买,不过照理来说,应该要排在洗衣袋的后面。

这样想就很明白了,这是一个排序的问题。不过很遗憾,我并不能用计算机的冒泡排序或者归并排序算法来解决,因为待排序项没有一个明确的「键值」。

但我们现在已经很接近了,我们已经知道,要解决如何买东西的这个问题,只需要知道什么优先买,什么最后买就可以了。

当然,有些东西实在是没必要买,所以也要有办法评估什么样的东西没有购买价值。不过这和前面的排序实际上可以一同解决,比如排在最后 20% 的东西就不买。

明确输入:我可以利用的信息有哪些?

现在我们已经知道,我们要做的事情是给这些待购买物品进行「排序」,事情就简单很多了。

不过,就像我在前面提到的,这实际上并不是一个排序问题,因为在计算机科学中,排序需要一个索引,或者键值之类的东西作为依据。如果我们根据购买的必要性给所有要购买的物品编号,越有购买价值的物品,这个编号就越大。那么,我们就可以给这些物品「降序排序」,购买价值最高的物品就排在最前面,最优先购买,相反,最没有购买价值的就在最后面。

现在,这个问题就变成了,怎样计算一件物品的「购买价值」呢?

回顾一下我们的目的:我希望自己在能保证自己能买到自己需要的物品时,也能在一个合理的范围内,买到自己想要的东西。从中提取两个关键词——「需要」和「想要」。这两个词就可以是我们计算「购买价值」的依据。

如果是 100% 需要的东西,就算是 0 分的想要,也要购买。如果是 50% 想要的、50% 需要的东西,自然也可以买。那如果是 100% 想要,但是一点也不需要的呢?

此时,可以引入另一个因素帮助我们做决定——预估价格。

如果一个东西我们特别想要,但是一点也不需要,例如大号的扑克牌,该不该买呢?显然,如果这个东西很便宜,只要十几块钱,那买来玩一玩为何不可?但如果这样的东西要花 300 多块钱,购买的价值就相对较低了。

现在,我们就基本确定了这个「系统」的输入了:需要、想要和价格。

当然,价格很容易计算,毕竟它是明确的数字。不过「需要」和「想要」比较抽象,似乎塞不进一个公式里。要解决这个问题,我们可以凭直觉估计一个数字:提前确定一个范围,比如 0~5,然后凭自己的直觉,分别给自己有多想要和有多需要打个分。

这似乎听起来不太严谨,但你还能有什么选择呢?而且,这毕竟是给自己用的,凭直觉得出的结果足够了。

得到输出:设计一个合适的算法吧!

现在我们知道了自己有多想要、多需要一件物品,还知道这件物品大概的价格是多少,我们就可以开始计算这个物品的购买价值了。

首先,根据你的自身情况,决定「想要」和「需要」各占几成。我的选择是,「想要」占三成,「需要」占七成。于是,我给「想要」打的 0~5 的分数,到最后只会按照 30% 几分,「需要」分数则会按照 70% 计分。

其次,「价格」明显是个减分项。价格越高,这个产品的购买价值也就越低。所以,要从「想要」和「需要」的 0~5 分中,减去一个由「价格」决定的数字。

显然,我们不能直接用价格本身减去那个 05 的分数,这两个数字根本不是一个量级的。如果把「想要」和「需要」分数的上限拔高到和价格类似,也就是取 0100000 的范围,又不如 05 方便。而且,一般我们购买的物品,价格都有很明显的断层,而且分布也不均匀——我们想买的东西,可能 50200 区间内的更多,其次就是 2000~5000 的数码产品,在往上,可能就是一台 10000 左右的 MacBook 了。当然,每个人的情况略有不同,但平均分布的情况肯定是极少的。

我尝试用价格的「位数」减去想要和需要的分数,但这样其实行不通。举个例子,我的愿望单里有一项是 MacBook,我给它打的想要分数是 5 分,需要分数是 2 分(因为我已经有性能还不错的电脑了),这样得到的分数就是 2.9。如果这个分数减去预估价格 10000 的位数 5,最终的分数就是 -2.1——或许我现在确实不应该买新电脑,但它的分数不应该比大号扑克牌还低吧?

最后,我决定用预估价格的自然对数计算购买价值。因为对数函数的特点是:随着 x 的增大,y 的增长速度也随之变缓——100 元和 200 元的东西差别或许很大,但 2000 元和 3000 元的分数差距就没那么大了。

这也比较符合大部分人的消费习惯,如果决定购买千元甚至万元价位以上的商品(是否决定当然由想要和需要的分数来判断),价格影响其实就没那么大了;但如果同类商品价格的区别是 80 和 150,就可以再摇摆一下,如果后者的「想要分数」更高,那算出来的「购买价值」当然也有可能更高。

不过,对数函数的值和五分制的「想要和需要分数」还是有差距,所以我们可以给后者加上一个系数来减少这个差距。最终,我使用的公式如下。

(想要指数 * 0.3 + 需要指数 * 0.7) * 1.75 - log10(预估价格)

这是用 Notion 函数编写的,稍微改一改,也能放在 Excel 里用。

至此,我们就完成了这个系统的设计。

用一个表格解决问题

比起之前的 习惯打卡系统,这个系统要简单得多,简单到,如果你不需要花里胡哨的筛选、颜色、进度条和自动排序功能,你完全可以用一个本地的 Excel 表格代替 Notion。

image.png

这个表格的核心就在于「购买优先级」这个函数,把刚才编写的公式放进去即可。要注意的是,图里的 floor() 函数和 * 100 以及 / 100 这些额外的计算,是用来保留小数点后两位数字的(给数字乘 100 后取整数,然后再除 100,就得到原来数字保留小数点后两位的样子)。

image.png

我还做了一些额外的设计,例如,当「购买优先级」小于 1 时,Notion 会提示我「别买」(这个 1 不是严谨统计之后得出的数字,不过,按照我给出的公式计算,如果得到了比 1 小的数字,购买的价值大概真的不高)。

如果仔细观察,你会发现,图中唯一一个提醒我别买的项目的想要分数是满分,而需要分数是零分。这个极端的例子能说明很多问题。实际上,如果我把预估价格改为 30 元,它就会允许我买了。

不过,比起买不买这个定性问题,更重要的是,当我们算出了具体的数字,就允许了「排序」。现在,我们可以根据「购买优先级」来分配我们的金钱,优先把钱花在优先级最高的物品上。

在结束之前,还有一些小问题需要讲清楚。

这个表格和管理物欲有什么关系?

现在,当你想买什么东西的时候,比起先上社交媒体看看评测,或者在购物 App 上开始选购,你应该先打开这个表格,评估这次消费。

实际上,这比漫无目的地在信息流里打转要有效得多,也快得多。你只需要写入三个数字:想要分数、需要分数和预估的价格。然后,你的系统就会排序,把这条消费放在正确的地方。同时,你也能看到之前的消费想法,如果有别的消费想法排在你刚添加的前面,就说明你现在更应该买其他东西。

这时,你没有直接抑制你的物欲,而是把他转移到了你更应该买的东西上。同时,你也知道,你的想法没有被丢弃,它还在那个表格里好好地躺着呢。除非,系统算出来的分数非常低,那么你应该想办法让自己接受,这个东西就是没有购买的必要,不要花不应该花的钱。

当然,如果你刚添加的消费想法就排在表格的最前面,那么接下来开始选购就是理所当然的。你不需要有负罪感,因为你的系统告诉你,这就是你现在应该做的。

不过,这一切的前提都是你的钱包要足够充裕……

价格怎么估?

同一类商品,有 20~30 块的便宜货,也有价格乘十倍的、看起来更吸引人的货。在表格的「预估价格」里,我应该填哪一个呢?

这是现有系统没能直接解决的问题。不过,很容易想通,便宜货和看起来更高档的货对你吸引力肯定是不一样的,那么「想要分数」就是有区别的。是同类物品,却是不同的选择。将便宜货和高档货分开填入表格里,这时,大概只有「需要分数」是相同的,让你的系统算出一个具体的数字帮你选择就好了。

这也是系统存在的原因——你只需要输入相关的数据,让人浑身像有蚂蚁在爬的纠结,就不需要你来做了。


感谢你读到这里。这是「我怎样用 Notion」系列文章的第二期,不过,这期和 Notion 的关系似乎不大,同样的思想也能用 Excel 来实践。无论如何,希望这期内容能对你有帮助吧。