3月26日,杭州的天陰沉沉,這是一種山色空濛雨亦奇的美麗,還是霧靄籠罩下的怪異,對於來訪阿里巴巴西溪園區的人們來說,沒人關心這些。人們行色匆匆,興奮地往各自目的地奔赴而去。我也來不及細思這些,因為今天要和剛從Facebook來到阿里的趙海平聊天。
就語言之爭,趙海平稱,有人會去爭論錘子和斧子哪更好使嗎?它不是要根據你做的事來定嗎?
趙海平是非常著名的軟體工程師,曾在微軟工作過。2007年加入不到50位軟體工程師的Facebook(是第一位中國工程師),期間他創建了HipHop項目。HipHop可以將PHP腳本代碼先轉換成抽象語法樹(AST),之後再轉換成優化的C++代碼,使其速度提高5到6倍,為公司節省了數十億美元。2015年3月他回到中國,加入阿里巴巴技術保障部,重點攻克阿里在軟體性能以及Java使用過程中遇到的技術問題。
採訪在園區圖書館進行,四周書籍環繞長窗落地,趙海平看上去顯然剛從另外一場繁忙的事務中抽身過來,但在這場長達1小時47分鐘的採訪中,他一直神採奕奕、興致高昂地談論了各種話題:小時候的趣事、生物和計算機間的痛苦抉擇、HipHop項目中的艱辛……
「計算器有什麼好學的?」
趙海平中學時代就讀於秦皇島市山海關第一中學,學校雖然非常小,但很特別——恰好在天下第一關腳下,所以長城就成了這個學校的一面校牆,坐在部分班級裡甚至能領略到山海關的雄姿。
在他的那個時代,計算機還是個稀罕物,別說是高中,可能在大學,計算機都很少見。所以當他們北大物理系畢業的校長組織數學好的同學,參加學習計算機的課外活動時,趙海平很是疑惑,「計算器?這個需要學嗎?」事後趙海平才知道,他把「計算機」聽成「計算器」。不過那個時候他真不知道什麼是計算機,並且《計算機報》也是在幾年後才出來,就連當初學習的時候,整個書店也只有一兩本計算機相關的書籍,而內容早被他們翻爛。
起初學習的過程很原始,「一開始連計算機都沒有,學校雖然已經去買,但要等很長時間。所以學Basic語言時,完全不知道在幹嗎,就純粹硬學,學到最後連循環都學了,還沒見到計算機。」後來計算機到了——是Laser-310,趙海平對這個記得特別清楚,談到這裡的時候,他還繪聲繪色地形容「一按那個鍵盤,還『嗶啵、嗶啵』響」。趙海平回顧稱,當時的遊戲也很簡單,簡單到只有小人在屏幕上又唱又跳。放到現在看這哪是遊戲,但在那個時候覺得這很奇特。
小時候學計算機發生了兩件事讓趙海平記憶猶新,一是利用彙編命令列印系統。大家都知道利用彙編命令可以把刪掉的文件再找回來,那個時候的趙海平覺得這很牛,於是去找彙編命令然後到學校實踐,然而卻把整個系統都給列印了。他至今仍很興奮地說到:「蘋果有反彙編的工具,它可以不斷地反彙編作業系統,所以一邊反彙編一邊列印。機房老師不知道這事,但機器卻一直在列印,列印了一宿,把機房的一摞紙全用了,而那個時候的列印紙特別貴……」
另一件事則是,「廢寢忘食」地輸入飛機。當時整個學校只有一臺計算機,趙海平每天中午都是趕緊扒完飯,省出一兩個小時的時間去機房。有次在機房按照雜誌上的坐標輸入顯示飛機。「圖的列印很簡單,實際上就是從這一點到另一點畫一條線,但是它有很多條線,最後能畫出一個特別漂亮的飛機圖。」沒想到快要結束時,有人碰掉了把電線,內容全沒了,大家面面相覷,又心有不甘。於是第二天又跑到機房重新輸入一遍,最後看著蘋果綠顏色的屏幕上呈現的飛機,趙海平覺得那種成功的感覺至今仍很興奮和微妙。
抉擇:繼續生物or計算機?痛苦!
如此喜愛計算機,為什麼最後去了北大生物專業?這應該是很多人的疑惑。趙海平稱,沒有選擇最愛的計算機專業有兩個原因:一個是生物在當時太熱門——21世紀是生物的世紀,而當時趙海平高考的分數恰恰很高,「要低一點就能報計算機系,但高一點的全都直接進生物系,所以當時各個地方的高分學生都去學生物了。」第二個原因則是大家對計算機的認識。「那個時候還認為計算機只是一個工具,不管做什麼,你都會『玩到』計算機。」大家都把計算機當玩具,不是一個正兒八經的專業。
不過當生物學了很長時間之後,趙海平發現自己還是喜歡計算機,他這麼描述當時自己的感受:「我不喜歡生物,也做不好生物。身邊學生物的人可能不比我更聰明,但他們做得比我好,因為他們熱愛這個專業,願意花很多時間去看文獻做實驗。我更多的是在生物實驗室裡寫程序,找與計算機相關的活……這是一種很彆扭的感覺。」於是他決定踏上痛苦的轉行之路。
之所以痛苦,主要是不願意就這麼放棄生物,用趙海平的話來講就是「生物系的機會也很寶貴,而且已經學了這麼久,又不確定自己的將來做計算機會不會更有意思?」另一方面則是生物實驗室的臺灣導師對趙海平格外青睞,他知道趙海平很聰明,但心思並沒放在生物上,不過他仍然希望趙海平能夠繼續把博士讀完……
這些因素讓趙海平一直很痛苦地思考這個問題,直到一件事讓他下定決心轉專業。那時候他已在美國紐約大學,「一上選修的計算機課感覺喜歡的不得了,聽老師講東西都有一種觸動——原來是這樣。」後來選修課的老師也鼓勵他去學計算機,於是他下定決心,並整理自己做過的小項目去申請普林斯頓大學計算機碩士。
半聽半睡狀態下,突然舉手「老師這不對」
進入普林斯頓計算機系後,趙海平如魚得水,門門功課都是A+,學習過程更像是在印證他以前的實踐,並補上自學摸索中所缺失的東西。「來到普林斯頓後感覺特別好,不僅僅是因為終於學了自己喜愛的專業,還有機會和非常優秀的人在一起,覺得特別快樂。」
談起在普林斯頓最大的感觸,趙海平稱,好幾個同學都是當年奧林匹克金牌得主,雖然年齡較小,但都非常聰明和優秀。「所以我們工作一定要進入一家好公司,因為跟優秀的人在一起工作,就自動地有那種很快樂的感覺。」
在普林斯頓學計算機的趙海平同時也很瘋狂:經常打遊戲、做小項目,有次到第二天早上五六點才睡,但發現八點還有課,於是他在那半聽半睡,聽到半途突然醒了,舉個手說老師這不對……在這樣的精神狀態下,他還不忘給老師挑錯,而老師也覺得,這學生挺神奇,一邊睡還一邊提問題。
原本趙海平打算讀完計算機碩士,然後再把生物學博士讀完,但在畢業前的最後一個星期,他就拿到了四個Job Offer。是讀博,還是工作?趙海平又陷入了抉擇,但最後還是聽取了生物實驗室同學先工作的建議。
「現在回想起來,這是在騙自己。」
為什麼?
「一旦幹上計算機這行,生物博士對我並不是特別的重要。」趙海平如此坦言。
不後悔讀生物,非常感謝生物的訓練教他如何系統「偷金子」
對於趙海平改行學計算機,不少人都有誤會,因為那個時候計算機恰好也火了,很多人以為他是因為計算機火了才改行。「其實真的不是這樣子,那個時候MBA更火,工資也更高。也有朋友勸我去讀MBA,但經驗告訴我一定要做自己喜歡的事,不能再跑到第二個不喜歡的行業,不然這輩子就廢了。」而這也是趙海平改行之後,為什麼老是如饑似渴地去學習和工作的原因,因為他老覺得耽誤的時間特別長,心理上老想去補償。
但對於讀了這些年生物,趙海平並不後悔,他稱讀生物的那些訓練非常有用,對他幫助很大。「它教會了我,怎樣系統地去解決一個問題,而不只是把這個問題解決。」趙海平非常善於舉例子,他打了個比方:如果我們是一群海盜,有一個島有很多金子。本科畢業的學生划著船弄來一箱金子就很出色;但如果是博士畢業的學生去弄金子,除了弄來金子之外,他還必須帶來一句話才合格——沒必要再去那個島了,金子全被拉回來了。「這就是博士的訓練,它告訴你要系統化的去解決一個問題。等解決問題後,你已經看到問題的所有方面,等別人再想解決,你已經全部想到。」
趙海平放棄生物學博士學位,雖然有些許遺憾,但他慶幸的是這些訓練沒有白費。
微軟如日中天時去了Facebook
2006年前後,微軟如日中天、風頭正勁,而當時的Facebook全部工程師還不到50人,在這樣的情況下,趙海平離開微軟,去了前景仍不太明朗的Facebook。
離開微軟,主要是兩個原因。一個是微軟當時的流程非常規範,強調人和人之間按部就班做事,非常條理化。這也許是大公司發展到一定階段的必由之路,但趙海平希望尋找節奏更快的平臺,「畢竟我在生物上已經耽誤10年了。」趙海平解釋到,「當時的微軟和矽谷公司在文化上還是有明顯差異的, 矽谷文化強調個人的主動發展遠遠大過公司給你規劃好的發展。」另外一個原因則是家庭因素,最終他來到了Facebook。
Facebook的經歷太獨特、珍貴
那個時候Facebook人特別少,只有40多個程式設計師,大家都叫工程師沒有分組,當時所有人都擠在一個特別擁擠的辦公室。桌子很小,彼此離的很近,出了問題,一吆喝就行。Facebook用戶數增長的特別快,大家的工作也都圍繞著快速增長帶來的問題進行,「一旦有什麼問題,大家就往上撲,你願意解決什麼就什麼,特別的沒有章法。」趙海平稱,這恰恰和微軟形成一個鮮明的對比——毫無章法,亂到你有時候覺得微軟還不錯,它挺有章法。
趙海平在Facebook待了8年多,他稱無論是用戶的增長、公司上市的奇蹟,還是Facebook對整個世界的影響,都太獨特。當初沒有人想到,至少趙海平以及他身邊的同事都沒想到Facebook會是今天這麼大的一個規模,當時只是看到在不斷增長,並不知道增長之後意味著什麼。獨特也還包括做項目的艱辛,「我們是被逼的把網絡和伺服器做到極致,因為我們每省0.1%,就是幾百萬美元,所以必須把東西做到最好。」
現在回頭看這些經歷真太特殊,當年坐你旁邊的人都成了高管,這是一種特別奇妙的感受,「像當年Facebook的的聯合創始之一 Dustin Moskovitz就坐在我旁邊寫過程序,你現在讓他坐在我旁邊寫程序,不太可能!」但當時大家沒有想這麼多,所有人都幹的熱火朝天,討論問題可能會一直持續到十一二點,下班了也可能在工作——網頁怎麼設計、後端應該怎麼做…一大堆意見。
這麼瘋狂的原因很簡單,一個是Facebook用戶不斷地增長,一直在鼓舞著大家;另一個則是這些人都非常優秀——哈佛、CMU、MIT、斯坦福…,每一個人都特別有才、特別有想法。
到阿里是想擁有另一段獨特的經歷
從Facebook到阿里,並不是一個很突然的決定。趙海平來之前,已經跟阿里技術保障的劉振飛、周明、畢玄聊過,對阿里已經有了整體的了解。
正式接觸是在2014年阿里IPO前後,阿里組團來美國,王堅博士和趙海平深入聊了聊。發現技術很對口,需要解決的問題也很新鮮——Java、JVM從來沒做過。他又來了趟杭州,發現杭州挺美、阿里員工腳踏實地的公司文化很符合他的性格,對阿里很有好感。
而讓他下定決心回國則是阿里面臨的技術難題和挑戰。「在Facebook經歷非常特殊,而阿里就更特殊——大規模的交易、單天的交易量、雙十一的交易量,不是任何一家美國公司有的,這種獨特性是我尋找的東西。當你去解決這樣的技術難題時,你就會有新的認識:這個量級的問題可以這樣解決,提升一個量級,就要用新的解決方法,最後你就能看到問題的全部。」體會不同角度去看不同的技術難題,對趙海平來說恰恰就是最享受的一件事情。
HipHop不為人知的故事:一開始野心並沒有那麼大
其實最初做HipHop項目時,他們的野心並沒有那麼大,不是一定非要把它轉換成C++,但後來發現,這麼做確實可以提高性能,所以就思考是否可以用工具把整個網站都編譯。
那時Facebook內部有好幾個項目都處於半競爭關係,每個人都仁者見仁智者見智,有人想改變PHP引擎實現,有人想在PHP應用層做調整,有人說可以轉成Java,而趙海平則傾向於保持PHP不變。「之所以傾向於不變,是之前大家已經嘗試過將PHP轉換成其它語言(Python),但四五個人轉,根本趕不上二三十個人寫Code的速度。」另外,團隊裡有很多PHP專家,突然改成Java,讓人怎麼寫代碼?於是趙海平一直在這個領域探索,到最後只剩下HipHop和轉Java兩種方案。這時大家意見又不一,到底用哪個?討論問題也有了情緒,怎麼辦?用數字說話!誰性能提高大,就用誰,最後HipHop勝出。
線上執行的時候,趙海平內心很忐忑,很怕出現什麼問題。「因為你改的是底層,只要有一個新問題出來,大家第一反應就是這裡出了bug,事實上十有八九都是應用本身的問題。」當時趙海平對其他團隊的承諾是,有任何問題24小時內一定響應。有一年感恩節,正在別人家做客的趙海平,一個電話就立刻趕回去調試,雖然事後證明也不是底層的問題。「當時我跟團隊說,我們要有阿信賣魚的精神,不論是哪裡的問題,我們都要幫他們debug,贏得別人的信賴。」對於這些,趙海平雖然感覺非常辛苦,但卻又感覺很爽,因為當時他們可能是最熟悉全部應用的團隊。
再回首HipHop,趙海平感慨項目非常艱辛。「最累的時候,我開車都在想怎麼寫Code,一邊開車一邊想,到了公司只是把腦子裡想好的寫下來而已。那個時候別人跟我說話,我都不大反應的過來,因為腦子一直在想這個東西。沒有辦法,面鋪的太大了,等於整個程序語言的所有都要去實現。有時也想偷點懶,想著這個資料庫函數這麼冷門,肯定沒人調用,先不做它,結果第二天就有人來找你……」
雖然過程很痛苦,但痛並快樂著。趙海平找Bug每次都很快,半小時、一小時就能找到。但有一次Bug太底層,花了十幾個小時才找到,最後找到Bug跟大家解釋怎麼回事時,「大家聽到我說為什麼還都聽不明白時,那快樂真的很難用語言形容。」趙海平接著補充到,「其實人有的時候就是喜歡解決大問題、大影響的那種快感,希望自己做得工作特別有意義——擲地有聲的那種。」
本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)