2009年4月14日 星期二

下一站: Facebook


找工作的事終於結束了,在此報告一下心得

轉眼間,PhD學生生涯就要結束了,我不敢相信這五年就要這麼過了,五年來我真得過得很好,在這期間,我學到了很多東西,不只是在學術上,在人生的各方面,對很多事情都有很多體悟,學習能力,理解能力,找資訊的能力,都變強了許多,也習得了一些生活習慣,我過得比以前健康快樂多了,我很高興在五年前,我做了這個決定,來了Caltech,這裡真的是一個天堂

但在這個時間畢業,正好遇到這波大蕭條,真的是很不巧,這個時候,以外國人的身份在美國找工作,是格外的困難,從去年十月開始,我就開始投履歷,我的專業是通訊和雷達的信號處理

雷達相關的工作,似乎不太受到景氣的影響,還是有許多job opening,像是Raythoen和Northrop grumman,這些超級大公司(人數都在10萬人的規模),還是一天到晚在招人,我的專業背景很強,要去這些公司絕對不成問題,但無奈的是這些公司都要綠卡,外國人沒辦法做這些國防相關的工作

另一個比較相關的工作選擇就是無線通訊,像是Qualcomm和Broadcom這類無線通訊IC廠,但是他們相關的的缺很少,就算有缺,也常常註明只要有經驗的,其他這類公司也有不少在裁員的,這些裁員出來的人都是找工作的競爭對手,總之情況非常不妙,我天女散花式的到處投了一堆履歷,都沒回應,只有一個位在Pasadena的IC設計startup找我去談了幾次,他們要給我offer,但這間公司實在太小(約十人規模),我覺得很可怕,在這個時機還是要去穩一點的地方,尤其是我們這種外籍勞工

後來11月的時候事情有了轉機,我接到Qualcomm的通知,interview的職位是software engineer,不過我的專業是system engineer,而且我已經八年沒寫過c++了,但他們說他們只有這種缺,後來我通過phone interview,去了on-site,但是在on-site的時候表現不夠好,被拒絕了,這次被拒絕對我是一次重重的打擊,被拒之後我徹底地好好地反省了,也上網查了很多資料,我後來知道interview一定要好好準備,而且我的程式已經很久沒練,當場被要求coding當然會卡住,這次interview雖然沒有拿到offer,但是對我而言非常重要,因為它給了我一次經驗,讓我瞭解了technical interview的情況,也給了我的一次刺激,回來之後我就下定決心要把程式練好

經過幾個月的研究,我慢慢地瞭解了就業市場,我發現做信號處理演算法的工作非常的少,以前在學校的時候都天真地認為在工業界大家都在做這個,但實際上,大部分的工作需要的是其他的能力,像是軟體的能力C/C++、Java,要不就是硬體像Asic、FPGA,而且就通訊分層而言,愈是偏應用層工作機會愈多,但是學術界卻是相反,愈是下層研究愈多,因為在下層物理是主角,比較單純,有很多理論和數學可以用,但上層人是主角,人的行為太複雜,很難歸納出好的理論,但是產品最多的是跟人有關的層次,而且我發現,在美國,軟體的工作機會又比硬體多,學校Career fair來的一大堆都是軟體公司,很多都在找軟體人才,這和台灣又不同,台灣的硬體公司比較發達,就算是資工系畢業,首選還是IC廠或是系統廠,很少人會首選軟體業

我漸漸有了覺悟,我知道我一定要改變我的策略,要不我就是去學verilog做硬體,要不然我就是練程式做軟體,不然我只會在原地停留,那裡也去不了,我不會堅持一定要做我在學校做的東西,我覺得人的身段要柔軟,而且不要怕學習新的東西,才是成功之道,我覺得只要能夠合法合理賺錢的事情,就是對社會有貢獻的事,就是有生產力的事

學校所學,本來就與現實有所差距,我很早就打定主意,要到外面做一些實務的東西,雖然我的blog叫做「我是有生產力的人」,但事實上,到今年31歲的我,還是一個完全沒有生產過東西的人,在學校做的,雖然一直有拿到funding,但都是一些與現實脫節的研究,算不上對這個社會有什麼貢獻,但是這樣也不代表這個PhD就白唸了,我在PhD這幾年所學到的技能、觀念、學習的方法,是無價的,PhD的價值並不是那些無用的研究,和深難冷僻的知識,而是它的訓練本身:,從瞭解一個領域,到發現和解決問題,最後成為一個領域的專家,我並不害怕要放棄一些所學,去重新學習新的東西,我覺得抱著現有的知識就想要一輩子用下去,才是很無聊的,我願意忘掉之前我發過的Paper,做過的研究,重新開始

