我為什麼要念博士

最近好像很流行討論要不要念碩士, 像是xdite的我不會念碩士和彭明輝的不甘不願地念碩士。在美國則是看到Matt Welsh寫了Do you need a PhD?討論該不該念博士。我在MIT博士班已經念三年半了,預期今年六月要畢業,剛好可以在30歲前畫下一個值得紀念的里程碑。在畢業之前就順便利用這篇文章總結一下我的感想,也可以讓未來更多迷惘的人看清未來的各種選擇。簡單的說,如果讓我重來一次,我還是會念碩士班還有博士班。我知道很多人在選擇要不要念研究所時,是看對未來的就業有沒有幫助,甚至是沒有選擇的空間而被家長強迫升學。我從國中起就很清楚知道自己想做什麼,但我並不是會做長遠規劃的人,而是走一步算一步,因為我覺得世界變得太快,提前規劃五年十年後的職業道路並沒有太大意義。所以我雖然很早就知道自己喜歡寫程式和研究新東西,但我一直到大四才決定要念碩士班,到了碩士班才決定要念博士班。念書一向不是我的興趣,高中沒認真上過幾堂課,然後靠著程式比賽混進台大。在台大時我也都不去上課,整個四年我唯一全勤的課是大三的compiler,因為這是唯一一堂讓我覺得去課堂裡聽課比自己念還要有效率的課。但雖然沒去上課,我可是很認真寫作業的,尤其是程式作業我都會做把所有可以做的bonus全做完,有空的話還會自己多加一些有趣的功能。也因此到了大四時,我的成績還能勉強進入推甄台大研究所的門檻,等於可以免試直升碩士班。但除了學校生活外,我從大一時就在學校外的網路公司兼差寫程式和做顧問,同時也在系上的工作站實驗室幫忙管理一堆伺服器和Linux主機,到大四還同時在另一個startup公司打工兼差,所以生活其實還蠻多采多姿的。在當時(2005年)這種情況下,其實不太難決定要不要念碩班,因為 1) 我還不想當兵 2) 我當時這些打工的收入其實比一般大學畢業生起薪還高不少,而且我花在這些工作的時間很少,每個禮拜還有很多時間可以自由運用 3) 我找到了一個好老師,給我很大的空間可以在碩士班做任何我想做的題目。於是我就這樣繼續待在台大念了兩年的碩士班。在碩士班時,我最大的收穫是打開了眼界,透過世界頂尖的論文知道了這領域中最先進的研究和問題是什麼,也慢慢了解MIT、Stanford、Harvard那些世界頂尖的大學都在做什麼研究。我雖然喜歡寫程式,但也不喜歡老是一直寫簡單的留言板或是blog這種書本上的萬年範例程式,只有一直做新東西才能激起我的熱血。慢慢的我也發現念博士班可能是最適合我的路,可是同時我也有幾個掙扎的地方 1) 要念博士班就要去國外念最好的學校才有意思,那就得先花一年當兵,而不能找個公司做四年國防役而不當兵 2) 博士班平均要念六年,同樣的時間如果我在台灣工作,損失的機會成本是台幣一千萬以上加上六年的年資 3) 出國唸書要離開熟悉的地方,熟悉的朋友、家人,要用很破的英文在獨自國外生活 4) 博士畢業實際上會減少就業機會的選擇,尤其是在台灣,真正需要博士的企業非常少。我在台大認識很多人都有出國唸書甚至在國外工作的夢想,所以對他們來說這些障礙都不是問題。但對我來說,出國唸書最大的誘因只是有機會在世界頂端的學校做自己喜歡的研究,和全世界最厲害的人一起工作,至於是不是要在國外工作則是想都沒想過。想清楚這點後,我立定一個目標,我只申請我最想去的兩家學校,如果上了而且有獎學金我就去念,不然就算了。最後的結果是我幸運的申請上了MIT CSAIL,指導教授也能給我獎學金,所以我現在才會在這寫這篇文章。回過頭來看,現在很慶幸我有決定要嘗試一下申請MIT,即使當時看起來成功的機會渺茫。而這幾年念博士班帶給我的收獲,也遠大於當初的想像,在美國可以得到的各種機會更是在台灣一輩子也碰不到的。雖然一開始看起來在經濟上會損失很大的機會成本,但實際上美國各種科學和工程科系的博士班都有獎學金(RA、TA、或fellowship),以MIT這種私立學校來說,一個教授每收一個人就要幫他付一年總共七萬美金的學費和生活費,當初我即使在竹科爆肝做不是很喜歡的工作,一年的收入也不會比七萬美金多多少。當然,以帳面上的收入來說,博士班念完是存不了多少錢的,因為七萬美金一半是要拿去繳學費,剩下的生活費也大半要繳房租和吃飯過生活。在台灣工作六年可能可以買個房子,但在美國念完博士班只會得到一個博士學位和少少的存款。那話說回來,這個博士學位到底值不值得?如果在四年前還在台灣時的我來看,我會說我不確定,但在MIT待四年後,我會說「200%值得」。首先最大的「福利」是在完全自由的環境下(包括經濟上的自由,選題目和選合作夥伴的自由),和全世界最聰明的一群人一起研究各種既有趣也有挑戰性的問題。這種機會非常難得,如果大學或碩士畢業就去工作,一定會在題目和合作夥伴上受限;如果自己創業,就會在經濟和合作夥伴上受限;於是念博士班成為唯一可以同時得到三方面自由的最佳選項。至於對於能力的增進方面,最大的收穫是英文變好了,可以輕鬆跟來自世界各地的人溝通,讀寫英文論文也是跟吃飯一樣簡單。另外就是「做研究」的能力,雖然我覺得我本來就是一個靠自己學習和研究新知的人,但博士班的訓練是把這件事變得系統化,讓我可以幫更多人學會這樣的能力。做研究的能力還有一個更重要的面向,是判斷什麼題目才是有研究價值的,而什麼是沒有的。如果沒有這項能力,不管未來做什麼事都很容易瞎忙,例如說花很多時間做一些簡單瑣碎的小事、研究一個一百年前早就有人完全想透的問題、或是卡在一個早已被證明不可能有解的問題上。至於念博士這幾年的年資和可能減少的工作機會,現在看來實在一點都不重要。因為一旦畢業後,打開的門是「全世界」頂尖企業和研究機構的機會。資訊科學的博士在美國出路非常廣,我都還沒畢業就一天到晚收到各式各樣獵人頭的信,除了矽谷那些大大小小的軟體和網路公司外,華爾街的hedge fund都是直接開出矽谷兩到三倍的價碼在搶人。如果對這些沒興趣的人,也很容易到大學或是大公司的研究機構中繼續做研究,或是直接加入學校附近上百家的startup中當個CTO或tech lead。這些機會如果我當初待在台灣,就一輩子也見不到甚至聽不到。(我在台灣時甚至沒聽過hedge fund這個詞,也沒聽過有哪個念資訊的會去這種公司。但實際上美國最厲害的幾個hedge fund全都是用數學、物理、資訊的博士用非常科學的方法在賺錢的。有興趣的人可以看看前MIT教授James Simons開的文藝復興科技(Renaissance Technologies)。)世界很廣大,相較之下台灣真的是一個小小島。如同Sega的《我為什麼離開 Google》說的一樣,台灣沒有軟體產業,甚至在其他產業中也很少有軟體專業能發揮所長的舞台。我希望台灣能夠更好,但同時我也覺得每個人的眼光應該放遠放大,看向世界和未來十年二十年,而不是聚焦在台灣、中國和未來的兩三年而已。Disclaimer: 這篇文章不是要鼓勵每個人都念博士,我知道很多人對於學術研究沒有興趣和熱情(其實我也不太有,我只是喜歡打造新東西而已)。但是,眼界、研究和實作能力的培養則是每個人都能自己做的,這些才是真正影響一輩子的事情。閱讀全文

