做研究與寫論文

最近有幾篇頗有爭議的文章「陳鍾誠給李家同的一封公開信」「陳鍾誠給李家同的第二封公開信」,針對李家同批判他是現在學術界獨尊論文的始作俑者,並指出應該要有其他的研究產物或評鑑方法(像是寫一個作業系統、做一個CPU之類的)。雖然李家同常常講出令人啼笑皆非的話,但就這兩篇文章而言我還真覺得李家同挺無辜的,連學術界獨尊論文的事也怪到他頭上實在有點牛頭不對馬嘴。雖然我博士班還沒畢業,但我也寫過幾篇論文,也做過有上萬人使用的系統,我非常了解擅長實作不擅長寫論文在學術界的苦悶和無奈。但隨著我在MIT的時間越來越長,也對這個現象慢慢有了不同的看法。話說我很愛寫程式,遠勝於寫論文。我可以不眠不休的寫程式,但沒辦法這樣寫論文。如果我當初碩士畢業後直接去工作,就可以在任何我想去的公司愉快的全職寫程式,但到頭來我還是來念博士班了,為什麼?很簡單,我需要有個環境能讓我不計後果的做各種嘗試和試驗。我喜歡寫程式,尤其是沒人做過的程式(一直重複寫留言板和twitter client可不好玩)。做沒人做過的事雖然好玩,結果可能會出乎意料的好,但也有可能會大大的失敗 - 而這就是研究。在公司裡做工程師寫程式就不太能做這樣子的事情,因為公司要考量風險,可能會大成功的東西也意味著可能會大失敗,而大部分的公司沒辦法禁得起這種失敗,所以只好跟著別人的屁股走。MIT是個很酷的地方,歷史上有很多有名的系統都是在這裡誕生的,像是Ethernet、Emacs、GCC、LISP(語言和第一個compiler)...。如果說要在學術界動手做真正的系統,那MIT一定是世界上數一數二的地方。那麼在這個地方,博士班學生要如何畢業,教授要如何升等呢?很不幸的,答案是:寫論文。在資訊科學這領域,美國學校不像台灣獨尊SCI論文,事實上美國人大多不知道SCI是什麼東西,但不是這樣就代表美國不寫論文。在這邊搞電腦、資訊研究的,一樣要寫論文,而且只投到各子領域的一兩個頂尖會議去。(一個大家都知道的潛規則是,三篇頂尖會議的長論文=博士畢業)台灣有台灣的遊戲規則,美國也有自己的遊戲規則,但即使是MIT的系統hacker們,也擺脫不了寫論文的命運。(例如說,Richard Stallman其實有寫Emacs的論文,做PostgreSQL的Stonebraker也有一大票的POSTGRES論文)我以前覺得寫論文很痛苦,也懷疑有多少人會去看這些紙張(論文英文就叫paper,所以名符其實就是一堆紙),對我來說直接把程式寫出來讓人用似乎更能直接造福人們。我到現在其實還是這麼覺得,所以我花了很多時間把SIKULI open source,建立起一個community,並持續更新千百個跟研究完全無關的功能,目的就是讓所有人能更直接的享用到這個研究的成果。(而很不幸的是,做這些事情跟我能不能畢業沒什麼關係,但還好我老闆還是支持我的。)但同時,我也覺得論文的存在有其必要性。我認為做研究可以產出多樣化的「產品」,這產品可以是程式碼,可以是影片,或其他任何形式的媒介。而追朔到其核心,研究的產出最重要的是「想法」,也就是 "idea",而論文只是最簡單又最容易被其他人接受的傳播媒介而已。為什麼說論文有其必要性,就是因為論文是傳播想法最有效的媒介。論文的架構設計得讓人可以很容易抓到重點,也可以很容易的深入核心想法。如果寫過論文的都知道,論文的架構是死的,一定都有abstract、introduction、related work、conclusion等等,這種架構讓人能各取所需,要深讀或略讀都很容易。但如果說研究的產出是一個軟體系統,我們該從何了解這個系統的「想法」在哪呢?為了要讓一個系統達到「可用」的程度,整個系統裡面至少90%以上的程式碼都是純粹的工程產物,跟核心概念一點關係都沒有。而程式碼又是很難讀的東西,如果別人要了解這個研究的創新在哪,讀程式碼一定是不得已的最後手段。我絕對贊成做研究的人也得懂如何實作。很多好的idea其實老早在數十年前的論文就出現過了,但一直到現在都看不到,常常只是因為沒人去把它實作出來而已。做研究最難的事就是找到新的idea,如果只是學人家實作一個作業系統或是CPU,那也不過是照本宣科,沒什麼「研究」的價值和貢獻。像MIT這種強調"Mind & Hand"(手腦並用)的地方,很多教授都有很強的實作能力,但他們一手寫程式,另一隻手還是寫論文,因為他們知道這樣才能得到務實的經驗,而同時也能把這些貢獻和想法用最有效的方法傳播出去。如果你問我,「我在學術界,但我擅長寫程式,不擅長寫論文,該怎麼辦?」我覺得答案很簡單:如果你有很多創新的點子,那就開始練習寫作和英文,因為不管在什麼領域,如果你沒辦法好好的把想法傳達給別人,那也是孤掌難鳴;如果你沒有什麼點子,只是喜歡寫程式,那更簡單了,趕快quit去做工程師專心享受寫程式的時光吧。延伸閱讀:我看李家同的是與非。此文的觀點跟我很接近,所以他講過的很多東西我就不再重複了。附帶一提,最近在facebook上成立了粉絲頁,歡迎大家加入多多交流!閱讀全文

