最初的 Google 程式碼品質其實不高 ?
剛剛在臉書上看到 Saturday 分享了一個連結,覺得內容還蠻有意思的,所以把大意簡單翻譯在這裡:
◎ ◎ ◎ ◎ ◎
Quora 問答:最早版本的 Google 程式碼品質到底如何?
最近有一本新書叫 In the Plex ,寫了很多關於 Google 早期的八卦,其中寫著早期的 Google 搜尋程式原始碼實在是:「不怎麼樣〈Not Great〉」。
Google 一開始並不是個搜尋引擎,而是一個讓網友在網站上留註解〈annotation〉的系統。早期的 Google 其實是用來評比註解的系統,而且叫做 Backrub。〈不知怎麼後來搞到變成網站搜尋系統去了,AltaVista 跟 Yahoo 創辦人半夜想到這點應該會氣得睡不著覺。〉
問題是創辦人 Larry Page 的程式功力 … 〈這裡用了很隱諱的形容詞,叫做『他當時不是個世界級的的程式設計師 He wasn’t a world-class programmer』,以免得罪一狗票的 Google 工程師〉,寫了很久寫不出來。他只好求救於當時的好朋友〈也是個程式助教〉 Scott Hassan 。
Scott Hassan 發現,這程式裡面的臭蟲多得不得了,除了 Larry Page 的關係以外,還因為 Page 企圖心太旺盛,用了當時很新的程式語言 Java〈俗稱的小孩開大車是也〉── 結果 Java 一天到晚當掉,Hassan 光是 debug Java 就搞到翻臉,決定直接用 Python 重寫,才把 Backrub 搞定。〈所以程式碼有大半是 Scott Hassan 貢獻的?〉
有趣的是,兩年後 Larry Page 跟 Sergey Brin 合夥,決定要把 Backrub 用在網頁搜尋上,成立了 Google 。沒想到這時候他們又遇到了問題,Google 常常當掉,有的人根本連結果頁面都開不起來。追查半天,一個新員工、也是前 UCSB 的教授 Urs Hölzle 發現:問題又出在程式碼身上,因為他們用的是… Python。
“The web server couldn’t handle more than ten requests or so a second because it was written in Python, which is a great idea for a research system, but it’s not a high-performance solution”
每秒十個以上的搜尋 request 就會讓 Google 當掉,因為程式碼是用Python寫的。 Python 拿來當研究用的開發語言很好,但不適合用在講究高效能的環境上。
不過沒關係,反正 Google 慢慢有錢了,可以請更會寫程式的人來… 經過不斷的重寫跟改進,終於成了今天的 Google … 〈是不是有種小魚終於逆流而上成功的感覺?〉
◎ ◎ ◎ ◎ ◎
翻譯就到這裡,的確是很有意思的故事。〈這本書裡面應該還有很多類似的故事,有空應該找來看看〉
接下來的引申時間,我想多數人的結論多半是…「原來早期的 Google 程式碼也很爛」、「所以大家不要害怕寫出爛程式碼、早早釋出你的 prototype,開始競爭… 」
我的角度比較不一樣。我想的是:「一個原始碼寫得這麼爛的系統,代表到發展中期會遇到很多效能瓶頸、要花時間重寫、在這段期間被對手追趕過,但它最後還是能變成這麼大這麼成功的事業,顯然他的演算法內容真的不簡單。」
兩種想法也許都沒錯,只是角度問題。