首頁‎ > ‎

讀別人的Code,去讀別人的程式,去看懂它。

1.Code的基本概念

2.閱讀別人的Code
3.自己不斷的coding


黃美玉(Microsoft)

http://csiecomm.blogspot.tw/2014/02/microsoft.html

訪談對象:黃美玉學姊(台大資工第六屆)

訪談時間:2013年12月14日

訪談人員:梁惠賢(b01902123) 盧俊輝(b01902127)

背景:台大資工系畢業,於CMU取得博士學位,現任職於Microsoft.


當初為什麼會選擇唸資工系?

  當初為什麼唸資工系啊,因為我覺得不是唸電機就是唸資訊嘛。我是想唸理工科的,不是理科就是工科,當初想就是工科容易找工作,那麼資訊跟電機兩個要選擇的時候,我覺得資工系比較適合女孩子吧。

那麼你讀這個系之前,有寫程式的基礎嗎?

   沒有,我們那時候資工系才第六屆,然後交大的資訊系好像也才第二、三屆,那時候台灣在資訊系還是才剛起步,甚至於我們的師資都沒有純Computer science trainning出來的,都是別的系啊,數學系、電機系的老師過來充數的,所以我們那時候師資不夠充裕。那高中、初中更不可能有甚麼編過程式的經驗的。


那沒有基礎讀起來會有遇到甚麼困難嗎?

   不會。這個學東西不光是在於你的年紀。我是學資工的,今年剛滿五十歲,如果我今天打算去做生物化學,真的有興趣,我現在就去學,也沒有甚麼吃虧或跟不上啊。這完全在自己Self-driven,自己的Motivation,自己想不想學而已。我覺得這個沒有差別,你夠聰明,你願意學,一下就可以Pickup。但是如果你基礎不夠,又不願積極進取,那就真的困難了。

系上有的同學沒有寫程式的基礎,在學程式方面可能會遇到一些困難。對於這方面有問題的同學,你會有甚麼建議?

我覺得寫編程式有一個,
我自己感覺很好的學習方法。

剛開始要讀那個最基本的書,
例如C++的那個專門的書,
Hello world的這些。

大概讀完一個Chapter就會有基本的概念

然後自己可以編寫一些很簡單的程式
不要太難。

然後再下來,
你要去讀別人的Code,
去讀別人的程式,
去看懂它。

最好是讀高手寫的程式,
那可如獲至寶,
功力很快就會上去的。

當然最後還是自己經歷過一次又一次的coding
一切技能才會變成自己的,
運用自如。

我發現自己的工作上招進來的新生,有些人很奇怪。
如果說我給他一個任務,叫他去編程序,他自己可以編。
他就會自己想我要怎麼Design我的Data structure,我要怎麼寫。
但是假如我今天是已經有某一個人寫好的一份Code,
然後那個人已經離職,
或者現在是assign去做別的工作了,
然後新進來的員工再接手別人的工作,
他卻沒有能力去讀懂別人的code,
然後去把它吸收過來再Improve。
這個是一個很奇怪的現象。

我覺得很會寫Code的人,
也應該有能力去看懂別人的Code。
所以一個學習Coding的方法,
是要去讀別人的Code,
而且是要看那種好的Code。

譬如說你知道說某某學長或學姐寫的程式,
大家風評都很好,
你就去看那種好的Code。

我當初在CMU唸博士班博一的時候,我就是看李開復的Code。首先,你要先唸理論,像是我們那時候做語音識別,是用HMM那個Model。我先把那個基本、基礎理論看懂了,然後再去看他的Code,知道說他是怎麼樣對應,怎麼樣把理論對應到我實際、真正拿到的Data,怎麼樣去Match。其次,我在看他的Code裏頭,有一些地方,他用了一些很聰明的Trick。那種聰明的Trick,有可能是他自己想的,也有可能是去網路找的。網路雖然能找得到,但是要知道用甚麼Keyword去找,這是很困難的。所以你看那種很會寫Code的人寫的Code,你就會學到那種很好的技巧。