HappyDesigner聚會

今天和toung跑到竹北參加HappyDesigner的第一次聚會(兼OV developer team聚?),看到很多人的真面目,還欣賞了許多爆笑無比的簡報。(我還是第一次看到Apple 1987年就作的HyperCard竟然可以拿來作簡報 XD)今天也小小嘗試了Takahashi流簡報法,的確還蠻有趣的,掌握的好就很容易可以吸引聽眾的注意力。(只是可能不太適合正式場合的簡報? XD閱讀全文

作業堆

連續忙了兩個星期的作業,快發瘋了。先是名為一份作業,實為五份的高等機器人學,為了這個作業搞到上星期六才能開始寫數位視覺效果的project 2。機器人學作業要玩四輪機器人(其實就是一台車),導數學模...閱讀全文

為什麼我要分享?

突然想寫點東西,聊聊為什麼我寫blog,為什麼我會想和其它人分享知識和學習的過程?我昨天在我的blog未來最舊小棧的個人板上post了一篇一些好用的Vim scripts。本來只是為了作個記錄,怕自己以後忘了曾經找個這些好用的scripts。結果昨天有個人回了一篇文章說,其中一個scripts(SearchComplete.vim)有bug,會讓一些平常會用到的按鍵失效。正巧我當時在試玩這個script時也有發現,但因為還不想花時間深入研究,就放著沒理它。沒想到過了一天,就有人自動出現告訴我他也發現這個問題,而且他還把修正的方法一並提供給我了...:-D當初我會post這篇文章,其實一方面是為了留記錄給自己看,另一方面就是分享這些好東西給也有在用vim的同好。只是沒想到會有人試了以後會告訴我其中的bug要怎麼修。老實說,這種驚喜的感覺很有趣,也是為什麼我要持續寫blog的原因之一。我從高中時,就在BBS上開了個板,沒事就寫些文章,可能是分享今天學到了什麼有趣的Linux技巧,或是一些給學弟妹的tutorial。寫這些東西很有趣,一來是因為「發表是最好的記憶」,二來是分享常能帶給我很多意想不到的回饋(例如上面告訴我bug怎麼修的好人)。可能有人覺得我很奇怪,平常都不太講話,但只要站上台就刮啦個不停,有時甚至像在傳教一樣。這個「興趣」說起來,也是從高中開始培養起的。高中時我在中一中電研社當副社長兼教學,每天中午除了在社團團部和大家哈啦外,還要給學弟妹上課(教C語言、資料結構,演算法..等等)。教別人本身其實就是一件有趣的事,光是讓人聽懂你的想法,學會你想講的東西,就蠻有成就感的。除此之外,我也從中發現一些意外的收獲。例如我常看書看了一些東西後,其實並沒有很深的印象,過一段時間就很容易忘記。但在跟別人闡述時,常常會突然搞懂書裡面到底在講些什麼。這是很奇妙的感覺,就像是:idea:突然冒出在頭上一樣,這是自己念書體驗不到的。這個感覺在我寫文章時也常會出現。其實寫文章就像在跟別人對話一樣,只是不能馬上看到對方的反應,所以話要講清楚點,細節要多寫點而已。但寫文章有個好處是講話比不上的,因為你可能在腦中把事情想久一點在寫下去,甚至可以不用照順序寫..。對我來說,這是一個整理思緒的好方法,可以讓我對一件事情理清頭緒,也可以幫助我記得更牢靠。胡適和候捷都曾說過「發表是最好的記憶」,其實我也有同感 :-D寫文章除了有些馬上能得到的好處外,其實更大的好處要在分享出去給別人看過之後才能得到。在網路上寫心得分享,或是tutorial,可以吸引到一些跟你有相同興趣的人接近,甚至可以感染別人,讓他們跟你有相同的興趣。這麼一來,玩同一個東西的人多了,就可以互相交換心得、分享經驗,別人學的東西、看的東西加起來鐵定比自己還多得多,因此寫文章來吸引同好是一種能快速形成分享循環的好方法。此外,就像一開始說的故事一樣,也常會有些意想不到的回應出現。這種驚喜不只可以讓自己輕鬆點,也可以刺激我分享更多的東西給別人。閱讀全文