程式碼,貓和理想主義

餘昊男發表於2012-09-09

1.

我喜歡寫程式碼。

如果看到這一句話你心生厭惡、憐憫和不理解,那麼我從內心深處表示遺憾。

同樣的道理,如果別人對我說他喜歡搗騰儀器試劑,我覺得沒有比那再枯燥的了。所以我遺憾他們一生中缺少程式碼,就像有人能為我一生中可能不會一件樂器而感到遺憾一樣。

而使我真正同情的人,是那些搖動著電腦科學大旗,卻鼓吹著自己不必寫程式碼的人。他們覺得自己足夠精明,參透了一切碼農到最後都是流血流淚出賣勞動力的道理,覺得老子搞的只是科學,又不是搞的程式碼。這樣的人,如果最後能像霍金一樣在輪椅上發光,照得世人眼睛瞎掉,那還了得,否則就得殘廢一輩子,因為裡面的大多數人都害怕程式碼帶來的挑戰。

你可以想象我在談論掌握一件樂器或者拿起筆刷繪畫的能力,而不是在心裡默默地想,這人又在這裡裝逼裝專業了。你能這樣假想的原因,是因為程式碼歸結到最後是一門藝術。當然我喜歡這門藝術不代表說我已經登峰造極,就像我喜歡畫畫不代表我就是梵高一樣。

寫程式碼就是一個創作的過程,就像一個繪畫的過程一樣。碼農用鍵盤,而畫家用筆刷。碼農要構造心目中獨一無二、近乎完美沒有漏洞的程式,而畫家要畫出心目中獨一無二、近乎沒有瑕疵的佳作。碼農用一個個字元打造一件藝術品,而畫家用一筆筆顏料打造一件藝術品。所以你不難理解為什麼有的碼農工作起來能到近乎瘋狂的地步,因為你已經熟知一個畫家的在凌亂的工作室裡不眠不休作畫的情景。你也不難理解為什麼《矽谷傳奇》裡面有一句和藝術家相關的話”good artists copy and great artists steal”,因為一切目前廣為人知的軟體都是其中傑出的藝術品,你每天都在欣賞它們只是自己沒有覺察到而已。

幾乎每一個人從拿起畫筆的那一刻,就立志成為一名偉大的畫家,但大多數人的畫也就是被擺在了街邊或不起眼的小畫廊裡賤賣。天賦固然是裡面一個因素,更重要的是大多數人都不堪忍受壓力而草草對待自己的作品。他們不願為了讓自己的畫有靈性而廣遊世界尋找靈感,因為那樣會耗費青春和金錢。也不會始終堅持自己最初的構想數次撕掉畫紙重來,因為身邊的人都陸陸續續作了一些次品賺了一些小錢。巨大的周邊壓力導致的結果就是,顏料還沒幹透畫就被放上架貼上廉價標籤開始兜售了。

事實上我能理解這樣的人,因為現實的殘酷讓理想不值錢。

2.

儘管我在本科的時候因為科學是一個崇高的話題而對學術動了一點點心申了一個phd的專案,一直以來,我都覺得自己的興趣不在學術界,工業界將是自己今後的歸宿。我不認為一個偏向工業界的人讀了phd是某些人眼中的不識時務,浪費青春,我覺得一個人應該當對真理有所追求,哪怕只有過一次也好。

所以我帶著短期做貢獻的態度開始了研究,才發現原來許多學術界裡的人對待自己論文和程式碼的態度還沒有我這個界外的人誠懇。

大量的論文不開原始碼,原因只有一個,因為藏在論文粉飾的華麗外表之下的是不能正常工作的程式碼,或者能正常工作但是不能和論文結果匹配的程式碼。對那些以保護智慧財產權為由進行辯解的作者,我想說的是出來混就是要公開程式碼的,否則你就學intel那樣別發文章。

有的人經歷了數月的程式執行之後,發現結果比理想偏差了一些,然後發現會議截稿期在即,再搞一遍確實痛苦,索性把心一橫,塗塗改改,要麼在程式碼里加點毫無邏輯的常數,要麼給結果一個正的偏差,然後配上精美圖文,提交。運氣好的話,這篇論文就這麼接收了。別以為我說的是一些無名小會,我說的事都常在自己領域top3的會議中發生。事實上,在計算機相關領域,尤其是機器學習和計算機視覺這一塊,大家都心知肚明,儘管模型再新穎,名字再花哨,大多數都是不能工作的。

我覺得這些論文的作者才是真正的在浪費青春。

我一直堅持的原則是認真對待自己的程式碼和論文。在phd期間,我會開放每一篇自己的論文的程式碼。我會承諾除了必要的數值計算處理浮點數時有一些常量偏差在程式碼中,你會找不到任何hack的地方。我也會承諾每個能下載到的程式碼除了機器體系結構、作業系統和人為誤差造成的偏差以外,論文中的結果能100%重現。我會保證自己論文的每一句話都以一種scientific的精神在敘述,而不是在敷衍reviewer。

慶幸的是,我的老闆,包括實驗室裡的人,的確也都是一群理想主義者。7個人當中有2個已經35歲左右,其中一個是一直在研究所工作而居然忘記自己終身大事的華裔人。在他研究了將近10年之後,有一天猛然一想,媽的我還沒phd學位呢,於是跑回學校繼續念phd。另一位,也就是我常說的澳大利亞哥,讀了三個本科學位,在一家電腦公司工作了也是將近10年之後,發現自己的理想原來在學術界。我雖然志向不在學術界,但我做研究時至少應該表現得足夠誠懇。

我覺得一個人有一種理想和信仰十分重要,因為如果你像我這樣用5個月的時間測試2個月寫成的沒有bug的程式碼只是單單驗證背後理論的時候,你就不會有無力感和對自己工作的質疑。

我的測試仍然在繼續,慶幸的是整個過程已經走上正軌。我放棄了用目前手中不成熟的結果寫一篇論文投給下個月的會議而瞄準半年後的另一個會議。我覺得這樣才是對得起自己的程式碼和論文,這樣才不是在浪費理想和青春。

3.

我一直以來都很喜歡貓,長得可愛是其中的一個原因。

另一個更主要的原因是我喜歡貓身上一種孤獨桀驁的氣質。一隻貓會對口令不理不睬,它會專注自己的世界。貓走路的時候優雅自信,一步一步,緩慢而沉著地前行,不像狗那樣東聞聞,西湊湊。我一直以為,每隻貓的腦子裡都有某種理想根植。

所以,如果下輩子只能當動物,我會選擇做一隻理想主義貓。

相關文章