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,另一條路或許也是不錯,但可能就是平淡得多了

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

2009年3月3日 星期二

好玩的Facebook puzzles

The puzzles which I solved:

最近在找工作,因為我的本行(信號處理)的工作都死光光了
看清了這一點,所以我轉戰軟體工作
(這故事說來話長,之後有時間再解釋)
總之我為了找軟體業的工作,每天都努力的充實我的程式功夫
這幾個禮拜,每天應該都寫快要1000行的程式練功

後來因為申請Facebook的工作,有不少人建議去做他們網站上的程式puzzles
這些puzzles會定義好某種需要的輸入輸出
解puzzle的方法就是寫一個程式滿足這輸入輸出
例如其中的一個puzzle會被輸入一個檔
這個檔裡面有很多個點,每個點是用(x,y)這樣的二維座標定義
要求的輸出是,對於每一個點,都列出離它最近的三個點
而且這個方法要夠快
平方等級( O(n^2), 就是比較慢的 )的算法是不會被接受的

解puzzle的方式,就是你用網站上所支援的語言(我試過C++和Python)
寫成可以編譯/執行的程式,寄去他的email信箱
Facebook有一個機器人程式,會幫你測試你的輸入輸出有沒有正確
如果正確你就會收到一封email,說你的程式通過測試了
然後Facebook還有一個application叫puzzle badge,就是上面那張圖
它會在你的Facebook首頁上顯示說你做對了那幾題
上面那張圖就是我的puzzle badge

我試了做一題之後,就瘋狂地迷上這個東西
對我而言這就好像打電動一樣,就連吃飯睡覺的時候都很想快點跑去寫
好在現在已經全破了(只剩下一題,不過聽說那題沒人做對過)
終於可以回到健康的生活型態了
不過Facebook會不時出現一些新的Puzzles,到時候又可以再上去做

這些題目都包裝的非常有趣,例如有一題就是你是一隻zerg的overlord
你要分配手上的zerg去打人類的基地,人類的兵力和基地的礦已知
要用最佳的方法去分配這些zerg
如果你有玩starcraft,就會覺得超有趣的
但事實上這些題目都是
computer science或是數學裡面非常有代表性的演算法
如果你曾經看過這些算法,你就知道要怎麼辦了

總之這個東西非常好玩,如果你對寫程式有熱情的話
或是想要練練程式和演算法
推薦你去試試
http://www.facebook.com/jobs_puzzles/index.php

哦,對了,我忘了說,如果你想apply他們的工作
做puzzles做的好的話,就會得到interview機會

2009年1月11日 星期日

六塊腹肌怎麼練(二)


要減低身體的脂肪量,就是靠飲食和運動,上次講了關於飲食的部分,這次講怎麼做運動

運動分成兩種,一種是用來長肌肉,增加肌力的重量訓練,另一種是用來訓練呼吸、循環系統的有氧運動

要消秏熱量,主要是靠有氧運動,就算做一千個仰臥起坐,你也不會瘦,因為仰臥起坐是重量訓練,用掉的熱量很少,身體用掉多少熱量和用掉多少氧氣成正比,所以要看什麼運動燃燒最多熱量,很簡單,就看你做什麼運動最喘就是了,像是跑步、游泳,這些都很喘,像是搖呼拉圈,就不會喘,很容易分辨,很多人常常問說游泳和跑步那個燃燒的熱量多,這很簡單,就看你做那一個運動比較喘,那就是了

除了會喘之外,也要維持一段夠長的時間,才能秏掉足夠的熱量,另外,要運動夠長的時間,才能激刺循環和呼吸系統

所以關於有氧運動的結論就是找一個你做了會喘,又可以做半小時以上的運動,每個星期做個三~五次,例如,游泳、跑步、自行車、球類運動,這裡面我最推薦的就是跑步,不用設備,不用特別找地方,也不用約人,出了門往路上跑就是了

有氧運動有數不清的好處,它讓你的循環和呼吸系統強健,它增強你的新陳代謝,它讓你消秏熱量,它甚至能讓你變聰明,不管你要不要六塊腹肌,你一定要養成做有氧運動的習慣,這是你人生中一定要有的東西

除了有氧運動之外,重量訓練也是很重要,重量訓練雖然不會直接秏掉很多熱量,(因為你做它的時候不會喘),但是它會增加你的肌肉質量,提升你的代謝率,讓你平常在生活中用掉比較多的熱量,而且它還會讓你的骨骼強健,更重要的是,肌肉好看,我說的不是像健美人士那種怪物般的肌肉,只要有一些些結實的肌肉,就可以讓你看起來有線條,成為型男/辣妹

關於重量訓練,很多人都想到要上健身房用那些機器和槓鈴,其實不用,在家裡做就可以很有效了,而且重量訓練不需要花很長的時間就可以很有效果

寫到這邊,覺得有點累了,而且寫這麼長也沒人想看,我下次再說怎麼在家裡做重量訓練,還有怎麼把腹肌練大塊的方法


結論
------------------------------------
一、有氧運動和重量訓練功能不同,但都重要
二、一定要養成做有氧運動的習慣(每週三~五次半小時以上)
------------------------------------

2008年12月24日 星期三

六塊腹肌怎麼練


20191206 Update: 在翻自己以前的網誌,意外看到這篇,過了超過 10 年,這邊寫的東西已經跟不上時代了,現在我已經儘量不吃殼類,健康的油也不是用飽和不飽和來分,例如我現在不吃 Canola,我會吃動物的油脂尤其是草飼牛、Pastured Eggs。我沒把這篇刪掉,留下來提醒自己很多事隨時代會變化,但是希望逛到這邊的讀者不要被下面資訊誤導了

