蔡昆翰 (B02/R06, Appier機器學習科學家/前Yahoo實習生)

系友訪談 – 蔡昆翰
採訪者:B07 高偉倫、張翔文
我叫蔡昆翰,我是B02系上的學長,之前在大三升大四的時候去中研院實習,同年11月接著去Yahoo實習,後來碩士期間加入林軒田老師的實驗室,從碩士班畢業以後,現在在找工作並等待兵役。 

Q:可以請您分享在yahoo實習的經歷嘛?
A:一開始我在暑假的時候去中研院實習,實習到一半的時候就有人幫忙推薦Yahoo的實習機會,那個時候Yahoo開的是資料分析的空缺,工作內容主要是分析購物紀錄,從中挖掘有用的資訊並提供給批發商,讓批發商決定之後要進哪些商品。舉例來說,我們會想要知道Yahoo主要競爭對手熱賣的商品,還有我們熱賣的商品,然後他們熱賣的商品我們有沒有進貨。Yahoo主要是想要這些資訊,最好的情況是每天都可以用這些資料來自動產出一個報表。假如真的可以做到的話,就可以在第一時間對進出貨做調整;那個時候Yahoo面試分成兩輪,第一輪是電話面試,面試官會問說你的專長,你主要研究的領域,因為我應徵的團隊主要用Java和Python來寫程式,所以還有問一些簡單的Python運用,電話面試大概30分鐘,如果覺得合適的話就會進入第二輪面試。第二輪就是要到公司面試,第二輪一開始也是先做自我介紹,會問過去主要的修課方向,還有實作過的Project內容,他們會從中問一些進階問題。比如說,他們會問我修過的ML Project中遇到過哪些問題,最困難的地方在哪?從我的回答中會問一些進階問題,比如ML的一些重要模型差別和優缺點;問完以後就會進入演算法的部份,會直接用白板題的方式來考你懂不懂演算法,一開始有一些暖身的題目,對演算法時間複雜度的部份會有一定的要求,解完以後會問延伸的題目,看你解不解的出來;都成功完成後,就會進入最後一個階段,變成你問他們問題,這個部份我原本就有準備一些問題, 比如問他們平時在Yahoo日常工作情況是如何?實習生薪資待遇等等問題,初步了解一下未來如果要在這裡實習,會遇到的一些情況,還有在這裡工作可以學到的能力之類的,面試以後大概過一個禮拜以後就會回覆了;中研院的方面相比Yahoo就沒有那多題目和流程,大概就是去跟博士生聊聊天就結束了,他們主要問我研究的領域。報名方式是每年會有一段時間開缺,每個實驗室大概會招1到2個人。 

Q:對想要找實習機會的學弟妹來說,你有什麼話想要對他們說嘛?
A:找實習機會主要是大二或大三的時候,一般是在2月那段時間大家會開始找,假如那個時候大家是第一次寫履歷表的話,第一次寫時基本上大家都是空白的,不知道可以寫哪些東西,建議學弟妹可以寫以前做過的Project和專題研究等等,之後2月到4月就是投履歷還有面試的階段,以我的認知,Google 2月下旬就開始應徵實習生,接下來還有一些其他外商公司,比如Yahoo, HPE, DELL等等,假如要找實習要盡量在2月4月這段時間。在有應徵想法前就要開始刷題,要刷到你看到一個題目就知道他的解題方向有哪些,比如貪婪法、動態規劃等等,對於這些演算法的時間複雜度,正確性都要熟悉。 

Q:履歷上的project是一般正常修課就足夠的嘛,還是課外需要自己準備side projects嘛?
A:其實很少人會有課外project,大部分人就是寫寫網站或是app,我認為對於應徵實習工作幫助有限。假如履歷尚不知道要寫什麼的話,可以把side project經歷寫上去,但如果有其他實習經驗,比如在yahoo實習,那就可以把前面的拿掉,至於成績的話,如果沒有很漂亮的話就不用放上去,沒放的話除非面試官詢問,不然不會有人說什麼。 