譬如我知道台大資工系的林智仁老師,現在有一個SVM,很多人在用,很蠻受歡迎的。所以我猜他的Code寫得不錯的,像那種Code就值得讀。但是那種Code要讀得懂的話,一定要先唸SVM的理論,然後才能看得懂。那這個不是那種剛上大學的人可以看得懂的。因為這個還有理論基礎要先學會,我只是舉個例子。但是你要是大學生,想看看人家怎麼編程序,大一的就去找大三、大四的學長,問他以前有沒有做過甚麼Homework,那個Homework題目是甚麼,你先把題目弄懂了,然後看看人家的Code。我覺得這個對於一個學生學習自己編自己的程序是有幫助的。

你覺得有那些課對將來的工作會有幫助?

我覺得學資工,大致分兩類,一是專門走軟體工程。軟體工程的話就是要很會寫Code。通常學硬體的人比較會碰到那麼Low level的Code,我們資工系大概都是寫High Level的Code,你用C++、C#或是Java這些Language去寫。那寫這些Code,如果你是從事Software Engineering,Coding很重要。Coding要寫得好,邏輯、推理的能力要清楚,你寫出來的程式才能夠比較Logical,別人看得懂你的Code也看得比較容易。所以假如你只是純粹走Software Engineering的話,Coding經驗很重要,Coding base on your logical trainning,所以一定要做一些邏輯的訓練。我們以前大學大一的時候,邏輯是必修課,是哲學系的老師教的,他講得比較理論性。當初我看不懂我這個邏輯跟我每天在做的這個Program有甚麼關係,但是事後寫了這麼多年Code以後,覺得寫Code的也是需要邏輯能力。不過我不確定,去修一門理論性的邏輯課,就一定能幫助你的邏輯思考。我覺得當偵探需要極大的邏輯思考能力。或許多看點福爾摩斯書籍,會有幫助。

另外一種是要走比較用數學的模型去做Research的。現在最Popular的Topic,Machine Learning,建議最好去修一下。Machine Learning 就是用一些統計學的方法,然後根據你收集到的Data,去推導,去Predict你還沒有見過的Data。譬如說,氣象預報。你收集到很多資料說氣壓怎麼樣、濕度怎麼樣,那麼明天下雨的機率就怎麼樣。所以The Probability of going to rain tomorrow是一個Function of底下幾個Variables,一個是當前的濕度,當前的氣壓等等這些因素,然後就根據以前幾十年來,或是幾百年來Collect的Data,怎麼樣用這些參數去Predict下一天,這是要用統計的方式。如果學這個東西的話,統計學一定要學。

現在Machine Learning 是非常非常Hot的一個Topic。因為你如果數量很多的話,你可以找到一個最佳的方式,去Predict下一件事情會發生的機率,With the minmum prediction error。這種Machine learning 的Approach不管你用哪一個Algorithm,現在是Apply到很多很多的領域證明都是可以Work的。所以如果你們想走這方面的話,一定要修統計學,然後數學要好。那你剛開始學的時候就是去上這些課。上Machine learning的課的話,就去學一下說甚麼樣的問題用甚麼樣的統計學方式去解決,有甚麼樣的結果。

將來你唸的PhD的時候,要培養自己有這個能力說我今天發現了這個問題,那你怎麼樣去Formulate這個Problem using a mathematic formula。當你把一個Problem用一個數學式子表示之後,要修微積分,你就可以微分,然後看看可不可以導得出來一個Close form的solution,去找到你最佳的參數,找不到的話是不是用那個牛頓求根法或是Approximate的一些數值分析的方法,去盡量去找到至少一個Local optimal的Point。

所以如果你要走Machine Learning,統計學這方面,你要學統計學、微積分、Machine Learing。這些對我現在的工作來講,這些是非常非常需要的。但是如果你是要走第一條路,軟體工程,寫寫Code,這個數學沒有那麼重要,邏輯比較重要。

你覺得台大的資工系的學生比其他地方資工系的學生有哪些優劣?