Change The World!

之前一直沒機會跟大家分享我在MIT到底在做什麼研究,但拜登上MIT首頁的一篇報導Picture-driven computing」所賜,我這兩年的projectSikuli像原子彈爆炸一般透過slashdot和twitter以不可思議的速度擴散開來。而這幾天,剛好碰上學校每年都會舉辦的滑雪三天三夜旅行,我照著計劃坐上遊覽車到四小時車程外的緬因州滑雪。第一天晚上到旅館發現沒網路可用,只好早早上床睡覺養足隔天的精神。到了隔天中午,在雪場的餐廳吃午飯時,我想說該來試試有沒有網路用,於是拿出ipod touch連上網後,沒想到迎面而來的是近百封關心sikuli的郵件。在震驚之餘,我還沒意會過來到底發生什麼事了,直到我看到一封來自跟我同實驗室的學長Michael發給實驗室所有人的信,標題寫著:「Sikuli on Slashdot!」,接著我才意識到:啊!原來是遭到slashdot effect攻擊了!(slashdot是全世界關心科技、網路、電腦技術的人幾乎必看的網站,只要某個網站一被登上slashdot,馬上就會遭到來自世界各地數以千計的閱覽攻擊,其效果等同於分散式阻斷服務(DDoS)攻擊,而這現象就被稱為slashdot effect。我以前都以為只有網站會有突然出現的巨大流量,沒想到連我的信箱也會...)在這件事情之前,我從沒體驗過媒體和網路的力量可以有多麼驚人。從MIT News發出的一篇報導,隔天被轉載到一小部分科技、技術網站,並且在twitter上開始有人開始口耳相傳這個新玩意。再過一天,有人把這消息推上了Slashdot: MIT Offers Picture-Centric Programming To the Masses With Sikuli,很快的sikuli這名字開始傳遍世界。我在twitter上搜尋了sikuli,想看看人們都說些什麼,結果看到由各種不同語言寫的tweet不斷湧出,就在我還沒看完一頁時又冒出 「xx more tweets since you started searching」 的訊息。搜尋出來的tweets除了絕對多數的英文外,也看到很多俄文、法文、日文,反倒是中文的消息最少,實在讓我有點哭笑不得。(關於訊息的傳播,我也透過這次的事件觀察到不同國家對同一事件反應的一些有趣現象,以後再另寫新文跟大家分享。)人在偏僻的山中滑雪,突然看到這麼多人們在討論著我的project,還有信箱裡塞滿各種關於sikuli的問題,讓我興奮得不得了。當時我的心情其實完全顧不得滑雪了,但難得的旅行還抱著電腦一直坐在餐廳裡實在也有點可惜,只好趁著有網路時把每封信大略瀏覽一下,下午就趁著坐纜車上山的空檔想想怎麼回覆這些郵件。太陽下山後,我終於按奈不住卸下裝備就拿著電腦回到餐廳裡繼續連上網,結果又是更多的郵件湧入、更多的tweets、更多的衝擊。而當初把sikuli open source的決定,也讓我接到來自世界各地開發人員的意見和回饋,有人在一天內幫我把Linux上還沒實作的幾個功能寫完並送了patch給我,也有人為了在它的64-bit Windows上執行而直接hack了沒有原始碼的二進位EXE wrapper。除了寫程式的人外,有專業的user experience designer願意加入,也有人志願幫忙移植到Linux的工作。看著這些不知道什麼時候才能回完的信,我突然發現,我似乎真的做了一件不得了的事....。在MIT裡其實常常能看到許多很驚人的點子,但可惜的是即使在MIT,大部分的東西也都停留在為研究而做的雛形階段,研究人員雖然產出了論文,但如果沒有對的人讀到那些文章,很多好點子也不過是停留在紙上變成可回收的資源而已。Sikuli的論文其實在去年九月就在ACM關於user interface中最頂尖的會議UIST上發表了,在當時還拿了Best Student Paper Award,但為什麼一直到今天才突然爆發開來變成人們口中「革命性的新發明」呢?說起來這還是得感謝MIT有自己的News office,一個記者剛好問了我老闆最近有沒有什麼有趣的研究,於是sikuli這個字就從這篇報導散播開來。但除此之外,我也蠻慶幸之前自己決定要把sikuli release出去,而且老闆也很支持我這麼做,整學期都沒問我「研究」上的進度。(把程式release跟研究本身沒什麼關係,有些教授對這些研究結果的實作是否能實用也不太關心,甚至覺得做這些事是浪費時間。)其實一般人可能很難想像,要把一個研究用的雛型打磨到能夠公開讓任何人用的程度,所花費的力氣可是遠超過寫出最重要的核心功能。我花了幾個星期研究怎麼把Java程式包成Mac上的.app,研究怎麼把.sikuli變成能夠點兩下就打開的document package,怎麼把sikuli會用到的一大包dynamic libs包進.app中讓使用者不用安裝其他的相依函式庫...。搞定Mac後,我又花了一陣子把Sikuli移植到Windows上,雖然上層是Java寫的很好解決,但有部分程式碼是透過JNI連結到C++呼叫OS提供的API才能完成的。因為我一直都用Mac開發,所以這些東西本來都只有寫Mac版的,但為了要真正讓多數人能用這個軟體,只好跟老闆要了一台PC裝上Windows來完成這些相依平台的程式碼。Windows並不是我熟悉的平台,除了國中時玩過VB外,之後就幾乎沒在Windows上寫過什麼程式了。所以為了搞定Windows的移植,除了得速成學會一些Windows API外,還得搞定DLL+EXE的包裝,最後再包成installer讓人能一路按Next就裝完整個軟體。雖然這些事情我都是第一次做,但還好沒遇到太多困難,即使每個禮拜都要花兩三天寫Distributed Algorithms的作業,剩下的時間也剛好夠我處理完這些瑣碎的工作。完成Mac和Windows初步的包裝後,我也一邊開始做網站、API文件,也請跟我合作的Tom一起寫了一些教學文章,順便讓實驗室的同學們當一下測試的白老鼠。因為周圍沒什麼人用Linux desktop(真是有點出乎意料?),所以Linux版就暫時被我擱著沒動。後來大家都去放聖誕假期時,我趁著空閒做了一個demo的影片放到youtube上,但因為我也還不急著釋出public beta,所以也沒跟其他人說我做了這個影片。就在MIT News來採訪的前幾天,0xlab剛好有幾個人突然寫信問我有沒有Linux版的sikuli。雖然不知道他們怎麼發現的,但看到有人想用我也就有了勁想把Linux版趕快完成。花了一天在我新要來的PC上裝好ubuntu後(還包含一個小時在搞定這台電腦的無線網卡driver...。沒想到到了2010年我竟然還在做這種事情...),再修一修Makefile後就包了一個功能不全的Linux版放到網站上。有句話說「機會是留給準備好的人」。當sikuli被公諸於世的時候,之前做好的事情就突然就派上了用場。MIT News促成了這個好機會讓sikuli這個很酷的想法脫離UI研究會議的小圈圈,進入世界上有網路的每個角落,這時我之前憑著一股熱血就自顧自的作了這麼多的雜事,突然都有了它的意義。於是,在機會到來時,demo的影片加上能下載試用的軟體讓人們親眼看到並且能把玩這個革命性的點子,結果就讓twitter上充滿了一大片的「holy crap this is awesome! http://sikuli.csail.mit.edu」。我一直夢想著要做些不一樣的事情來改變世界,徹底發揮我的長處做出能夠對世界產生巨大影響力的東西。還記得三年前我在申請MIT時,在SOP上大膽的寫了我的目標「I believe that programming environments should be smarter and more intuitive, and it is my goal to reinvent one that allows beginners to learn easily and adepts to be more productive.」,而三年後的今天,我非常興奮我踏出了改變世界的第一步。閱讀全文