附上幾本書參考:
https://smile.amazon.com/Strong-Medicine-Conquer-Athletic-Potential-ebook/dp/B00UO5H5PE
https://smile.amazon.com/Body-Science-Research-Strength-Training/dp/0071597174


--

很多人問我要怎麼樣才能練出六塊腹肌,雖然我不夠專業,但是我可以講講我讀到的知識,和我自身的經驗

很多人都知道要有可見的腹肌,一定要瘦,這一點是對的,如果不夠瘦,肚子上的肥油就會蓋住腹肌,但是我在這邊要強調,腹肌夠大塊也是很重要的,很多人覺得自己沒有腹肌的原因,只是因為自己太肥,但是實際上大多數人即使很瘦也看不到腹肌,因為其實腹肌必須要非常大塊才會可見


所以總結一下,要有可見的腹肌
一、夠瘦 (我想體脂肪差不多要15%以下)
二、腹肌夠強壯


那要怎麼變瘦,我想這是很多人都關心的問題,對健康而言,這比有沒有六塊腹肌重要多了,路上隨便抓十個人,大概有七個人跟你說他在減肥,這是因為現代人很多都太肥,我說的太肥不見得是體重太重,很多人體重正常,但是體脂肪還是很高,特別是靠計算熱量少吃而不運動瘦下來的人,現代人的肥胖問題很嚴重,因為生活不需靠勞力工作,而且現代的食物又做得太好了,好吃熱量又高,所以要不胖真的很困難,但是變瘦的方法很單純,就像大家說的,飲食和運動

吃,很多人減肥的方法,就是節食(on a diet),簡單的說就是暫時用某種飲食的規則,有的是吃得很少,有的是只吃某類食物,我告訴大家,所有暫時的飲食規則,包括只吃肉,不吃澱粉,或是只吃香蕉等等,或是一些讓自己餓肚子的方法,都是沒有用的,只要你之後再回到正常的飲食規則(off a diet),(難道你可以一輩子吃香蕉、或一輩子餓肚子),你就會恢復到原來的體重,正確的方法,就是養成健康的飲食習慣,一輩子都用同一個原則來吃東西,才是健康的方法

健康的飲食習慣很簡單,不需要長篇大論,只要記得下面這些原則就行了

----------------------------------------------------------

一、狂吃水果和蔬菜
二、狂吃全麥殼類(糙米、燕麥、全麥麵包、全麥pasta)
三、多吃健康的油(Olive, Canola)
四、吃瘦肉(雞、魚)和植物蛋白(豆類、豆腐等)
五、多喝水

少吃
精緻澱粉(白飯、白麵包、白麵粉製品)

不吃
一、肥肉、動物脂肪(Sat. Fat)、反式脂肪
二、糖、果糖
----------------------------------------------------------


只要把握住原則,你不需要計算熱量,也不需節制飲食,因為只要你吃對東西,例如你狂吃水果、蔬菜、糙米、燕麥,你很快就飽了,根本不需要去計算你吃了多少熱量

買肉類的時候,要買最瘦的部位,如豬肉就買前腿、後腿瘦肉,因為動物脂肪除了讓你變肥,還有很多其他壞處,讓你死得快,買牛奶就買零脂肪的,即使是1%的牛奶也有超多動物脂肪,如果要買加工的食品(最好是不要買),一定要看標籤,有兩個重點,第一個是飽和脂肪(愈少愈好),第二個是有多少糖,這一點在台灣就比較吃虧,因為台灣的食品標籤不會列出有多少糖,不過我告訴大家,只要是飲料(汽水、果汁、奶茶...),都超多糖的,非常可怕,這種東西就像是會上癮的毒藥一樣,為了健康快樂的人生,一定要把它戒掉


下面這張是哈佛公衛學院出版的食物金字塔



我建議大家可以印出來貼在廚房和餐廳附近,這個新版的食物金字塔跟我們小時候健康教育課本的金字塔不同,主要的差別是它把精緻澱粉和全麥澱粉區分開來,還有好的油(不飽和)和壞的油(飽和)區分開來,小時候學的最下層是澱粉類,但是現在健康的脂肪也被視為最下層的主要熱量來源,(以前脂肪類是最上層),還有精緻澱粉被從最下層澱粉類區分出來,被移到了最上層

好吧,一次講太多了,用運動減肥還有練腹肌的方法,這兩件事留到下次說

我的知識來源是我長期看runner's world的營養專欄,和一些關於耐力運動的網站,從事耐力運動的人的飲食和健康飲食幾乎是一樣的,除了需要吃比較多之外


六塊腹肌怎麼練(二)

2008年11月16日 星期日

馬拉松取消了

專心的練了三個月,就為了pasadena marathon
三個月來的計畫只有miss掉一兩天
最後一個禮拜還減量運動做tapering
結果今天早上5:30,準備去比賽
才看到email說比賽取消
原因是因為昨天的野火,影響了今天的空氣

雖然這樣就可以爬回去床上睡覺
但是心裡真的覺得很失望
這麼多天來的訓練就是想知道自己的能耐
我跑過最長的訓練是20mile,其實就已經很苦了
腦中會有一個聲音一直叫你停下來
真的跑完馬拉松的26mile,不知道要承受多少苦
聽一些人說通過終點的那一瞬間,人生會徹底改變
我不知道有沒有這麼誇張,但是我真的很想試試

希望他們能再補辦一次
如果沒有補辦,我就自己辦
自己去操場跑105圈半,然後自己計個時不就得了

簡單的東西有效,但很難商業化

昨天去參加活動,有人跟我說以前一直看我文章,但後來就停更了,其實沒有停更,我只是都換去 FB 分享了,因為 FB 才是流量所在,加上 FB 算法對外部連結的排序不太友善,所以我都沒在這邊寫了,想繼續 follow 我的人可以去下面兩個地方找我: fb.com/p...