台大一般來講有它自己的文化背景跟歷史背景,進入台大的學生對自己都有一定的期許,所以再怎麼差的系也有一定的水準。我們講台大資工系跟電機系,因為這兩個系比較接近。我覺得跟台灣其他大學的學生相比,台大的學生一般來說是比較優秀的(當然會有例外)。




但是我跟中國大陸的學生接觸也很多,我可以說中國大陸最近這十幾年來,進步得非常非常快。這是一個Youtube採訪,講述今天中國大陸的發展情況,它不是講學術界,講的是工業界。因為我現在人在大陸,剛好來中國大陸工作滿一年了,我一年看到的這些東西,跟這個Youtube 這段Video講的,我非常認同這一段影片的內容。我很鼓勵大家好好聽聽這個影片。

整個中國大陸,就像美國的那個矽谷一樣,美國的矽谷是全世界IT,Technology最活躍的地方,然後很多小公司,StartUp。很多人自己有一個Idea,不願意去當人家的員工,選擇自己出來創業。剛開始你要有那個天使投資客幫你投資,然後你就慢慢做大,有很多公司都是從小開始做起。像apple從家裏車庫開始辦工,美國 這種從小公司到成功的這種例子很多,所以在加州,矽谷那邊,很多有錢人願意投資這種小小的公司。

今天很多這些投資客,都是來自於中國大陸的有錢人。在中國大陸國內,到處都是這種StartUp。甚至於政府都非常鼓厲你出來StartUp,你有什麼好的Idea 就出來創業,然後政府會給很多的那個資金的獎勵,會給你一個StartUp 的 Funding。它也很鼓勵國外的人進來中國大陸,它會給國外人特別有一些激勵。比如說現在我是從美國過來,出來創業,那我可以申請,很容易就申請到中國大陸給我個五百萬、一千萬的人民幣的這種補助。所以整個中國大陸在工業界非常非常的活躍。

然後這段Youtube 就是告訴你說,中國現在有哪些Amazing ,中國人口多,教育也非常的普及,能夠上網的人,會用網絡,或許是手機的人,那都是幾百個Milloin 當作單位的。因為工業界這麼活躍,學生如果只是唸Undergraduate大學部的學生,都很容易在業界找到工讀的機會,去看看業界需要怎麼樣的技術,看看業界想的是什麼,現在最紅的Topic 是什麼。

這些學生從大學一直到碩士班、博士班,都是在業界有很多工讀經驗的。這和美國很像,這些工讀經驗除了讓你看到外面怎麼做,讓你真的是做實際的產品,有寫Code的經驗。所以我覺得這些年來,一般來說中國大陸的學生畢業程度, 比我們台灣畢業的程度還要好。

所以這個台灣真的是要能夠自覺,我知道台灣現在有一些制度,就是送台灣的學生到國外做交換學生,這是很好的。但是交換學生到另外一個學校,畢竟還是學校,台灣能夠到業界去工讀的機會還是少。而且台灣的業界做的東西,一般都是別人已經研究好的,然後你去讀他的Paper,再重新做一遍。在中國大陸因為很多外商投資,像微軟這種外商進來,所以慢慢改變中國國內一些大公司像百度、騰訊。這些大公司現在也開始很熱烈的參與國際的conference的活動,他們也會送他員工去這些Conference、或者是去visit,也會讓很多大學部,碩士班的學生過來做 Intern。這些公司,他做的就比較前端,尤其像Microsoft 做的。你來Microsoft 來當 Intern ,別人可能一天只工作8個鐘頭,你工作8個鐘頭只是把你份內事情做完,如果你還想學點別的東西,跟你工作可能無關,都可以找到專門的人教你。

所以你到工業界,尤其到那種比較前端的工業界去工作,你可以學到很多很多的東西。中國大陸,有着這麼多的公司, 提供學校這樣一個很好的環境,我們台灣還是缺乏。我前一陣子,有找一個台大的學生來這邊工讀,但這是剛開始起步。我是希望說,台灣要把眼光放大一點,不要只是在國內看到而已。國內的Training不是不好,但是你一直在同一個學校裏頭,你看到的就是那個學校的Style 而已。你沒有去接觸過別人,也沒有到業界去看過業界到底需要的是什麼。



