2026/1/18
#反面模式#启发式#并行处理#暴力解决方案#穷举搜索#算法#规模经济#设计模式#重新定义问题#黑匣子#自动化

通往成功的捷径

勿重复造轮子,善用设计模式与启发式方法。通过自动化、并行处理及重新定义问题(Reframing),寻找通往高效的算法与捷径。

优秀的作战计划能确保你运用正确的工具、按照正确的流程完成任务。例如,在撰写本书的时候,我们的第一步是确定大纲。我们希望确保书中内容衔接流畅,而不是想到哪里写到哪里,或是在迥然不同的概念之间来回穿梭。大纲有助于我们将相关概念联系起来,再分为彼此连贯的章节。

尝试新事物的时候,你最好提醒自己——无须重复做无用功(no need to reinvent the wheel)。你不大可能是世界上第一个遇到这件事的人。由于“自媒体”的专家无处不在,几乎关于任何一个话题,你都能找到相关网站、博客或视频。正如本杰明·富兰克林(Benjamin Franklin)在《致富之道》(The Way to Wealth)一书中所写:“知识上的投资会带来最佳的收益。”

在许多领域,领军人物已经根据过去的成败经验,就最佳实践方式达成了共识。建筑师克里斯托弗·亚历山大(Christopher Alexander)引入了“ ”(design pattern)这个概念,也就是 对一个设计问题可重复使用的解决方案 。这个概念已经被其他领域采纳,在计算机领域尤为盛行。

你可能很熟悉日常用品的常见设计模式。不妨想一想,所有门把手都安装在同一高度,方便大多数人使用;所有楼梯都设成同一宽度,方便大多数人行走。它们之所以一致,是因为它们遵循被证明管用的同一基本设计模式。在某些情况下,这些模式已经成为正式标准,例如建筑规范。

在你擅长的领域,也可能存在适用的设计模式。对于写书来说,丛书的布局、印刷到预期的字数和文风,都有许多设计模式。在我们的职业生涯中也是如此:初创公司(如何融资、如何管理等)、编程(如何写代码、常用算法等)和生物统计学(常见的药物试验设计、统计方法等)都有自己的设计模式。

与经过反复验证的设计模式恰恰相反的是“ ”(anti pattern)。这个概念是指, 对于一个通常有更好已知解决方案的常见问题,有某种看似出于直觉,但其实并不管用的“解法” 。本书介绍的大多数思维模型不是“设计模式”就是“反面模式”,了解它们有助于你避开常见的陷阱。这一章介绍的“反面模式”包括自行车棚效应、现时偏好和负收益。想要避免“反面模式”,你可以有针对性地寻找它们,然后找出既有的设计模式。

尽管事先做计划总是很管用,但有时候完成任务的最佳方式是迅速采取行动,而不是陷入分析瘫痪(具体请见本书第二章)。

小时候,劳伦有个四位数的密码锁,可是她忘了密码。虽然对成年人来说,有个解决方法是换一把新锁,但小孩没有那么多钱。于是,经过一番速算,她认为通过(exhaustive search)不难找出数字组合。这个办法确实奏效了!

像这样的穷举搜索是一种(brute force)解决方案。“暴力”这个词显然适用于需要花“力气”的活儿,例如用斧头砍树。不过,它也用于指代不需要巧思的解决方案。例如,你要给10个信封填地址,用手写会比用打印快。

暴力解决方案可以有效解决许多小规模的问题。但随着问题变大,例如,要给100个信封填地址,暴力解决方案很快就会难以为继。遇到这种情况,更便捷但也更昂贵的方法是使用更复杂的 工具 。

我们不妨以砍树为例。如果你想砍一棵小树,用斧头或手锯就行了。但要砍更大的树,就需要用到电锯。要想清理一片树林,首选工具是“伐木工人”。如果你能负担得起,完全可以花钱购买更好的工具来解决问题。

但有些问题(例如大型计算问题)即使借助复杂的工具也相当棘手。对于一个长度为8个字符(字母或数字,区分大小写)的密码,存在218万亿种可能的组合方式。这不可能靠人工一个个试过来,就连用计算机都相当耗时。哪怕以每秒1000个密码的速度,也需要6923年才能验证所有组合。

与随机尝试每种组合比起来,更好的方法是先试字典里有的单词组合,因为人们通常会用单词做密码。更好的方法是先想一想常用密码,以及对那个人来说有意义的单词或数字,例如相关人士的出生日期、运动队名或缩写。这是一种“”(heuristic)解决方案,一种通过反复试错的解决方法。这种方法无法确保获得最佳或完美结果,但在很多情况下还是非常管用的。

你应该将启发式解决方法纳入考量,因为尽管它们可能在其他情况下效果不佳,但说不定是解决你眼前问题的捷径。但如果问题仍然存在,你不断加入更多启发式规则,这种解决方法就可能变得大而无当。脸书网的“内容审核”就是如此。该公司最初制定了一套简单的启发式规则(例如,图片中不可出现裸体),然后逐渐加入越来越多的规则(例如,在某些情况下,比如母乳喂养图片中可以出现裸体)。到2018年4月为止,脸书网已经积累了足足27页的启发式规则。

另一种解决方法是使用 (Algorithms),也就是 分步骤的过程 。算法在现代生活中十分常见,帮我们解决了许多棘手的问题,但我们常常没有意识到它的存在。以旅行为例,算法控制着交通的管理方式、路线的计算方式、“最佳”座位的选择方式、上网搜索时推荐给你的酒店类型……而这仅仅是个开始。

