Topcoder
这个网站可以说是一个程序设计比赛的网站,但是在题型,比赛形式跟ACM/ICPC极不相同。该网站把中国纳入其赛区,大家可以上去那里跟来自全世界的程序员(事实上大多数也是大学生)进行更直接的交流,可能也是ACM/ICPC练兵的好地方吧。
该网站每个星期都有两次网上在线比赛,根据比赛的结果对参赛者进行新的排名。参赛者可根据自己的爱好选用Java, C++或C#进行编程。参赛者须在大概1小时15分钟的时间内完成三道不同难度的题目,每道题完成的时间决定该题在编程部份所得的分数。而比赛可分为三部份:Coding Phase, Challenge Phase和System Test Phase,所以比ACM/ICPC多了Challenge Phase,这部份是让参赛者浏览分配在同一房间的其他参赛者的源代码,然后设法找出其中错误,并提出一个测试参数使其不能通过测试。如果某参赛者的程序不能通过别人或系统的测试,则该参赛者在此题目的得分将为0。关于其比赛的具体规则,详看该网站上的公告。
下面的信息摘于该网站:
?module=Static&d1=about&d2=index
以上信息主要针对TopCoder公司举办的算法竞赛部分,而实际上远不只于此。
TopCoder网址:
TopCoder是一个面向平面设计师和程序员的网站,他采用比赛、评分、支酬等方式吸引众多平面设计师和程序员业余工作。由于其主要领域在编程工作上,下面叙述的主要内容均在编程方面。
TopCoder是什么?我准备先回答一个问题:TopCoder为其各类客户带来了什么利益?
1.对于热衷挑战的人,TopCoder是为Coder(编程者)而生的一个用于挑战自我的网站。TopCoder除了举办两个一年一次的multiple-match锦标赛以外,它还举办常规比赛,这种比赛让参赛者尽可能快的解决复杂性不同的算法问题。在常规赛和锦标赛中的获胜者都将获得现金奖。参赛者获得既获得金钱,也获得荣誉。
2.对于寻求兼职的人,TopCoder是个获取软件开发兼职的网站。以编程工作为例,他的流程如下:提供工作列表->用户接工作->一周后提交->评分。在评分中得第一名者,获500美金(组件类一般为800美金);第二名获250美金(组件类一般为400美金,其他名次不获得奖金,但是某些组件会因为难度或者紧急性而把这个金额提高,同样,也有某些组件会因为难度较低而下调奖金。工作类型包括:系统设计、代码编写、模块测试等。通过一段时间的熟悉,大学在校生、业余开发人员均可以在网站上接下兼职获取奖金)。
3.对于TopCoder的客户企业,它是个优秀的软件开发商或编码工作外包商,由于其规范化流程及各模块编程的冗余机制(同一模块有多人同时开发,择优采用),TopCoder能够按时按质的为客户提供软件开发服务。
4.对于各软件企业,TopCoder是个优秀的人力资源公司,它汇集了世界上众多高手,通过这个平台,软件企业可以获取到优秀Coder的信息,并从中招聘员工。Google、Microsoft等公司都曾经在TopCoder上寻求优秀设计人员加盟。同样的,另一方面,对于应聘者来说,它提供了一个展示自我的机会。
那么,TopCoder本质是什么呢?我认为,它是一个采用新颖模式的软件开发企业,他并不完全采用固定员工,主要是通过互联网,利用世界各地的注册用户参与开发。其核心,在于将原本通过企业形式组织起来的软件开发工作转向了市场形式。改变,通过网络和软件工程规范,形成了以单一模块开发为服务商品的市场,全球的Coder均可以在该市场上提供商品和服务(设计方案、模块代码、模块评测),而TopCoder成为该商品的采购商。契约形式的采用取决于不同契约间交易费用的比较。在常规的软件行业中,由于交易费用过高,软件企业所需的商品和服务(设计方案、模块代码、模块评测)市场难以存在,原因包括:协调工作的困难、质量监控、与模块代码提供商的联系等等。由于产品难以通过市场契约形式获得,因此,软件企业采取的是企业契约形式,招聘人员进入企业,以员工的形式为企业提供所需的商品和服务。而TopCoder利用网络及软件工程理论的成熟,将企业内部由员工完成的各项软件开发工作外部化,降低采用市场形式的交易费用,使得市场购买成为优于企业内部化的选择。
TopCoder如何降低市场交易费用?相比于企业组织形式,其收益何在?
首先,TopCoder利用其在软件工程方面的经验与技术,将服务与商品的标准化,使得沟通成本大大降低。TopCoder的软件开发流程,包括系统设计、代码编写、模块测试等各环节,在每个环节之间,TopCoder都设计了标准化的文档,上下游环节之间所需的所有沟通内容都通过文档展现。通过这种形式的标准化,每个环节的工作人员均可以在完全不和上下游工作人员沟通的情况下进行工作,最终工作人员交给TopCoder的最终产品,也完全以标准文档形式给出。由于标准化,商品具有了独立性,使得TopCoder的注册用户为其提供商品成为可能。
其次,由于商品标准化,对各商品的质量评估指标也因此可以标准化(模块运行速度、稳定性等),因此,有了商品的质量评价指标,则商品的定价和择优采购成为了可能。TopCoder将评估指标最后转化为一个总分,总分第一的定价1000美元购买,总分第二的定价500美元购买。由于指标清晰,商品提供者也能够逐渐改进自身提供的商品质量。相较于企业形式的生产,由于每项工作只有一个人完成,质量得不到比较,无法选择最优。而且,软件开发工作作为一种知识型的工作,难以为员工的工作表现作精确定价,监督成本也相当高,而市场形式则避免了上述交易费用。
第三,网络使得标准化商品的全球采购成为可能。TopCoder采购的商品无需运费,而且世界各地存在明显价格差。中国与印度的人力成本远远低于欧美,因此商品提供者所希望的商品价格也很低。以往,为了获取发展中地区的人力成本优势,企业必须远赴当地开设分公司,因此带来了相当大量的额外成本。而TopCoder通过网络的形式采购,无需付出额外的成本。事实上,目前在TopCoder上进行开发的注册用户中,中国和印度用户占了很大部分。
另外,TopCoder与注册用户间的心理契约,与企业与员工的心理契约有很大区别。作为TopCoder的注册用户,其期望获得的并不仅仅是金钱,作为其目标对象的大学在校生、业余工作者,他们还期望获得荣誉、工作经验、能力提升,甚至于前面叙及的,进入知名IT公司的机会。因此,即使只有前两名可以获得奖金,仍有许多用户参与承接工作。由于这些附加价值的提,TopCoder在商品采购价格方面,实际上低于其现金价值。
综上所述,TopCoder利用网络技术的发展,改变了常规的生产方式。而事实上,这一模式有可能在其他行业中得到推广。对于知识型工作,通过流程设计和严格接口定义,完全有可能运用这种模式(例如日用品的设计工作)。C2C改变了人们参与贸易的方式,使得个人的市场信息(商品价格差)能迅速转换为利润,而TopCoder的这种模式可能会改变人们参与生产的方式,使得个人能够方便地提供知识工作商品。