你當年是排球校隊,現在你還有沒有做運動?

有啊,我現在還打排球啊。 排球這種東西啊,就是會打跟不會打差別很多,排球是需要受訓的。你沒有受訓的人的話,除非你很有運動細胞,否則對你來說排球是很Suffering,因為打起來很痛,什麼的。 但是我覺得只要受訓過會打排球的人,一輩子就會愛排球。你跟本不可以跟這個運動失去聯絡的。你會沉迷的。我也很喜歡書法、國畫和園藝。只是還沒有學會怎麼在百忙之中,把這些也穿插到生活之中。那也看出去,排球在我心目中還是占著更重要的地位了。



怎樣分配學習運動的時間呢?

你們現在可能課業比較重吧, 因為我覺得現在師資很好,我好幾個同學都在資工當教授,還有幾個學長我認識的學姐的。我覺得我們那時候師資不夠,我到大四我就沒課可修了, 所以我大四的時候就在工讀,我一個禮拜有兩天根本不在學校。我覺得我那時候功課沒那麼重耶。我覺得師資不夠所以很多東西要自己學,我的C也是自己學,有很多課都是自己看書自己學。

至於分配時間,身體一定要好,這是第一。所以我覺得我打球其實對我是只有幫助,沒有壞處。因為我們那個球隊訓練是Regular的,不是說偶而打一次的。我們練球每個禮拜兩次。 然後到了大專杯比賽之前,又有集訓,這樣訓練下來,體力就比較好,所以我很可以熬夜。而且我做什麼事情都特別興奮,我喝咖啡沒有用的,我只要累,我喝完咖啡我都可以睡覺。 喝什麼都沒用的,我累了,我就睡;但是我要醒來,我想說我今天想學什麼,我今天想做什麼,我就興致勃勃, 我就真的全力下去衝。

我讀一些喜歡的書,比如說這個Switching theory,我不知道你們有沒有這門課,我們以前是必修課,然後那時候用的那個教科書,很難。教的是一位老教授, 他教得不是很好,但是他選的這個教科書很好。那個教科書就是從那個理論,到練習作業,後面有Homework,非常非常的邏輯,很容易Follow。然後它後面那個Homework,Homework都是optional ,老師沒有指定我們做,但是那個Optional ,老師有指定我們做幾題,但是,他每一個章節,Homework 是很多的,有一些簡單的,有一些很難的,然後老師一般都是挑一些比較中等的給我們做。然後我做完了之後,我還自己去 Challenge 自己,挑一些一兩題難的。那我當初不知道,這種教科書其實都有教科書那種Solution book 可以讀,我不知道有這種書可以讀。所以自己要去絞破腦筋,那這個跟老師指定的功課無關,是因為我喜歡這門科目,我自己會花時間。我想如果你找到自己的最愛,你也會這樣的。

所以我剛剛也在講,中學的時候沒有寫過Program,現在才上資工系,現在才學Program不會比較吃虧。你自己想學,你就會去很賣力去學,你早學晚學一樣會學會。假設,你今天資工系畢業,你大學時候都沒有做過 Intern ,另外一個人,也是資工系畢業,但是他大學的時候在外面做過Intern,他寫的Code 比你多,你這樣去應徵的時候,去應徵一個工作,那有經驗的那個人肯定會比較吃香,這是 First Impression 。但是如果說,那個公司有兩個 Opening ,他兩個人都給你僱進來,然後僱進來之後,你自已也非常賣力,你可能第一年表現沒有另外一個有經驗的好,但是你自己很 Motivated ,你自己學習得很快,你有可能第二年就跟上啦。

這是你個人的Self-drive, 你自己願不願意說,像我就是。我可能是一個偏激的人,我有興趣的,我就拼命拼命往前衝。像是 Switching theory ,我很喜歡就拼命做,老師沒有交代的,我自己也做。然後另外有一門課叫電子學還是什麼的,那個完全就是Hardware,講電子那個 Transistor什麼什麼,電流這個方向那個方向,第一,我沒興趣,第二,我們那個老師超級爛, 用的書也不好。那個科目我就差點被當。