Q:請問當初您是怎麼選實驗室的?
A:大三時我先加入鄭卜壬老師的實驗室,後來在碩士期間加入林軒田老師的實驗室。在鄭卜壬老師指導我專題研究期間,我主要在研究資料索引模型和資料排序。舉例來說,當使用者輸入關鍵字以後,要如何用模型去索引資料並給出「好的」排序,而這樣排序為什麼是對的,還有怎樣排序可以得到更好的使用者體驗。後來大三、大四期間修了很多ML和DL (Deep Learning) 課程,加上近幾年ML逐漸熱門,因此想改做ML相關的研究,申請上碩班後,就聯繫在ML界很有名的軒田老師,經過跟老師幾輪面試後,才成功進入軒田老師的實驗室。至於為什麼想要選軒田老師的實驗室,其實我是用刪去法去選的,像系上有很多導師,有做OS、instruction、user interface還有data mining等等,我會先刪去自己不太適合的選項,像是自己不太適合做user study,也對底層的OS也比較沒有興趣,留下來的選項只剩下ML和Data Mining,接著從剩下選項中瀏覽各個實驗室近幾年發表過的文章,並搭配學長姐意見後,排序自己喜歡的實驗室名單。那時候很幸運,軒田實驗室是我第一順位,和軒田老師聊過以後也覺得還蠻契合的,軒田實驗室滿自由的,老師認為實驗室每個人都要做自己研究,每個人都要知道自己目標是什麼,只要很努力地去完成,其餘軒田都會放手讓我們去做,我認為在很自由的情況下,我可以比較有空間調整自己,不會太有壓力。 

Q:我們對做專題和選實驗室沒有很熟悉,那做專題呢一般來說是怎麼和老師聯絡,是先去密老師,然後老師回覆嘛?
A:我會先看老師研究方向是什麼,像是到老師個人網頁看最近發表的論文,看實驗室最近做過什麼研究,接著我會問自己喜不喜歡做這些題目。假如太多,我會從發表中挑一個我最喜歡的論文並仔細閱讀,問自己喜不喜歡?假如我要做,我會願意做很久嗎?坦白說,我並不是一開始就知道我想做什麼研究,是逐步刪掉不喜歡的選項後,剩下的再跟同學和學長討論,並簡單排序想要加入的實驗室名單。從名單中,我會一個個去寄信詢問,有些老師會很熱情邀請你參加他們的會議,有些老師會給你一些問題,比如軒田實驗室,看你適不適合他們的實驗室。寄的信的內容大概是先自我介紹,簡單提到修過的相關課程,或是對實驗室那些題目有興趣;如果你真的想要做研究,我覺得大二開始滿剛好的,前提你要真的很了解那些必修課程,比如ADA, DSA,不然會很容易被大二課業拖垮,像我有同學他大二下就加入實驗室,大三就畢業了,但是因為他國高中就開始接觸程式設計,也很知道他想做什麼研究領域,比起我們大三才開始做研究,他有很多錯誤嘗試的機會,假如大三加了才覺的不好,那就是只剩下大四的機會可以換,建議可以早一點做專題會比較好。

