小改动带来的大不同
内德·格利正在从事关于群体智能的实验和研究。格利是迈斯沃克软件有限公司的软件设计师,著名的MATLAB软件就是这个公司研发的,该软件被数学家和工程师们用于解决极为复杂的计算问题,其复杂程度让大多数人瞠目结舌。1999年,公司决定举办一个程序设计竞赛。之前的竞赛都是通过邮件进行的,但评选获胜的参赛程序是一项繁杂而乏味的工作。因此格利建议,再举办一个网上竞赛,对这些程序进行实时评级。
公司的目标是:“为MATLAB用户提供一些娱乐活动,同时鼓励大家就优秀的程序相互交流。“从人们开始使用电脑之日起,编程竞赛已经成为黑客文化的一部分,原因是:竞赛让技术的提高过程变得像游戏。早在20世纪70年代,大学的计算机系就幵始举办各种各样的竞赛,而一些曰常生活中的比赛出现得更早。
迈斯沃克公司正在重新发扬这种令人尊敬的传统。乍看之下,格利的建议和传统的方式如出一辙。选手要解决的问题被称做”销售员路线的问题”。这是一个经典问题:
假设一个销售员要走过N座城市,选手要找出一个包含所有给定城市的路程最短的环路。参与者可以提交算法,或者计算机代码,通过一些步骤来引导销售员。比赛在10天后结束,谁的代码最有效率,谁就是获胜者。
但是,格利加了一点小小的改动:为了创造出更好的方案,比赛允许参赛者”借鉴”他人的代码——每个方案在提交后,会很快被打分、排名,然后公布在网页上,其他选手都能看到全部的程序代码。他们可以把最好的代码剪切、粘贴,然后加入一些改动重新提交,即使这类改动很小也没问题。如果这种微调能让代码变得更好,那么即使这位选手只改动了几行,他的排名也能上升到第一位。
格利说,结果和实际的软件研发过程像极了。“在一个办公室,很多研发人员聚在一起,如果一个人解决了某个问题,大家会围拢在一起看看他是怎么做的,然后恍然大悟似的感叹,再把这个方法加入他们自己的代码中。
“他说,“在我们的文化中,有一个流传很广的谬误,是关于托马斯·爱迪生的,人们认为这个聪明的人会带我们走出困境,当他走进房间,出来后就有了一个绝妙的点子。
“实际上,他的大多数突破都是集体努力的成果。格利说:“我想要举办一个竞赛,更好地模拟人们的创意遍布全球的真正方式。”
有一点要说明,与其说MATLAB的竞赛是一个众包的例子,不如说它证明了众包如此有效的原理。在这个例子中,它更接近于佩奇的人工代理实验,而不是TopCoder的软件研发方法。后者还利用众包创造出了有别于学术界的产品。
这种对抄袭的鼓励不但没有离间MATLAB的用户,反而让他们前所未有地着迷于自己的工作。来自爱尔兰的选手内森写信给格利说,在最后准备提交代码之前,他激动得浑身颤抖,他为这种情况感到苦恼。
那些最投入的选手们,为了拔得头筹推迟了假期,有的还逃课,甚至抱病参加比赛。格利称MATLAB的竞赛为”上瘾的合作”,这正好呼应了杰克·休斯对TopCoder的描述:“竞争性合作”。
“某个程序员为了修改一个目前获胜的优秀代码,会花一整晚的时间。然后某个人跟上,再做些微调,接着,他们成了第一。而当初那个程序员也许会想:‘这个混蛋!他不过是通过复制我的代码把我踢出局而已。‘所以,第一个程序员为了夺回第一的宝座,继续在这个已经改进过的程序上再加入一些改动。“格利说,“比赛的最终目标不是获胜,而是想出一个让其他所有选手大开眼界的绝妙改动,这就像是一个以声誉为基础的追分系统。“然而,MATLAB的不同凡响之处,不在于它激发了这股热潮,而在于这10天里,所有人的知识产权被公众随意反复使用,结果这10天的喧嚣被证明是一种解决问题极其有效的方法。
从1999年开始,公司每年都要举办两次这样的竞赛。
格利说,在竞赛快结束的时候,最好的代码比第一天的代码强1000倍。这就是为什么实践让理论奄奄一息。我们如何解释这样让人惊讶的进步?很显然,一切都是因为大众的出现。一群很聪明的程序员合作,最终创造出的方案肯定比他们各自能拿出的最好方案更好。还有一点也很清楚:想法的自由交换促成了整个过程,帮助孕育了一个合作的环境,在这个环境里,好的想法可以变得更好。但这些都无法解释,为什么更有效率的算法相继出现,其走势形成一个指数弧线。
有一点很引人注目,最好的程序员做出的贡献并不一定是最有价值的,新手常常做出一些至关重要的改进,带来突破。或者引用格利的话说:“有时候,一个脚本少年(黑客行话,指那些没经验,刚出道的黑客)想出的改动,会令爱迪生都不得不檫亮眼睛说’哇!’。”
换言之,“棕色袜子”再一次打败了高智商组。这可能又不符合惯性思维,但实际上,在佩奇进行电脑代理竞争试验前50年,解决问题的分布式网络力量已经有所体现了。
本书评论