你將來出去找工作,我不能保證,每一個 Interview 你的人都是這樣看,如果是我Interview 你,我要的是 Machine Learning Background 好的人 ,然後你這個電子學很爛,你這個英文是普通,你英文不能太爛,因為我們這是美國公司,美國公司我們會經常會需要跟外國人Communicate 。英文還可以,你電子學不好,這些我根本不管你的。 我要的是你我需要的專科方面你好不好,你邏輯思考怎麼樣。

但是我不能這樣的告訴你,然後你就說:好,我不喜歡的科目,我就隨便過關就好了,到時候你申請學校申請工作,被叼難說:都是那個黃美玉學姐害的。

我就可以講,我個人是這樣子,但是,我一般來說,是盡量均衡發展,我是碰到那種很討厭的科目的時候,我實在不知道怎麼辦的時候,我才會放棄。這個電子學跟甚麼經濟學,這兩個科目是我唯一放棄的,這是勉強過關的,其他科目我沒有放棄。我國父思想也考得很好,我覺得國父思想因為要背書嘛,我很討厭背書。但是我可能運氣比較好,我們那時候期末考的時候老師問了一個題目,然後叫我們發揮,我就決定豁出去了,我就想說反正這個科目我本來就很討厭,考試也大概考不好的,我就發表自己的意見。我自己的意見不一定跟孫中山一樣、不一定跟現在當政的一樣,我就洋洋灑灑寫了一大篇。老師很欣賞我,還給我蠻高分的,所以我國父思想還好。中文也還好,我一般課程都還是蠻balance的啦。就是一兩個科目我實在是沒辦法的,這個我不喜歡就是不喜歡,這個我覺得強迫自己唸下去我就開始哭了,只好投降。




在升研究所跟出來就業你怎麼選擇?

我自己出身寒微,所以出國讀書,當初只有一個想法,如果不是很好的學校給我奬學金,我就不出去了,我自己想得很清楚。我覺得你自己的前途自己要想清楚,去不去。我當初就想,要不然就留下來資工系唸碩士班,要不然就出去工作,那如果我要出國的話,一定要讓我覺得值得去的,如果是一般的學校,那不一定比臺大好啊,然後我又沒錢。如果美國學校不給我奬學金那就別談了。那剛好是因為申請到CMU的奬學金,這是美國top three 的學校,沒有理由不去的。但是我當初是已經考了碩士班了,我知道說如果我學校申請不好,我可以留下來諗碩士班。




所以當時已經決定要唸碩士班?

不是不是。我是這樣子。我大學畢業的時候,工作了一年,留在在系上當助教,因為你申請研究所,你要甚麼老師的介紹信啊,還要準備很多材料嘛。我大四就在外面工讀,已經太忙了,我已經沒有時間弄這個,還要考TOEFL,GRE。我這個背到英文生字我就很頭痛的,我是一提到背書就想哭的人,我實在是沒有那個精力去處理這個TOEFL、GRE,然後甚麼申請書,甚麼甚麼這一大堆事情。這是其一,所以我沒有大四的時候申請,我畢了業一年就當助教,一邊工作一邊弄這個。然後第二個原因是,你申請學校要交申請費,我這個窮書生,大學工作的錢都是交學費去了,所以我一毛錢也沒有,所以我就利用工作的時候,那個每個月月薪存下來,然後到了要寄那個application form的時候再付錢。所以我一方面是沒時間,一方面是我沒錢,還得貼補父母家計,所以我就留在系上工作了一年。



那麼我想問一下關於你的工作的內容,聽說是語言翻譯,可以介紹一下你的工作嗎?

我現在是做Language understanding。Language understanding就是說,有個人講了一個句子,講了一句話,譬如說,我想從北京飛臺北,如果你做語音識別,那你就出現這些Character,你就說我想從北京飛臺北,對不對,你就把這個文字弄出來,可是你不知道它的意義,你必須要知道它的意思是說,我需要去訂機票,然後我的出發是北京,我的到逹點是臺北。對,這個要去了解這個語意,所以叫Language understanding。我現在做的是這方面,我之前最開始做的是做語音識別。做了大概從博士班一直做,在微軟做,大概做了二十年,然後換成機器翻譯做了四年,然後現在做Language understanding做了一年多。