Q:您剛剛說的是以研究為主,那如果一開始進資工系就是想要未來有好的出路的話,那會建議讀碩士進入研究嘛,還是大學畢業以後就直接去探索?
A:台灣其實沒什麼知名軟體外商公司,最著名的就是Google、Yahoo、HP、DELL、Intel等等,像Facebook、Twitter、Uber等等都沒有在台灣開職缺,如果是要找正職的話基本上沒有,更不用提實習機會,沒有那多公司競爭的狀況下相比國外他們給的薪資就不會那麼高,如果想領高薪的話就要去美國就業,但去美國就有個問題就是你要簽證。最簡單方式就是去美國讀碩士班,並獲取實習機會,前提是碩士課程必須超過一年,也就是實習完還會回去讀書,那你就可以藉由讀書的機會申請實習。如果實習表現很好那你會拿到return offer,讓你畢業後可以直接回去工作,在這個狀況下,你畢業的時候它就會發給你簽證,幫你排隊拿綠卡;大部份美國的碩士班有很多畢業選項,不會要求一定要寫論文才能畢業,但假如是讀博士班,那就要寫博士論文和口試,在美國如果想要就業的話,我建議走碩士這條路,如果想要做研究的話讀博士,在美國讀博士基本上會送碩士,讀博士第二年的時候會問你要不要拿碩士,要的話到時候寫一篇論文當作碩士論文。另一個差別在於,大多碩士名額都要自己繳學費,不像博士有獎學金和學費全免,碩士的話可能學費加生活費一年半要花大概300萬台幣。博士申請主要會看你有沒有發表過論文,有的話會比較能凸顯自己有做研究的能力,要證明這件事情就是要發幾篇論文,所以大三上才加實驗室的話要發兩三篇是有難度的,加上近幾年想要申請CS (Computer Science)的人太多了,要跟中國人和印度人競爭的確很難。

Q:那您的同學中有幾個人在國外讀書的呢?關於當兵的問題,現在有些人說要出國前去當, 我們對這方面沒有了解,如果去美國讀完碩士以後,就業前還要先回來當兵嘛?
A:就我所知,同屆同學中大概有7個人正在國外讀書,有兩個在讀博士,最近又有四個同學要申請博士。 

Q:關於當兵的問題,現在有些人說要出國前去當, 我們對這方面沒有了解,如果去美國讀完碩士以後,就業前還要先回來當兵嘛?
A:我的理解是,他們都是當完兵才出國,想要出國的人如果是有申請上的話,就會想辦法逃掉當兵,那個時候大我一屆的人都是要當一年冰,當一年的都會想辦法不要去當或是當替代役,因為一年兵真的會卡到很多申請的時間,像是要處理簽證面試,還有跟國外教授面試時間,所以他們會想辦法把它避免掉,比如用變瘦變壯的方式,或是用替代役的方式,這樣才有時間來處理國外申請事情,對於像我這樣當四個月的人來說就還好,申請時間大概在12月,公佈時間大概在3月以前,這樣他們最晚公佈完還是有時間去當兵,如果是確認今年六月畢業馬上就要出國的人,一般都會想辦法避免兵役,另一個解決方法是大一大二的時候就分兩個月當兵,這樣以後就不會覺得麻煩。 

Q:所以就算已經決定要出國讀書了,那還推薦交換嘛?
A:我覺得大三升大四去留學半年還不錯的,一年的話可能會來不及畢業,如果當初可以我就會去,或是說大四會比較好,大三必修修完大四就沒什麼課,接下來就是選修了,會很明顯分出兩種人,一種是研究是它喜歡的,另一種就是不喜歡研究的,大家就會開始問想不想要出國,因為大四上就要申請推甄了,大三下大家就有實驗室的經歷了,就大概了解自己是不適合這個領域了,要做研究的人也會分兩種,一種是要去讀PHD,另一種是覺得不夠就要再找實驗室,那種也還不錯的,會比較多元一點,也比較容易去累積人脈還有研究經歷,大三以後比較像是屬於自己個人規劃要做的好,如果做不好耍費的話就會不知道在幹嘛。 

Q:關於外語能力的話,您覺得有什麼是要準備的嘛?我們需要去考托福、GRE之類的嘛?
A:我的理解是,聽力口說這些現在能準備就準備,那不是一個月就能準備完的東西,最近我有聽說一個叫echo method的方法,就是要聽別人的口音然後回想別人發音的過程,腦袋有這樣的回想,嘴巴就會開始模仿它,我聽別人是說每天聽十分鐘,然後持之以恆練個半年一年,這樣最後需要考托福的時候才會有幫助,至於什麼時候考托福跟GRE我是覺得大學不用那麼早考,因為托福的學校只有兩個,然後你需要的時候它可能已經過期了,GRE的話會考冷門單字,它考得其實不是你需要的單字,應該要需要的時候在念在去考,因為台灣人在這樣的教育制度下閱讀跟寫作沒什麼問題,大部分閱讀跟背單字都是很容易,大家都是給你一本單字書,然後一個月很快就背完了,這方面沒有太大的問題,聽力和口說的話是比較大的問題,要如何講像他們的口音然後講的的抑揚頓挫,能表達自己想要獎的東西我覺得蠻難的,這個我比較建議提早準備,考試前的時候再去準備閱讀和單字就好。 

