计算机代码的运动员为了工作机会而努力 - 彭博社
Ashlee Vance
在21岁时,格纳季·弗拉基米罗维奇·科罗特凯维奇已经成为传奇。作为他在网上的昵称,“游客”,他现在是世界顶级的体育程序员。他与其他人竞争,解决编码难题,而他在这方面非常出色。也许太出色了。
“可能唯一一个靠体育编程谋生的人就是格纳季,因为他赢得了很多比赛,”退休的体育程序员弗拉基米尔·诺瓦科夫斯基说,他仍然密切关注比赛。“我们从未见过像他这样的人。”
凭借他的技能,科罗特凯维奇可以在硅谷的任何公司获得高薪工作。但这位白俄罗斯人还不准备成为一名编码专业人士。他表示,今年秋天他将返回圣彼得堡国立信息技术、机械与光学大学上课,可能是为科学事业做准备。
我很想告诉你,体育编码是令人兴奋的观看。而同样令人愉快的是谈论这项运动当前超级明星编程神的魅力。然而,现实情况是,体育编码并没有提供太多高戏剧性或迷人的个性。尽管如此,体育编码在很长一段时间内相对被忽视。这是一种奖励自然才能、毅力和团队合作的竞争形式。而且,对于2015年的生活来说,成为一名优秀的体育编码者是18岁年轻人引起成千上万家公司注意的可靠方式,这些公司希望向有才华的软件开发者倾斜资金。
Facebook的黑客杯是少数由科技巨头主办的年度体育编码赛事之一,今年早些时候以虚拟初赛开始,参赛者在线尝试解决问题。顶尖选手将获得全额费用支付的邀请,参加在Facebook总部举行的比赛。得知大多数决赛选手都是来自俄罗斯、东欧和亚洲的计算机科学年轻人,他们将黑客杯视为前往硅谷旅行的好机会,并可能在城里吃免费寿司时进行一两次面试,这并不令人惊讶。
黑客杯决赛在一个多功能活动室举行,房间里摆放着四排单调的桌子,旁边贴着一些带有“专注”和“勇敢”这样的吼叫大字标语的低级海报。几乎所有的参赛者都以相同的方式使用桌子,将一台巨大的平板屏幕连接到他们的笔记本电脑上,并随身携带一个记事本和一支笔。
所有的参赛者——这将是一个震惊——都是男性,或者至少正在成为男性。他们看起来并不是最健康的一群人,平均体重似乎不超过120磅。这里有一些令人不安的刻板印象,包括口头和手势上的小动作,以及碗状发型、苍白的面孔和破旧的衣服。在这个房间里,马克·扎克伯格看起来会像个阿多尼斯。
“三,二,一,”他说。“愿最好的编码者获胜!”
黑客杯的进行方式与其他编程比赛大致相同:在三小时内完成五个谜题,顺序不限。尽量保持编程的高效。代码越干净、越准确,所用时间越快,名次越高。一种常见的问题可能是要求在给定多个约束条件的情况下找出旧金山和洛杉矶之间的最短路线。或者问题可能是关于如何以特定模式铺设地板。问题通常围绕着一个众所周知的算法或数学结构,带有新鲜的变化。精英运动编码者必须迅速找出潜在的逻辑,然后相信自己的能力。“你必须在早期就说服自己,你所做的事情是有效的,”Facebook的软件工程师韦斯利·梅说,他帮助管理黑客杯。
竞争者在黑客杯开始前看起来很冷静。斯拉夫人聚在一起聊天,中国和日本的竞争者也是如此。一位年轻人开始在他的工作站周围踱步,时不时地上下跳动,同时不断握紧和放松拳头。科罗特凯维奇与他的俄罗斯死敌彼得·米特里切夫聊天,后者是一名30岁的谷歌员工,在竞技编程标准中算是古老的存在。当科罗特凯维奇离开主房间去拿零食时,我自我介绍,并在几次尴尬的交流后,问他是否愿意接受采访。“我们拭目以待,”他回答道。他再也没有和我说过话。(他的朋友们解释说,他在几年前《连线》杂志做了一篇报道后,基本上避开媒体,报道中提出科罗特凯维奇可能“死于处男”这一观点。)
科罗特凯维奇平静地坐在桌子前,手里拿着一杯水,看起来就像一个编码刺客:黑鞋、黑裤、黑色连帽衫,棕色的头发压在脸的右侧。在他桌子上的水旁边放着一顶来自另一个编码比赛的棒球帽,以及他的纸和铅笔。
当所有编码者都安顿好后,一位Facebook比赛主持人走到房间前面,拿起麦克风。他快速地念出所有规则,然后开始倒计时:“三、二、一,”他说。“愿最优秀的编码者获胜!”
在黑客杯决赛的这些初始时刻,显而易见的是,为什么竞技编程的电视吸引力不如拼字比赛。它甚至没有在同一水平上被视为小众的极客运动,像国际象棋比赛或宝可梦锦标赛。几乎没有什么动作。比赛开始的瞬间,整个房间变得寂静无声。五分钟后,记事本上有一些涂写,然后一位参赛者终于走到键盘前,发出几声点击声。
竞争对手认为科罗特凯维奇既是天才又是工作马。他很早就开始比赛,并且在运动编程的世界中见过几乎所有类型的问题。他在二年级时,8岁时首次让人感到惊讶,当时他在一次重大的白俄罗斯编程比赛中获得了第二名。为了让这一成就更具意义,科罗特凯维奇的得分足够高,使他能够自动入学一所顶尖技术大学,而无需通过任何其他入学考试。在12岁时,他在国际信息学奥林匹克竞赛中获得第20名,这是最负盛名的高中级别赛事,随后他以三次赢得比赛创下了记录。
在考虑问题时,科罗特凯维奇的双脚以每秒几次的频率上下抽动。他拿起铅笔,在手背上转来转去。他走向水杯,抚摸下巴。在比赛进行十分钟后,他终于开始打字。双脚仍在来回踢动,他的手开始活动,以惊人的速度敲击键盘,宛如在高强度的毒品狂欢中最有效率的法庭速记员。他每七秒眨一次眼。
在黑客杯比赛进行到14分钟时,图书馆般的寂静第一次被打破,有人打了个嗝;没有“对不起”的道歉。19分钟33秒时,米特里切夫提交了第一个答案。我们知道这一点是因为他的名字出现在房间前面的排行榜上,显示了他解决的问题编号以及提交答案所花的时间。排行榜对观众来说是一个罕见的兴趣点,因为它提供了部分真相的窥视。排行榜只显示米特里切夫解决了问题以及他解决的速度,而没有透露他是否真的解决了问题。这个信息直到最后才会被披露。在24分钟时,第二位竞争者提交了答案。科罗特凯维奇在大约一分钟后提交了答案,登上了排行榜,并位列第三。
来源:ITMO大学基纳迪·科罗特凯维奇科罗特凯维奇似乎对局势的紧张免疫,实际上,他似乎更关注身体的功能。在编码了45分钟后,他——没有其他方式可以说——挖了挖鼻子,看了看自己的“作品”,然后又继续挖鼻子。就在那之后,他通过悠闲地走向洗手间向其他参赛者送出了一个巨大的中指。这个家伙足够优秀,甚至可以抽出时间去上厕所。
在比赛的大部分时间里,米特里切夫似乎一直处于领先地位。他解决了几个问题,并且是第一个解决这些问题的人。“彼得曾在谷歌工作,直到他们关闭了莫斯科办公室,”Facebook的梅说。“我们试图招募他,但没有成功。”(他现在在瑞士的谷歌工作。)
在比赛的最后一个小时,终于出现了一些明显的动静。几乎所有的参赛者开始坐立不安。有些人站起来啃自己的指甲,随后排名发生了巨大的变化。波兰程序员雅库布·帕霍克是第一个解决三个问题的人,并迅速跃升至第一名。科罗特凯维奇最终位居第二,而米特里切夫跌至第四。还有30分钟时,一位日本程序员意识到自己在一个问题上犯了错误,并用一系列低沉的声音表达了他的焦虑,随后将头狠狠地压在桌子上,痛苦不已。然后,在剩下五分钟时,科罗特凯维奇冲到排行榜的首位,成为第一个解决四个问题的人。
比赛结束后,选手们聚在一起交谈,而Facebook的工作人员则在处理结果和分数。最终揭晓的是,Korotkevich在第二道题上出错,但由于他在其他三道题上的速度和准确性,仍然赢得了比赛。大部分时间领先的Mitrichev最终名列第四。由于他的努力,Korotkevich获得了10,000美元和一阵掌声,并露出了微笑。他随后脱下了连帽衫,将黑客杯举向空中。
大约一个小时后,Facebook将所有程序员装上巴士,带他们进行旧金山的美食之旅。
自1997年以来,美国没有团队获胜
世界各地的父母鼓励孩子们学习编程,因为这样的技能几乎可以保证美好的就业前景。然而,即使在科技圈,竞技编程仍然是一个冷门领域。谷歌和Facebook是为数不多的赞助活动的美国大型公司,他们的比赛在核心竞争者中被视为小型赛事。华尔街通过赞助教练、培训课程和美国的选手,更好地吸引这些超级开发者。
高中生的终极竞技编程比赛是国际信息学奥林匹克竞赛,简称IOI。Korotkevich是为数不多的在这场五小时比赛中取得满分的人之一,并且在2006年至2012年间以创纪录的成绩名列前茅。对于大学生来说,主要赛事是ACM国际大学生程序设计竞赛,参赛者通常称之为ICPC。这是一项团队编程比赛,其根源可以追溯到1970年代末,当时几乎所有的参赛者都是美国人。Korotkevich所在的大学自然赢得了2015年的比赛。莫斯科国立大学和东京大学分别获得第二和第三名。美国排名最高的学校是加利福尼亚大学伯克利分校,排名第六,而麻省理工学院则获得第十名。
在比赛历史上,美国赢得了最多次——17次——但自1997年以来没有任何美国队获胜。俄罗斯和中国队最近摧毁了所有对手,自2000年以来几乎赢得了每一场比赛。
在美国人能够从这些比赛中找到希望的程度上,他们会想要转向吴兄弟,尼尔和斯科特。这对兄弟在路易斯安那州的巴吞鲁日长大,父母是化学工程师,1980年代从上海移居到美国。在小学时,尼尔参加了数学比赛,发现自己喜欢解决难题。作为七年级学生,他赢得了2005年数学全国竞赛;斯科特则在2011年获胜。
直到尼尔上九年级并参加计算机科学课程时,他才决定研究体育编程。“这些东西非常容易学习,”他说。“当我开始时,我甚至不知道如何写一个程序来做任何事情,对计算机的工作原理和其他人一样一无所知。最重要的是要有好奇心和愿意涉足未知领域。”尼尔的父母支持他的课外活动,并避免强迫他或他的兄弟。“这感觉更像是一种爱好,而不是强迫的重复训练,”斯科特说。
越来越多的证据表明,雇佣顶级体育程序员对软件公司来说是一项胜利
从2008年到2010年,尼尔一直是美国体育编程冠军。在同一时期,他在国际舞台上崭露头角,并在国际信息学奥林匹克竞赛中输给了科罗特凯维奇。2014年,斯科特战胜了他的兄弟,直接赢得了国际信息学奥林匹克竞赛。他的胜利没有得到任何奖励。“如果你在中国或俄罗斯的这些比赛中表现良好,你甚至不需要申请大学,”斯科特说。“在这里,有些表现出色的孩子仍然被哈佛拒绝。”
为了准备这些比赛,美国计算机奥林匹克竞赛在五月举行为期10天的训练营。那些在在线比赛中表现出色的年轻程序员被邀请争取国家队的四个名额。今年的国际信息学奥林匹克竞赛(IOI)于八月在哈萨克斯坦的阿拉木图举行,美国选手安德鲁·赫获得了第三名。该团队得到了克莱姆森大学、D.E. Shaw、Jump Trading和Dropbox的赞助——这可不算是科技巨头的名册。
尽管斯科特在赢得IOI后没有获得自动入学大学的资格,但他自己做得相当不错。他成功进入哈佛大学,并收到了多家硅谷公司的招聘邀请。年仅17岁的斯科特推迟入学,花了一年时间全职为位于加利福尼亚州山景城的高飞钱管理软件初创公司Addepar工作。尼尔也做得很好,加入了一家名为Streem的初创公司担任软件工程师,并在公司被收购后开始在Box工作。“我本可以加入一家大公司,或者进入学术界,”尼尔说。“关键是因为这些比赛,很多机会向我敞开了。”
除了国家和国际赛事,年轻程序员们开始涌向Codeforces和Topcoder等网站,寻找在线竞技编程比赛。正是在这些网站上,数十万人之间进行着不断的较量,并且有大量现金被发放。自2001年以来,Topcoder已支付近7200万美元的奖金。科罗特凯维奇是这两个网站上排名最高的程序员;斯科特仍然在竞技编程中有所涉猎,紧随其后。不过,除了这些大名鼎鼎的人物,成千上万的人正在利用这些网站为自己打响名声,并试图加速自己的职业生涯。一些竞争者已经将竞技编程作为跳过大学直接加入硅谷的手段。
越来越多的证据表明,雇佣一位顶尖的体育程序员对软件公司来说是一项成功的举措。退休的体育程序员诺瓦科夫斯基邀请尼尔与他一起在Quora工作,后来又雇佣斯科特与他在Addepar工作。“斯科特在开始工作时只有18岁,三个月内,他就进入了我们所有工程师的前10%。”诺瓦科夫斯基说。“每次我雇佣那些擅长这些比赛的人,他们都能出色完成工作。他们通常工作迅速、准确,并且注重完成任务。”
*(****更正:***在这个故事的早期版本中,最后一段中的引用错误地提到了尼尔·吴,而不是他的兄弟斯科特。)