除了國語和英文外,您還會其他語言嗎?

我會一點點日文,大學的時候修過一年,可是, 那一年我常常翹課,所以其實我什麼也不記得。那個時候修日文,是因為每個人都說那門科目營養,老師給的分數都很高,我覺得滿悲哀的。然後我去上課,沒有興趣,我這個人就是比較率性,沒有興趣我就是上不下去,就常常翹課,翹課的結果就是不怎麼樣,所以我也不記得了。

然後後來是在微軟工作的時候,我們要做 speech recognition,我們從英文開始做,做完以後要開始做別的語言。那時候美國人的想法就是:我要不然就去做歐洲語言,因為美國跟歐洲的經濟貿易很多,那要不然就是做日文,因為他們也覺得日本也有錢。 那個年代,台灣也好、中國大陸也好, 沒有人花錢買軟體的。所以他們就不願意做中文,所以就做日文。那要做日文呢,我們組沒有人懂日文,所以公司就讓我們修日文課;所以我就修了一年。這一次,碰到好老師,我學得很起勁,融會貫通。修完一年之後,我那時候離開微軟, 我去了University of Washington。我離開微軟之後,我自己還自費繼續修同樣的課,修了一年,所以我日文總共修了二年。



對於你的工作來說,你會覺得只要會英文就夠了嗎?其他語言呢?

英文是必須的,因為你不管是做學術,或者做生意,你都要會英文,比如說將來你在公司工作,或者是你自己開公司,你最後的市場不會只限制在國內而已,你一定會弄到國外,那國外,你不管跟哪一國人作生意,或者歐洲、亞洲、那個中東那些國家、東南亞、美國,都會講英文,你只要會一個英文,就可以跟這些其他國家溝通了。所以英文變成是,我覺得是必修的。

我覺得從資工系的角度看,我覺得其他語言沒有那麼重要。比如說我們現在做語音識別,我們其實做了二三十個Language,如果做我們做到意大利文,那我們去找懂意大利文的Linguist,我們做語音識別只要知道說,每一個Word,它分成多少個音,比如說,中文的話,我們用ㄅㄆㄇㄈ... 有37個音符,然後你只要知道這37個音符是什麼,怎麼樣把它拼成音節,有多少個音節,你只要知道這些基本的理論。 所以我今天要做中文,我就去找一個中國人給我這些Information, 我今天要做意大利文,我就去找意大利人給我這些Information,that’s all。所以,我覺得,學外語不是那麼特別重要,但是,是看你個人的興趣,你有興趣你多學沒有壞處。我女兒會中文、英文、西班牙文、法文,她會四個語言。學習要符合興趣,你就會學得快,學得開心。是不是對未來事業有幫助,我覺得是其次。

學語言是你自己的motivation,但是英文是必須。然後我剛剛說,我們台灣的學生不如中國大陸的學生,可是有一點台大的學生比中國大陸的學生好的是,英文比較好。中國大陸他們這邊,所有的IT的課,全部都是中文,中文教科書,每一個名詞都是中文,然後老師連原來英文名詞都沒有介紹。剛開始的時候,我interview那些學生,那些學生就這樣洋洋灑灑從頭到尾到跟我講中文,裏面一大堆名詞,我完全不知道他在講什麼,我說,你停一下,你剛剛講的是什麼字,再講一次,然後他又講一次,我說請問這個英文的名詞是什麼,然後他就楞在那,他的態度就是說:為什麼問我英文名詞,我怎麼會知道。那這個很不好的。

假設你今天是唸PhD,做Research, 你的文章如果不是英文寫的,只有中國人讀而已,it’s not going to be recognized。你的文章一定是要用英文寫的。那你自己做的東西,連英文名詞都不會,你怎麼寫出一個英文的文章,不可能嘛。