Q:學長您曾去過Yahoo、中研院實習,有發現哪些科目特別有用嘛?
A:我覺得SP蠻有用的,ADA也蠻有用的,因為很多白板題都是要靠ADA,SP的話要看你的工作是什麼,看你的工作是屬於前端還是後端,比如前端的話要處理一些前端的指令,後端 要處理資料怎麼寫進去等等,那就會處理到SP到的Race condition,接下來前端可能有一些socket那你要怎處理有限資源,那SP就會交你要怎麼處理,假如你是做這些工作的人,那就要對SP的一些背景知識有一些了解,但如果你不是做這些工作的,那就還好,可是通常在找實習的時候,大二升大三交的東西也就差不多這些,所以會問的東西也就是這些,基本上對自己的必修要有一些掌握度。 

Q:有什麼事情是你覺得大學應該要做的?
A:我覺得認識朋友很重要,不管學長也好學弟也好。那畢竟幫助你未來,可能你在某個領域很徬徨的時候,你可以問他,因為都是領域很接近的,可以從他們之間找類似的情況。比如說你在想要不要做研究,啊你有很多朋友,可能在美國可以問他,或是你有朋友在你想要工作的領域工作,那你可以問他有沒有職缺可以幫助你內推。所以我覺得從大學就開始認識一些人,不管是系隊也好、project認識的人也好,或是去當一些助教啊,拓展自己的人脈,認識一些對你來說很契合的朋友,未來可能暑假固定吃個飯,對你之後出國、升遷、就業都有很大的幫助。 那關於剛剛講的實習,其實找實習的話我蠻推薦yahoo的。薪水不高,但福利很好。外商給的福利都很好,像yahoo/google啊,他們都會配餐,像我在yahoo啊他會給你早餐和午餐都不用錢,還有下午茶。然後外商基本上很自由,他不會想要讓你太累,會有一個週期來衡量你的工作內容,然後領導員會很完善的評量說這禮拜你的工作時數是多少,並分配你該有的工作內容。基本上六點多到七點就是下班時間,我的mentor就會問我說要不要去打羽球。差不多六點10幾20幾就會背著羽球拍來說:「欸,差不多走囉」,然後去飲料機那邊拿一些舒跑。Yahoo的福利是真的很好,只是薪水相較於google低了點。外商基本上我都還蠻建議去的,因為他們會把實習生看待為正式員工,正職員工的福利是什麼他就給你什麼,所以我蠻建議在找實習的時候找外商公司的。但其實台灣有些外商不是這麼優質,台灣很少能找到像美國一樣福利的,這就是為什麼如果你想要正職的話去美國比較好,畢竟他看重你的程度沒有那麼重。 

