社区在工作
杰克·休斯看上去不太像一个革命者。他个头不高,身材魁梧,表情很严肃。1984年,休斯获得计算机学位,从波士顿大学毕业。一年后,他开了一家软件公司,叫Tallan。又过了15年,他手下有了600多名员工,而他已经记不起上一次休假是什么时候。2000年3月,他联系了一家曾有意向的公司,以9.2亿美元的价格卖掉了Tallan。
休斯仍然没有假期。那年5月的一个周五,休斯最后一次从Tallan的办公室走出来。接下来的周一,他又走进了另一间租来的办公室,开始了他第二次的商业冒险——TopCoder(顶级编程员)网站。休斯的想法是创建一个网页,为编程人员提供互相竞争的平台,优胜者可以获得奖金。比赛由大型科技公司赞助,比如英特尔、Google、微软等,这些公司可以通过这些竞赛来选拔年轻的编程人才。这是一个合理的想法,但休斯开创TopCoder,并不仅仅是为了培育年轻的研发人员。他之所以这么做,是因为他对软件行业有颇多怨言。他说:“软件行业很轻松。在软件研发中,有这样一种共识:项目总会超时,预算总会超支,程序总有漏洞。如果要推理的话,结果确实如此。
“休斯想要为这个行业引入一些纪律性和质量控制,这些在传统的实物制造业中更为常见。在Tallan的时候,程序员在休息时经常互相比赛。休斯发现,程序员在比赛中设计的代码比平时工作中设计的那些更好。所以,为什么不让他们一直这样互相竞争下去呢?
TopCoder照搬了NCAA(美国大学联盟锦标赛)的联赛模式,并将它直接应用于编程竞赛。比赛要求参赛者编写一个代码来解决某个简单问题,比如找到走出迷宫的最快路线或是结束象棋比赛最有效的走法。参赛者必须在一小时内提交结果,这时,选手可以尝试通过破坏他人的程序来向对方发起”挑战”。如果参赛者通过了”挑战”这一关,TopCoder团队会试着将这个解决方案破坏。能够经受住这一系列挑战的,将会获胜。
“体育运动提供了一个平台,无论你有哪种才能,付出努力就会获得回报,所以我们把程序设计也放在这样的平台上。“TopCoder还为每个程序员制作了专门的”扑克牌”,还有个人成绩表。但休斯并不满足于仅仅组织几场联赛。他从来没有听说过尤查·本克勒,但他将把本克勒的想法付诸实践。
消息在程序员圈子中慢慢传开,人们逐渐知道有个网站每周都会举办竞赛。虽然奖金不多,但比赛很有趣,而且如果表现得好,还有机会进入很棒的公司工作,比如Google。对于那些有时间而没钱的年轻程序员来说,这件事相当有吸引力。TopCoder缓慢而平稳地成长着。但休斯希望,除了组织竞赛,TopCoder还能干点别的。虽然TopCoder仍然在初级阶段,但他知道,如果能建立一个足够大的社区,就能利用这些程序员的力量,为真正的客户编制真正的软件。研发过程还是以友好竞赛的方式完成,不过,获胜者的工作内容将成为世界1000强中某个公司软件的组成部分。到2003年,大概有7000名程序员会定期浏览TopCoder每周的竞赛01内容,其中大约有5%的人是常胜将军,他们就是TopCoder冉冉升起的精英们。随着休斯的众包引擎越来越强大,他的”社区”就要诞生了。
TopCoder将为客户呈现它非凡的软件研发模式,但在此之前,休斯和员工们必须设计一个方法,将任务分解成尽可能小的部分。休斯说:“从公司成立之初我们就知道,必须将较庞大的工作分解成一些小部分,按字节一组组清晰地分开。“所以,TopCoder接手的项目,一般已经被分成100份,然后人们再想办法将它们分解成1000份。
“我们的想法是,积木越小,用法越多。“TopCoder的软件主管迈克尔·莫里斯说。这么做是有利的,原因如下:负责项目的人只能在他们的”空闲期”工作,或者说用过剩产能——实际上也就是正常工作和睡觉之间的几个小时——工作。“如果我们有5个研发人员在为某个项目工作,他们绝不会有时间让任务模块化。“莫里斯说,“他们只能完成一件事,然后着手下一件。但我们有海量的人才储备,大家可以在同一时间为某个任务工作。任务分得越细,整个工作完成得就越快。“TopCoder的方法也提高了速度和效率。
休斯和公司本可以按照众包的教科书来做,但众所周知,这样的书是不存在的。2003年,通过采用被休斯称为”竞争性合作”的模式,TopCoder基本上已经独树一帜。
几年时间里,所有的漏洞都被修复了。休斯说:“过去没有众包,没有群体智慧这一说,我们也没有任何可借鉴的理论。我们进行的是一项科学试验!”
2006年年初,TopCoder与一些客户建立了合作关系,精简了研发进程,提高了效率。休斯说:“我们的社区已经积蓄了一定的力量。我们有大约7万名程序员,这是足够大的用户储备,足以写出具有工业规模的计算机代码。我们可能拥有世界上彼此竞争着的最好的一些年轻程序员。
“这时,AOL(美国在线)软件研发高级副总裁助理斯里·考特与TopCoder人员联系,希望双方可以见个面(考特自离开AOL后就为有线电视供应商康卡斯基工作)。TopCoder总部在美国康涅狄格州格拉斯顿伯里,莫里斯从波士顿来到AOL位于弗吉尼亚州杜勒斯的总部,亲自会见考特。莫里斯回忆道:“具有讽刺意味的是,他甚至不知道我们是做软件的,而只是想和我们谈谈关于参与竞赛的事。“然而,莫里斯告诉考特,AOL应该用TopCoder为公司开发新软件。莫里斯走到考特的办公桌前,给他展示一场正在TopCoder网页上进行的竞赛,然后对他说:“那不是一场比赛,那是软件研发的未来。“当莫里斯解释TopCoder的模式时,公司的主管和其他一些人都走进办公室观看。这是一次幸运的会面。“那天,考特重新成为了程序员。他深知高质量的代码有多么重要。“第一次见面后不久,AOL就委托TopCoder编写三个程序:
1.扩展AOL的邮件系统;
2.扩展内容整合系统;
3.对技术要求比较高的一个后端系统,让AOL的即时通讯设备和其他即时通讯软件(比如”Google聊天”和”雅虎通”)彼此能够兼容。
最后的这项工作堪称TopCoder系统最伟大的一次测试。首先,莫里斯任命一个设计师和一个项目经理接手这个程序。他们是TopCoder参与这个项目仅有的两名职员,剩下的都交由社区里的人完成。“两人将这个即时通讯程序分解成了52个部分。”
社区在其他项’目中已经完成了类似的工作——这些就像是”乐高”组合玩具的模块。最后项目组发现,有22个部分早已完成,只等待最后的汇总。
而其他30个部分还需要设计、编写、审核和测试。这是一个艰苦的过程,每一步都要靠众包来完成。TopCoder坚持每一步都按照竞争的模式来做。首先,每部分的设计都需要互相竞争,社区成员根据自己的能力,申请相应的任务。“在社区中,涌现出了很多拥有技术和专长的人。
“莫里斯说,“一般来说,他们对自己擅长什么很清楚。
“选手提交了他们最好的设计,接下来TopCoder任命了一个审核委员会,评估每个人的设计。“我们是根据他们的能力来任命审核员的,但之后(因为人数太多)就是先到先得了。“选定胜出的设计后,要公布出来作为下一轮竞赛的题目。大众再一次对这个程序发起攻击,根据选出程序的具体说明,每一次的攻击都有针对性,目的是为了得到最完美的程序。然后,再重复一次审核过程,这次将选出获胜的设计。最后还有两个竞赛——个是将所有部分整合在一起,另一个是看谁写的脚本最好,让整个程序运行出最佳状态。“我们让选手自由组合。每组都要尽全力去破坏程序。“这个脚本要和用户赛跑——“我们要把用户可能会做的都想到,比如添加好友列表,群聊,在两人之间建立一个安全链接等。最终的程序将被TopCoder采用,在经过一系列测试,确保准确无误之后,交给客户。在这个过程中,社区不仅付出了劳动,还负责了质量监控的过程。
AOL对最终的产品非常满意,此后,它向TopCoder委托了大概十多项程序设计。莫里斯说:“他们爱我们。“而且这样说理由充分。TopCoder的程序每1000行代码平均有0.98个漏洞。“而业内的标准是6个。“莫里斯自最地说。
“传统公司也许会任命6~7名研发人员来做这个项目,顺利的话,他们大概要用一年的时间来完成。而我们,仅仅用了5个月多一点。”






本书评论