有在工作上會遇到甚麼因難嗎?
一個是學術上,譬如說我們從Speech recognition變成Machine translation好了,我從Speech recognition己經換到Machine Translation,完全是一個新的領域。我要去開始學,我要開始去看這個Machine Translation的理論是甚麼。後來發現跟Speech Recognition很像,所以我從Speech Recognition到Machine Translation,換得很快,一下子就PickUp了。然後Again,Self Motivation,如果我要學的東西我有興趣的,我就是全力以赴。不是說因為我老闆在旁邊逼才要這麼勤快的。我當初到Machine Translation的時候,要學Machine Translation的理論,要看別人的Code,還要學C#,因為我以前都用C++,突然間變成C#,所以我一下子就要學三個東西,我就拼命學,越讀越高興。
我有東西學我就高興,後來還要學Big Data,因為Mahcine Translation它也是Statistical Model,只要是Anything About Statistic,就是要大量的Data,你碰到大量的Data的話,你就不能一個機器去處理那個Data,你處理了老半天的做不完,有時候不光是時間的問題,有時候是Memory根本不夠,你再大的機器也容不了那麼多的Data,所以你要做那個Mapreduce Big Data那個Processing,所以我要開始學Mapreduce,學這種東西很好玩。
寫那個Code跟寫傳統的Code完全不一樣,你的思維完全要改。學有甚麼因難,因難就是說你每次碰到新的領域,或新的技術,你要很快的PickUp。然後你PickUp的時候,有時候我是可以自己PickUp,有時候碰到一些比較難的,我還是會去請教別人。那我就覺得說在Microsoft的工作,一個最大的好處就是它甚麼人才都有,很多很多比我還更聰明的人。所以我不會我可以找得到人來請教。我覺得這個Stimulation,我在臺大沒有找到很多。我覺得我在台大唸書那四年,唸到大四真的很boring,老師不能給我Stimulation,我沒有課可以修,我覺得我的同學對我的Challenge不夠。然後我到美國來,到CMU唸書,到Microsoft工作,真的碰到太多聰明的人,自歎不如。自歎不如一方面很難過,可是別外一方面很高興就是說,我知道我只要果碰到甚麼困難,我絶對可以找得到人,他知道怎麼樣幫我思考。



是因為有興趣才轉換領域?

Both。一方面是有興趣,一方面是剛好工作需求。譬如說我現在在做language understanding,這個Language understanding的input可能來自於User Typing Text,也有可能User用說話的,那你要經過Speech Recognition才能得到那個Text。然後他們就看看我的經驗說,你做過speech recognition,Speech Recognition學了很多那個Machine Learning的經驗,可以Apply到別到Field的。雖然是不同的Field,所以你看我從Speech Recognition到Machine Translation 就轉得很快,因為Speech Recognition那些基礎可以Apply到很多領域去,所以他們就說你有這個基礎,你有speech Recognition的經驗,所以You are the best person,Best candidate for this job,然後就叫我去做了。那我想我Language Understanding我沒做過,但是我稍微看一下那些理論基礎,是很多Machine Learning的東西,也不會比Speech Recognition複雜,我說好,我覺得這個我可以學。然後我就Take了。所以一方面也是興趣,一方面也是剛好工作的需求。




那想問一下當初你為甚麼會選擇去Microsoft?

其實我當初一直覺得我CMU畢業應該是回台灣教書的。我從來就沒有想過留在美國。那後來留在美國是因為我小孩的關係。那留在美國的話就很多工作可以去了,因為當初有很多公司找我。但我怕冷,所以我東岸的工作我就全部都劃掉不要。我就只選西岸,那西岸當初因為我的指導教授已經來微軟了,他很希望我過來,因為我跟他,我做的論文的東西他想要帶到微軟來,那我做的部分,他理論上懂,可是他從來沒有碰過那些Code,所以他如果要從頭看,自己弄過去的話,要花的時間力氣太大了,所以他就一直拜托我,他就說,你就過來這邊吧。所以我就到microsoft,然後把那個我所以PhD的System通通帶過去了。




在Microsoft裏工作的氣氛,感覺怎麼樣?有挑戰性?