Q:所以台灣基本上還是硬體為主嗎?
A:就台灣那些廠比較有。但是軟體的話,基本上他們說他們找軟體啦,但可能沒有你想像的那麼軟,因為你想像的軟體不只是寫驅動程式那些,像google在台灣是做硬體的。那如果你不想要寫驅動程式這種的話,你可能去東京、新加坡那邊才會有。(所以那邊也是一個除了美國之外的選擇?)對,但是難度就高。我有一個學長和兩個同學現在在日本東京,然後都是在google。但是這三個人都是有打過競賽的。(所以要到那樣的程度才能…)對,像美國就是比較屬於我們一般人的路,就是你想要去美國的話,我接下來講的話是一般人可以做的。 首先就是,先把你的成績刷到至少3.8以上的水準,但建議你是在3.9以上,4.0最好,然後自備400萬,去讀書,在讀書的期間你就要開始刷題,總共Leetcode 1300多題,建議你刷到800題,就是你要對所有的演算法都很熟悉,然後你一聽到一個題目就能聯想到某個題目。然後因為你刷到400題以上,到800題的時候,基本上你寫扣應該是不會有bug。因為你在刷題的時候必須要了解data structure要用什麼最好,譬如說有些題目就是要用到heap,然後跟演算法結合有的沒的變成一個hard題目,你刷久了就會對你自己程式的品質,或是邊際條件之類的比較有信心寫出沒有bug的程式。然後你到800題以上的時候,你才有辦法看到一個題目聯想到什麼題目。這個時候你去面試基本上就比較穩。但我不知道其他一般人刷了多少題,我看Leetcode上面會有分享,他們都刷好幾百題。 然後接下來你就去面試,因為美國現在也是太多人在找工作了,他們有個叫做campus job fair,你就去參加然後找一些公司投然後去面試,面完後你就去拿到實習,盡量表現好一點,然後拿到return offer,就是畢業之後你可以回去工作。畢業後回去工作return offer,他還會叫你面試兩三關,面過之後你就可以拿到正職。一般人的話是可以做到這樣的事情,就是我覺得只要你是台大畢業的,然後你很認真刷Leetcode,就有辦法做到這件事情。那假如你不是的話,你說不想刷題不想去美國讀書,那你想要台灣畢業直接去日本東京、英國,這難度就是除非你是有打過比賽的,不然他沒有理由想要面試你。 

Q:那你覺得如果去美國兩三年之後,有回來台灣工作的必要嗎?
A:看個人,其實他們去美國的都跟我說台灣其實不錯,就是他們覺得吃跟住台灣還蠻不錯的,畢竟是你土生土長的地方,然後吃得也很好。他們那邊吃的聽說真的很糟糕,就我的學長每天只吃鼎泰豐,啊也沒到每天啦。而且他每次結束都會去買珍珠奶茶,然後再抱怨說珍珠奶茶很難喝,而且一杯超貴的,一杯好像就要十鎂了吧。然後他們跟我說你去那邊賣華人的餐車很賺錢,因為華人餐車很好吃又很便宜。他們說那邊税是重,但一個人的話好像還好,你不養孩子的話在美國工作算是賺,但是你養孩子的話你要負擔孩子學區的教育費,就算你的小孩還沒有上學,你必須要付那個學區小學的費用,等到你小孩可以上小學的時候你可以免費上,但是等到那個時候你就已經被錢拖垮了。接下來必須要付的是房地產的稅,聽說那個稅也蠻貴的,所以說在美國結婚、生小孩、買房子,對一個人的話是很沈重的成本。但假如你一個人,租屋就還好,一個月好像一千到兩千吧,那你一年是賺十六萬鎂的話,因為你母數比較大,扣一扣賺的還是比在台灣存的還多,所以看你未來的打算決定要不要回來。 