算法可以是简单的(例如交通信号灯每两分钟变一次),也可以是复杂的(例如交通信号灯根据实时传感器动态变化),甚至可以极为复杂(例如人工智能同时控制全城的交通信号灯)。许多算法都扮演着“ ”(black boxes)的角色。这就意味着,用户几乎不需要了解它们的运作方式。你只想得到最佳座位,才不在乎是怎么弄到的呢! 你可以把每种算法都视为一个匣子,一边输入,另一边输出。匣子外面被涂黑了,所以你不知道里面发生了什么事 。“黑匣子算法”的常见例子包括网飞或亚马逊的推荐系统、在线约会网站上的自动匹配,以及社交媒体上的内容审核。

实实在在的工具也可以是“黑匣子”。“工具内置技巧”(The skill is built into the tool) and “工作台本身即工艺”(The craftsmanship is the workbench itself)这两个说法就表明,工具越复杂,运用工具所需的技巧就越少。不过,修工具或给它们编程则是另外一回事了!

当你考虑使用工具更快地完成任务时,应该从寻找所有现成的选项开始。它们就是你可以花钱购买的有效设计模式。例如,在打印地址标签的时候,你可以使用邮件合并软件、预打印标签纸和提供全方位服务的复印中心。

你需要花一点时间分析眼前各个选项的利弊,因为如果选错工具,会很容易遇上麻烦(浪费时间或金钱,或者发生更糟糕的事)。专业人士可以帮你分析各个选项,例如你走进一家家居建材店,请店员推荐DIY维修工具。选好工具后,你还需要再花一点时间,弄清如何有效地使用工具,或者请专业人士为你操作。

当你一次又一次地遇上同样的问题时,不光需要更好的工具和算法,还会希望有更好的处理方式,以便与这些工具和算法互动。例如,如果你想做个人预算,可以从纸、笔和计算器开始。在算出第一个月的个人开支后,你可能会换用电子表格,因为它可以算得更快,而且不容易出错。

接下来,你可以寻找另一款软件,将数据自动导入电子表格。这么一来,你每个月就能节省更多的时间。 只有当通过更高效的处理方式能最终节省时间和金钱,取得的成果超出设置它的成本时,这样的(Automation)才有意义 。

当随着规模的增加,运作变得越来越高效时,自动化也是一种利用(economies of scale)的好方法。“规模经济”解释了大企业相对于小企业的一些优势。大企业有能力支付大量前期费用,拥有最大的工厂和仓库,以及最先进的机器人和机械。一切安排妥当后,每件新产品都能以更快的速度、更低的价格在工厂和仓库中运输。

接下来,大企业可以将初始固定成本摊给大量产品,从而以更低的总价生产或运输商品,甚至抵消前期投入的费用。这样的整体效率意味着,大企业的产品价格可以定得比竞争对手低。不妨想一想亚马逊网站。

另一种加快处理速度的方法是 (p a r a l l e l processing),也就是 并行解决一组问题 。在计算机领域,这实际上是将不同的运算分配给不同的处理器,以便同时进行多个运算。这与依次进行的串行(serial)处理恰恰相反。亚马逊不是只有一个发货的大仓库,而是有一百多个仓库!因此,它可以将日常物流分解成不同设施中的许多子问题。

并行处理属于“分而治之,逐个击破”(divide and conquer)策略 。如果你能将一个问题分解成多个独立的部分,然后将这些部分交给不同的人解决,就能更迅速地完成更多的任务。请设想一下,将一个项目分解成多个部分,委派给不同人员或不同部门负责。

Click to Zoom

另一种在遇到困境时迅速找到解决方案的策略是(reframe the problem) 。想一想迪士尼乐园面临的核心问题——排长队。大多数游乐设施的座位都是有限的,因此要在同一时间内供更多人乘坐,唯一的方法就是增加座位。但改造、增加座位相当费钱,还需要长时间关闭游乐设施。如果游乐设施本身空间有限,这种方法甚至无法实现。但如果将“怎么才能让人们减少排队等候的时间”这个问题重新定义为“怎么才能让人们在排队等候时更开心”,那会怎么样?

当你将问题重新定义后,解答空间(solution space)就会浮现出来。你可以看到,针对这个经过重新定义的问题,迪士尼采用了多种解决方法。迪士尼的“快速通行证”(FastPass)允许每位游客有限次地跳过排队。排队区外竖起的“预计等候时间”公告牌让人们不用猜“还要等多久”,而不知道“还要等多久”是排队时最令人沮丧的一点。此外,排队过程中还安排了许多游戏、图片、动画等给游客解闷。这么一来,即使需要等待,大家也不觉得那么漫长难熬了。其中一些亮点似乎应该作为设计模式纳入其他排队系统。一旦迪士尼乐园的忠实粉丝(比如我们)体验过这些亮点,在其他游乐园排队时就会觉得少了点什么。

在数学和科学领域,问题通常可以经过重新定义,变成更容易解决的形式。这是通过利用已知的算法和设计模式实现的,也就是将难题转换成已有可行解法的问题。

从“暴力解决”到“重新定义问题”,这一节介绍的思维模型都可以用作战术解决方案,帮助你更迅速地完成项目。当你遇到难题的时候,请花点时间想一想这些模型是否适用。有一位无名伐木工说过:“如果给我6个小时砍一棵树,我会花4个小时磨快斧子。”简而言之,善用时间可以归结为明智行事。