是的,很有挑戰性。我是1994年加入Microsoft的,那時候Microsoft的步調很快,今天想要做甚麼,然後就很快做做做,做甚麼事情都很有效率。現在的公司已經大了太多倍了,我覺得現在一樣是有挑戰性的工作,但是他甚麼Product從這個Idea形成,到執行,到最後把Product送出門,這個Cycle實在太長了。我覺得任何大公司像Google慢慢越來越大,這種問題就會越來越嚴重。所以公司大到這種地步,一般人留下來的原因就是因為這個工作很穩,因為他這麼大公司,他還有Windows賺錢,Office賺錢,Xbox賺錢,其他不賺錢沒關係,他用賺的錢去養那些不賺錢的部門,這個對公司來說就是一種投資。譬如說Bing的search到現在還沒有賺錢,沒關係,公司繼續投資,你的工作還在,不會不見。就算我今天understanding這個部門被關掉,我們決定不做understaning了,我一定可以在microsoft再找到另外一個部門,一樣的薪水,只是換到不同的組裏面,所以很多人留在微軟是因為他的這個job security。那有的人留下來當然是這個有挑戰性啊,可是我覺得挑戰性是一回事,最重要是這個product push出去的速度太慢了,這一點是我比較不滿意的地方。

然後是工作環境,這個要給所有的學弟一個警告,外面業界也好,將來你到學校教書也好,就是你假如是學校畢業了,出去工作,你要不然就在業界工作,要不然你就留在學校。留在學校當教職員,學生的環境已經比較單純了,但是你一到社會去工作的話,你跟同事之間的關係,是非常複雜的。同事跟同事之間這種關係,是我們在學校裏頭很疏忽,沒有學到的。可能也學不到,因為你每天都忙著在上課,在學校裏頭上課。你了不得在外面公司做Intern,但是Intern的話,通常跟公司裏的員工不會起任何衝突,所以你不知道那種人際關係的利害。
你要真正變成一個Full time employee的時候,你才會知道人際關係的複雜程度。那這種東西只有走一步學一步,我只能給你建議就是說將來你們入了社會工作,不管你到那一個公司或是學校,你心裏找一個Mentor,好像你的導師一樣那樣子,一個比你有經驗的人,對你賞識。因為他如果對你不賞識,他管你啊。因為Mentor你要花人家的時間,你有空沒空就跟他聊聊天,然後你工作上碰到甚麼困難,甚麼事情不會處理,甚麼的。我當初我進業界工作的時候是沒有人教的,然後就是跌跌倒倒啊,撞來撞去的慢慢學起來。



在人際關係上有遇到什麼困難嗎?

有啊,我初初不是跌跌倒倒的嗎?言者無意,聽者有心,我說我在E-mail 裏說了某句話,我指的是A這個意思,可是聽的人卻聽成B。沒有人跟我講,我就不知道。當有人跟我講說:你為什麼講B什麼什麼的,我說:哪有,我不是這個意思啊,我是A,對不對。那你就是要說,E-mail 要怎樣寫,寫給誰To,這很重要。

有的人不願意聽到某些話,你這個就不要放在To裏頭,或者有些Sensitive的話,根本就不要放在E-mail 裏頭。那這種事情,反正你工作之後會碰到的,慢慢就會學習,假如你有個Mentor,你就少跌倒幾次。你沒有一個Mentor就是多跌倒幾次。但是跌倒了你自己要記得,要學到Lesson,不要跌倒了很多次,又一直在犯同樣的錯誤。這種我沒有辦法給你實際的例子,我只能說給你一個警告。 當你從學校畢業到社會去的時候,不管你是在學校的環境裏頭,或是在業界,都是一樣的。 因為你一旦出了社會,你現在講的是竟爭、是生存、你在學校裏頭沒有。我就是個學生啊,我是一個消費者,我來這裏交學費,我在這裏學東西,就這樣而已。你到了業界,你每個月拿薪水的。你是在跟其他人競爭一份工作的,那個,畢業了以後人際關係一定要小心處理,就是這樣。最後送給學弟妹的,生活要全面。要有自己的健康嗜好,事業不是人生的全部。
Comments