Q:那如果只考慮去美國讀書,但回台工作呢?
A:我覺得就蠻虧的。因為你在美國讀碩班回來工作跟台灣讀碩並不會差很多,(所以台灣碩士跟美國碩士其實沒有差很多?)假如在台灣找工作的話,沒有,不會比較好。台灣人會覺得你很奇怪,怎麼這麼快就回來,因為你美國讀書基本上就是想要拿那個工作簽證,啊你回來薪水也沒有比較高啊。(所以可以說如果你沒有要在美國工作就不用去美國讀書嗎?)不用,我是這樣覺得啦,通常都是因為想要去那邊工作才去那邊讀書。我覺得做研究也可以嘗試看看,主要是看自己真的適不適合,畢竟研究也是需要有演算法那些背景知識,不適合你還可以退回來。 你們這屆很強的可能大二下你就會發現他們去google實習,那你看了可能就很羨慕。其實我覺得大二下就可以開始找研究了,大二去修專題並不需要要求自己做出什麼東西,我覺得比較需要的是嘗試的心態,看自己到底想不想要做這種事。盡量越早接觸越了解越好,也不用對自己太苛刻一定要做出什麼成果。那是給那些早就修完OS/ADA之類的大神做的事,像我們這種有負擔的,我覺得不需要要求自己一定要做出什麼,可以先抱持一個嘗試的心態,去了解自己到底要不要。 那怎麼了解一個實驗室,就是去看教授的個人網頁,去看一下他最近發的論文,最簡單的方法就是從他找的東西裡面選一個你最喜歡的,可能是報告也好、demo網站也好,去看這東西是不是你要的。你這樣就大概會有一個雛形說這個實驗室大概是在幹嘛。(所以就直接寄履歷給教授跟他講我想進就好了嗎?)喔專題不用付履歷,只要寫信問他一下,提一下你做了哪些功課,展現一下誠意就好了,不會太嚴苛。 那在寫履歷的時候常常不知道要寫什麼,因為自己沒什麼經歷,所以早點開始拿別人的履歷來改改看是好的。在排版、內容和用字遣詞上,可以從別人的範本學到很多。最主要是大三啦,因為大三實習蠻重要的,通常是二月開始找。基本上從google的網站之類的。至於新創公司,基本上你要做好一些踩雷的準備。我是比較推薦去外商,理由就是他們會有比較好的team project合作方式,會有比較完善的流程。他們一開始在計畫這個project的時候就會有比較完善的計畫。那新創的話我聽到的就是說給你一個project,在某某日之後要收到成果,沒有那麼多的計畫,所以我覺得去外商的話會比較體驗到一個完整的軟工流程。 

Q:那你當初有考量過去國外讀書嗎?
A:有欸,我有想過去讀博士班,那後來我做一些研究,發現自己做得不是那麼順利,然後我就看一下我同學申請的結果,發現今年要兩篇以上的論文才有辦法申請上,然後那種兩篇都是要國際級期刊的水準,我就覺得我這種能力是沒有辦法的。然後我又想說那能不能碩班,就看一下存款、經濟狀況,發現不是那麼的允許,就沒辦法了。覺得有點可惜是大學時沒有拿台大學費去國外留學,這樣子就沒辦法出去外面看看。我覺得早一點做決定好像比較好,假如從頭來一次的話,我會早一點做決定,看自己到底是不是研究的料也蠻好的。因為研究做完有一條路就是進外國公司的研究部門,像是deep mind/google brain,這些人通常都是要求要PhD畢業,你如果真的很喜歡做研究的話就適合讀PhD。那另一種方向就是應用,那應用基本上就是看實力,就不需要讀PhD,錢砸下去讀研刷學歷。我覺得重點就是要看自己有沒有辦法出國,早點嘗試一下,可能大三做專題,大四12月前就可以開始申請國外學校了。所以才說早點做專題,早點篤定自己要幹嘛,早點看自己適不適合比較好。 

Q:有什麼想對大二生說的話嗎?
A:反正大二大三嘛,就把研究經歷跟實習經歷這兩個東西都弄好,把自己的課修好就好了。像我那時候大一修課有一個很奇怪的現象,大家都會比自己的學分數,那時候覺得自己要修二十幾學分才是應該的。但是後來大二的時候二十幾學分,好像系上的必修就修得不太好,通識修一些雜七雜八的。我覺得修你自己可以負荷的量就好,然後盡量保持在A-以上。我覺得A-在系上其實不難,保持自己的分數,讓自己對某個領域越來越了解才是你接下來要做的事情。戲外的課就加減修一修,認識一些不同領域的人。

這個網誌中的熱門文章

王瀚宇(R02網媒, 赤燭遊戲共同創辦人)

林于智 (B01/R05, Google Software Engineer, Youtuber [史九87])

劉邦鋒 (台大資訊系教授)