第4章 比利战胜投标人

计算机应用领域可以为如何定义一个问题提供丰富的素材。下一个故事中,我们的客户是一家大公司,与问题相关的人包括总裁、副总裁和审计师。问题的重要性完全配得上这样豪华的阵容:这是一桩政府剩余财产竞购,标的物总价数千万美元。

竞购采用密封投标法,由4家公司竞购11件物品。并不是所有物品都一样受欢迎,事实上,部分标的物甚至没有一家公司想要。但政府事先明智地制定了一系列规则,确保所有物品最终都能找到买家。

例如,某家公司只要想参与竞购,就得对所有11件物品投标。如果其中几件物品的投标价与其他的相比不够高,这几个价格就会被自动抬高到规定的最低价位。还有其他的规则将最冷门与最热门的标的物捆绑出售。这样,某件物品的中标方就不简简单单是对这件物品出价最高的公司,而是对一组绑定物品给出最高组合价的公司。

由于涉及金额巨大,而且不确定性强,几位公司高层都满心焦虑,同时也满心好奇——这就更糟糕了。失去了理智之后,他们轻率地接受了一名颇有商业头脑的政府官员开出的条件:支付一大笔钱,换取所有公司的全部投标信息,并获得一次修改自己投标价的机会。

图片 | 第11页 | 你的灯亮着吗?:发现问题的真正所在 | xjpvictor的电子书库

该公司支付了对方所要求的数额,之后获知了全部投标信息。令人沮丧的是,政府制定的竞购规则实在太复杂,他们拿到投标信息后仍然弄不清各家公司分别能得到哪些物品。公司领导最终心不甘情不愿地选择求援,但这时能够修改投标价的时间只剩下24个小时了。审计师来到一家计算服务机构,他虽然已经心力交瘁,但是也想好了一个计划。

该服务机构的管理人员向审计师保证他们将绝对谨慎行事,并带他见了程序员团队。团队负责人比利•布莱特艾斯仔细听了审计师目前的计划:设计一个计算机程序来解决这个伤脑筋的问题。审计师说,因为一共涉及11件物品和4家公司的投标方案,所以可能的中标组合共有411种,也就是大约4 000 000种(这样的估算能力是问题解决者的核心能力之一,本书暂且不探讨这个问题。如果你现在不明白这个结果是怎么得来的,就暂且相信它吧。你也可以找学数学的朋友求证一下)。

4 000 000种组合中的每一种都会为政府带来相应的总收益,政府当然会选择符合所有预设规则且总收益最高的投标方案。审计师打算借助计算机列出全部4 000 000种可能的中标组合,并按收益从高到低排序,然后由公司理事会从头到尾研究整个列表,找出收益最高且符合所有规则的中标组合。

图片 | 第11页 | 你的灯亮着吗?:发现问题的真正所在 | xjpvictor的电子书库

一共还有24个小时,而需要借助计算机完成的工作就得用去大约12个小时,那就剩不了多少时间来讨论计划的可行性了。一旦投标结果出炉,就没法再做什么修改了。作为一个问题解决者,比利觉得这一计划显得简单粗暴,违背了他所信奉的优雅原则。比利提出,要是能向他透露一点政府给出的竞购规则,就有可能使总计算量减少到原来的十分之一,所得到的列表也会精简得多。而且如果完成计算只需要1个小时而不是12个小时,还将为公司理事会赢得更多的时间来研究更简短的列表。

审计师犹豫不决,除了必要的信息之外,不想提供额外的信息。但比利指出,如果采用速度更快的筛选方法,还可以利用节省下来的时间来预估修改投标价之后的新收益额,审计师最终被说服了。两人达成协议,一组程序员先按审计师的方案开始工作,比利则跟审计师去浏览一下竞标规则。而之前公司承诺绝不会将规则内容泄露出去。

比利走后,其他程序员有一段时间深感良心不安。这家公司居然掌握着密封投标中的投标信息,这些信息毫无疑问来自某种非法渠道。尽管审计师自始至终没有承认进行过违法操作,他们也从未听谁明确说过掌握投标信息是不合法的,但是如果参与到这样可疑的交易中的话,自己是不是就有道德污点了呢?

这些程序员大为困扰,于是向机构经理提出了这个疑虑。经理很快指出,他们忽略了另一个道德问题:这家公司是该机构的第三大客户,拒绝提供服务几乎是不可能的。实际上,要用最快、最可靠的程序在最短时间内生成有400万个条目的列表,这一过程中的技术问题深深吸引了程序员,所以最后他们还是或多或少把道德问题置于脑后了。这下,他们就像专业的问题解决者一样,绕过了道德考量这一关。不过话说回来,他们从未就如何应对道德问题接受过训练,所以才会专注于本职工作来解决技术问题,不是吗?

就在程序员们决定暂时不去考虑“良心不安”这件事20分钟之后,比利从公司高层那里回来了。大家急切地给他展示新发现的捷径,按这样的步骤做可以将工作成本降低到大约900美元。但是比利挥了挥手,示意大家安静。比利说,他用几分钟浏览了一下竞价规则,然后只用了一点点逻辑思维和一点点常识,就在5分钟内彻底解决了问题。

当然,他又用了20分钟向公司高层证明他确确实实找到了一个办法,可以解决他们研究了好几天的问题。不过花费这个时间是值得的,因为比利学到了有关定义问题的很重要的两点:

1. 不要把别人的解决方法作为定义问题的方法。

2. 如果你解决问题太过神速,别人根本不会相信你真的解决了问题。

图片 | 第11页 | 你的灯亮着吗?:发现问题的真正所在 | xjpvictor的电子书库

后记

如果比利目睹了程序员考虑道德问题的过程,他会从中学到另外一课,而这一课本可以应用于他自身。

图片 | 第11页 | 你的灯亮着吗?:发现问题的真正所在 | xjpvictor的电子书库