傳奇人物就在我身邊

今天老闆突然寄來一個youtube video給大家,影片內容是1988年世界上第一隻Internet worm:Morris worm出現時造成的話題新聞。Morris worm是網路上出現的第一隻worm,它會利用系統的bug (sendmail、fingerd、rsh)複製自己並散播到其他UNIX主機上。當時這隻worm還被稱為virus,但它的威力比起一般virus又強大許多,因為一般的virus只能在同一台電腦中複製自己感染不同檔案,所以擁有向外擴散能力的Morris worm在當時引起了很大的風暴。這隻worm當時是從MIT開始擴散的,所以讓很多人認為作者是MIT的學生。但後來發現,作者其實是Cornell的研究生,會選擇從MIT開始散播就是要混淆視聽。據說這隻worm當初被開發出來的目的並不是要造成什麼破壞,而是為了測量Internet的大小,只是程式有點bug,沒想到...就造成了全世界的電腦大癱瘓。因為這隻worm實際上造成了非常大的損失,所以作者也成了美國第一個被以電腦詐欺及濫用法定罪的人。雖然作者遭到定罪,但他仍被視為某種傳奇的英雄人物,因為這隻worm暴露出網路系統的bug可以造成多大的危害,也迫使所有人開始重視網路系統的安全問題。很有趣的是,這個當初在Cornell企圖利用MIT來混淆視聽的學生,現在竟然是...MIT的教授Robert Morris。從他在MIT的網頁完全看不到這段過去的「傳奇事蹟」,但如果去看他的wikipedia頁面,就會發現整頁幾乎都是在講Morris worm而已XD我在知道這件事後實在非常驚訝,因為我上個禮拜才因緣際會跟他一起吃了許多頓飯。雖然坐在一起吃了很多次飯,也都沒聽人說起這件事,直到今天迂迴的發現原來他就是Morris worm的作者,才讓我大大吃了一驚。另外,藉由他的wikipedia page,我還發現他跟Paul Graham是超級好朋友,曾一起開過一家公司Viaweb (後來賣給Yahoo!,成為Yahoo! Store的前身) ,後來還一起發明一個程式語言Arc。(Paul Graham是著名的LISP Hacker,寫過很多LISP的書,還有一本我很喜歡的「駭客與畫家」。)正覺得世界很小的時候,我又發現更驚人的事情。原來Robert Morris的老爸竟然是美國國家安全局底下的電腦安全中心首席科學家,專長是密碼學,每個UNIX都會有的/etc/passwd裡的加密密碼就是用他寫的crypt library產生的。把全世界搞得雞飛狗跳的hacker,老爸竟然是國安局的密碼學家,這可以說是....虎父無犬子嗎XD閱讀全文