以前我有很多打工寫程式的經驗,而且我很喜歡寫程式,所以我下定決心要學好程式和軟體相關技術,然後鎖定相關的工作,我每天寫程式,讀演算法的書、還有看Video,每天找題目練習,一天寫1000行code,我覺得再一次重學這些東西,比起以前大學時容易多了,大學的時候沒有修過演算法,但修過類似的資料結構,那個時候並不是很喜歡,但是我現在知道為什麼了,因為我那時候英文不好,演算法沒辦法完全用數學符號描述,所以必須用語言去描述它,那時英文不好的我,沒辦法體會它的美,現在重新學習它,英文變好了,理解力也比以前更強了,很容易就讀懂了,我配合coding,每讀一個演算法就寫一段c++ code,功力大增,後來又做了很多facebook puzzles,我覺得就像當初我對信號處理一樣,我找到了我的熱情

後來有學長幫忙引介了Facebook的recruiter,得到了phone interview的機會,我答得不錯,又得到了on-site的機會,當天去on-site的時候,有十多個人,其他人全都是stanford、mit、berkeley、cmu的CS major,只有我一個候選人是EE的背景,我自己覺得很驕傲,因為我只花了兩個月密集訓練,竟也讓我闖來了這裡

Facebook是個很有活力的公司,我們去的地方在一個大樓的四樓,裡面的員工看起來都很年輕,每個人都對著一個超大的30吋螢幕,還有一個地方有很多零食和飲料可以免費吃喝,感覺是個程式geek的天堂,去面試的人都穿得很隨便,很多人都穿牛仔褲和T-shirt,我穿襯杉和卡其褲,而且還把襯衫塞進去,當場覺得自己有點over dressed了,中午大隊人馬就被帶去吃公司的buffet,之後有一位工程師來和大家講了很多關於Facebook的技術和未來,因為去面試前有簽NDA,所以也不便在此說了

後來就是典型的technical interview了,我被帶到一個小房間,之後每一個小時就有一個interviewer進來問問題,問的問題都還蠻有水準的,不是網路上隨便就找到的考古題,不過也不難回答,只要有基本的演算法知識就可以答了,答出演算法就會被要求在白板上coding,這次我練習了很久,所以程式寫得很快又不出錯,回來之後不到一個禮拜就得到了offer,Facebook的offer給得還蠻大方的,真的很爽,後來我也去面試了Microsoft,又拿了一個offer,不過相較之下,還是Facebook的爽,而且我想去Facebook應該可以學到比較多東西

所以我六月中開始,就要去Facebook工作了,(各位朋友如果還沒有Facebook帳號的話,可以去註冊一下,順便加一下我),人生的際遇真是奇妙,高中時代,我最喜歡的就是力學,當時一心想讀物理,而且我還以為物理就只有牛頓力學那些東西,後來去了電機系,因為喜歡物理,本來想唸的是固態組,修了一大堆物理的課,還去物理系修量子物理,後來修了一門「半導體工程」,我才知道去半導體廠是在做什麼(對我而言很無聊),瞭解了之後,就改變了心意,所以研究所的時候選了信號處理,到現在,我一點也沒用到物理了(不過我還是都記得哦)

本來我也沒想要出國,想在台灣讀博士,後來遇到了馮世邁老師鼓勵我出國,就來了美國 (我的出國之路),來美國之後,我本來是想做碩士時候就做過的通訊研究,但是我現在的指導教授問我要不要改做雷達,我想說換個口味也不錯,就改做雷達,那時我們實驗室沒有一個人會這個東西,我自己去conference的雷達session裡看別人都在做什麼,然後自己看書,看paper。到後來我出了一堆paper,還有一篇conference paper得了學生論文獎,還寫了一個book chapter

現在因為不景氣,我被逼著要去做自己陌生的領域,但是因為這樣,我重新找到了一個熱情,也得到一份待遇很好的工作,其實我很感謝這一波不景氣,要不是因為這樣,我也不會冒險去換領域,學習新的事物,我應該就會去Qualcomm做個system engineer,另一條路或許也是不錯,但可能就是平淡得多了

我現在每天都在讀程式相關的書,想在這個陌生的領域快點趕上別人,我覺得人的身段要柔軟,而且不要怕學習新的東西,才是成功之道