計算機代碼的運動員為了工作機會而努力 - 彭博社
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%。”諾瓦科夫斯基説。“每次我僱傭那些擅長這些比賽的人,他們都能出色完成工作。他們通常工作迅速、準確,並且注重完成任務。”
*(****更正:***在這個故事的早期版本中,最後一段中的引用錯誤地提到了尼爾·吳,而不是他的兄弟斯科特。)