與大師的近距離接觸

Takeo Igarashi是東京大學的教授,兩年前MMDays曾經介紹過他在UI上的一些研究,還稱他為日本的UI之神。在當時我就非常佩服Takeo的發明,他讓使用者可以直覺地用滑鼠畫出3D模型或是自然地操作2D圖片。這些發明共通的特性是使用者不需要面對複雜的選單和按鈕,只要用直覺的滑鼠動作就能做到極為靈巧的操作;而表面上看起來雖然單純,但背後卻有著非常聰明的想法隱藏在裡面。為什麼我會特別提到他呢?因為再過兩個禮拜,HCI界中最大的conferenceCHI 2009即將要在Boston舉辦,會場就在離MIT不遠的地方。雖然少了一次機會可以順便去別的地方玩,但有個好處就是世界各地在這個領域的學生和教授都會自己跑來Boston。Takeo當然也是CHI的其中一位與會人士,而我們老闆就趁這個機會邀請他來MIT給個演講,除了可以親眼看看他那些超酷的demo外,更棒的是他還會跟我們group的所有人一起吃飯!(當我聽到這消息真是超興奮的,這大概就是那種能跟偶像近距離接觸的感覺吧XD)提到這件事,就讓我想順便比較一下MIT和台大在辦seminar的差異。MIT CSAIL的研究領域非常廣泛,基本上每個子領域的教授都會自己找該領域的研究人員來給演講,所以我們有AI seminar、HCI seminar、Theory seminar...。這些seminar不強制要求學生參加,每個人挑自己有興趣的去聽就行了。我的老闆負責主辦HCI seminar,大概每一兩個星期就會找個人來演講,這些人來自世界各地,很多都是這領域兩大conference (UIST和CHI)的熟面孔。他們除了來演講外,最有趣的是我們老闆總是會請演講者跟我們整個group的學生一起吃午飯。因此,我們很容易就能認識這領域中的頂尖人物,還可以有很多機會跟不同人討論自己的研究,交換不同的想法。以前在台大時,資訊系每個星期也都會辦一兩場seminar,邀請國內各地的教授給個演講(很少有國外的講者)。大學生通常不會去聽,而研究生是被要求每個禮拜一定都要出席的(碩二要求少一點,但至少兩個禮拜也得去一次)。雖然台大也有這樣的制度,但其實碩士班過了兩年我也沒機會認識哪個講者,更別提能討論什麼研究了。seminar就只是單純的聽人演講,如果講者演說技巧不好或是對題目不感興趣,就會看到下面一堆人在睡覺或玩自己的電腦。雖然說MIT不強制要求學生去聽seminar,但有興趣的人都還是自己會去聽。聽眾人數通常也不會很多,可是因為是自己想聽才去參加,所以演講中的互動和討論很頻繁,而且氣氛也很熱絡。有一次還出現很有趣的現象:台下的人問了一個問題把講者考倒了,但台下另一個人馬上就幫他回答了答案,就在講者恍然大悟後,台下兩個人就隔空討論起來了XD我提到這件事也不是想說台大不好,只是MIT實在有太多台大很難有的優勢,像是MIT鄰近Boston這個被稱為「宇宙中心」(The hub of the Universe)的城市,世界各地的人很容易就會往這跑;再加上MIT的學術聲望和財力,要邀請各地的講者也不是什麼問題。台大雖然是台灣頂尖學府,但台灣距離西方國家太遙遠,很少人會專程想來台灣,再加上台大也沒辦法負擔這種國際旅行的費用(話說,五年五百億都用哪去了?),也難怪國際化只能停留在教授改用英文上課上面了。閱讀全文

MIT的豆腐駭客

在MIT可以遇到各種奇奇怪怪的人,有很多是傳說中的大人物,像是發明WWW的Tim Berners-Lee就跟我在同一棟樓裡工作,即使在廁所裡遇到也不是很奇怪的事情。也有很多乍看之下就像一般學生,但認識後其實才發現他的一連串驚人事蹟, 像是跟我一起修Machine Learning和Database的同學Ted,竟然已經寫了好幾本書...。到目前為止,我認識一個最神奇的人是一個叫Dheera的印度學生。他雖然看起來是個標準的印度人,但他說英文沒有印度口音,更扯的是他竟然會說中文,而且不只是能用中文跟我聊天,連讀寫(簡體)中文都沒問題,甚至還會用拼音輸入法打字。他非常熱愛中國文化和中國食物,他今年暑假就自己一個人跑去北京,一路坐火車到新疆,就這樣在中國自己闖蕩了一個多月。一個會說中文的印度人已經讓人夠驚訝了,但後來跟他去逛中國超市時,才發現他不但對蔥薑蒜等中國食材瞭若指掌,而且還告訴我他其實還會自己做豆腐!!他說超市賣的豆腐不好吃又貴,所以他都自己做,他甚至還為了豆腐而自己做了製作中需要用到的特殊容器。除了會做豆腐外,他的房間裡還掛了兩個大大的紅色燈籠。很特別的是,從他的窗外遠遠看會覺得燈籠裡面好像是蠟燭,火光會不定時的些微閃爍,但真正的秘密是:那兩個燈籠裡面是燈泡,可是加上他自己寫的控制晶片讓兩個燈泡有忽明忽暗的效果,一切就是為了讓燈籠裡看起來像是真的有蠟燭一樣!!我只能說Dheera真是讓我大開眼界,真沒想到MIT除了有很厲害的科學家和工程師外,竟然還有這種會說中文的豆腐駭客...。(我想他上輩子一定是中國人...)閱讀全文