phd072011s (Image Credit: PhD Comics)

應不應該念 PhD? 這個題目已經被不少人寫過了,但筆者希望也來討論一下這個題目,試著提供一些比較不一樣的觀點。再度回到產業界之後,發現到在美國業界 PhD dropout 還不少,但他們通常不會去寫這個題目。對 PhD 畢業後從事教職的人來說,他們直接站在招募博士生的第一線,這跟他們的工作習習相關。而對 PhD dropout 來說,他們就沒有太強的 incentive 去寫這個題目。我們都知道人是 bias 的,非常 bias (有興趣的朋友可以參考一下這本書),念完 PhD 的人就會說 PhD 好棒棒,沒念過或沒念完的人就會說不值那個時間跟金錢。因為前者寫這個題目的人比較多,所以就讓我站在後者的立場,提供一下平衡的觀點吧。

幾點提醒,這篇主要講的是我個人比較熟悉的領域,也就是 computer science (CS),台灣大部分是稱作資訊工程吧。我並沒有把 CS 放進 title 裡面,因為底下提的幾點應該原則上對於其他領域的 PhD 也適用。最後,我的觀察除了基於自身的經驗,也基於直接聽聞或間接轉述,甚至也基於網路上我讀到而且認為可信的來源。所以不管是正面或負面的描述,都不直接連結到我個人的 advisor,同儕,etc。

前言講完,接下來進入主題。常常在 ptt 留學板或海外工作板上看到一個問題:「我應不應該念 PhD?」通常這個問題都會被板友回覆類似於「這個問題要問施主你自己」這樣的答案。沒錯,這個問題的確要問施主你自己。但我覺得動機最重要,你為什麼覺得 PhD 「可能」會對你有幫助?或者你為什麼覺得自己「可能」會 enjoy 這個過程?如果你的動機是基於底下這幾個常見的迷思,我奉勸你*不應該*念 PhD。以下我假設的對象是一個 CS 的大學部學生,正在考慮畢業之後是要進入 PhD program 或是進入相關企業 (自己創的也算)。所以簡單講,主要是比較學界與業界。我們不討論 CS 大學部畢業之後進入演藝圈,環遊世界或是出家之類的狀況。

繼續閱讀全文 … »

今年大熱門的題材:物聯網IoT(Internet of Things),持續吸引眾人目光,才落幕的2014創業之星選拔賽「Meet Neo Star Demo Show」,就有十多個物聯網創業團隊參與競賽。Google Trend 顯示關鍵字「IoT」的全球熱門度變化,從今年起就持續上揚,顯示越來越多的報導與興趣討論這個主題。我想藉由IFTTT上的應用介紹,刺激大家對IoT的想像,給未來帶出更創新的應用。

繼續閱讀全文 … »

Posted by Little Ms. Happy Birthday

the-newsroom-season-3

隨著資訊數量愈來愈龐大,資訊取得愈來愈容易,優質的內容成為新世代的決勝關鍵。有線電視台的領頭羊 HBO 在幾年前開始投入自製節目的製作,在影集與電影都創造不少叫好又叫座的成功作品。無論是引起爭議的<True Blood>(噬血真愛),收視率居高不下的<Game of Throne>(權力遊戲),或是引起廣泛討論的<True Detective>(真探),都顯示出 HBO 的強大製作實力。本文要介紹的是<Newsroom>(新聞編輯室),一部較少討論但劇本很是用心的影集。

<Newsroom>敘述一間虛構的新聞電視台 ACN(Atlantis Cable News)採訪製作新聞的過程,很多新聞都取材於美國真實的新聞事件,例如賓拉登被殺、埃及之春、美國大選等等。目前播出的第三季討論的是網路對專業新聞的衝擊,很多面向的討論非常值得深思。

繼續閱讀全文 … »

寫給年輕的自己

Posted by Mr. Sunday

不知從何時開始,心裡一直有一個想法,想回溯過往數十年的求學生活與工作生涯,反省深思這些經驗與所見所聞,如果我能寫一封信給十五年前的自己,我會想跟年輕的我說些什麼呢? 會勸他做些什麼,又會勸他不要做些什麼? 我會那麼有興趣的原因是,隨著時間與經驗,我的想法與建議一直在變,而如果將時間軸拉到以年以上為單位的時候,那得出來建議的結論會是什麼? 結果是完全跟當年的想像完全不一樣。

我很喜歡這樣的思考,雖然我知道想出來的建議永遠也沒辦法在寄給過去的自己,但是對現在的我依然很有參考價值。 最近幾個月我才換一份新的工作,從曾經台灣最創新的公司,換到一家年輕活力十足的互聯網新創公司。 這幾個月我跟許多內陸的年輕人共事,他們積極充滿企圖心,敢作夢有執行力,也有良好的情緒管理與態度,這著實跟年輕的我比較起來,覺得有點汗顏,也有點為台灣的年輕朋友們感到憂心。 從這幾年來的很多反省的想法,到短短一二個月文化激盪出來的火花,除了整理一下自己的心得,也分享給年輕的朋友們作參考。 這些都是個人的經歷與體驗,不見得適合每一個人,就當作一個意見交流也好。

les-secrets-de-la-passion

繼續閱讀全文 … »

Mr. Monday (UIUI)

Cheers 雜誌 168 期的封面,斗大地寫著「10 年內,現有的工作將消失 50% ,你的位子還在嗎?」回應這個標題的封面,天下雜誌第 561 期中指出,根據美國勞工部調查,目前在學學生畢業後,有 65% 要做的是現在還不存在的工作。現在全世界最熱門的職位「社群經理」,這個名稱在 10 年前根本都還沒有出現。網路科技的到來,快速地改變整個世界的架構,而這改變是持續加速的。稍微看得遠一點的人,如微軟的創辦人 Bill Gates 已經看到了這個不可避免來到的未來:20 年後,因為網路所促成的自動化,將造成整個社會的結構性失業,而這次失業潮將延燒到白領階級

繼續閱讀全文 … »

距離上一次寫 blog,原來已經是好幾個月之前了(遠目)。

一些私底下認識我的朋友可能知道,其實在 2012 年之後我就逐漸減少寫作的頻率,最重要的原因是因為轉換公司:我從雅虎台灣,調到雅虎美國工作。也因為在產業工作的關係,許多過往的個人觀察,開始會受到一些內部觀點的影響,更不想看到自己的個人言論被貼上公司標籤,就不太方便再繼續發表在這個部落格上。又或者,我應該寫一個大大的利益衝突警示在部落格上 🙂

不過,今天我要大膽地來提一個話題,就是在 Marissa Mayer 上任 Yahoo CEO 已經超過兩年的現在,回頭看過去兩年的 Yahoo,到底有什麼樣的變化。

兩年半以前的大混亂

我還記得在梅姐上任以前,當我剛到雅虎美國就職的時候,整個內部正深陷內部政治跟裁員風暴。短短的一年內, CEO 竟然多達五任。不只外界質疑,公司內部的員工也陷入群龍無首、不知要往何處去的困境。當中最令人「難忘」的就是 Scott Thompson 上任後隨即推行的大裁員政策。我們當中的許多人,或許可以認同裁員是必要的,但是當中近似隨機裁員的方式根本讓人無所適從。前一個月還被 CEO 稱讚的團隊,隔月竟然就被裁員,簡直是匪夷所思。

這時雅虎陷入嚴重的內憂外患,簡單來說有:

1. 人心渙散,沒有人認真做事,來公司第一件事就是看 linkedIn 上面的新職缺(當時連我這個初到美國的人,每天都收到 20-30 封獵人頭的信,同事更多)。許多大頭如Douglas Crockford (JSON 格式之父)的離職,更讓員工士氣大傷。

2. 產品部門沒有人在作事。以往會議室一間難求,但當時卻是整棟樓的會議室都空無一人,走進去就可以,有的人乾脆在裡面進行別家公司的面試。少數想認真做事的人,會發現許多合作的團隊都告訴你:我們被裁了,請自己想辦法生出你要的功能。

3. 業績雖然沒有直線滑落,但所有的指標都在下降,外界評論也認為雅虎會下落得非常快。中間有些 CEO 認為雅虎應該轉型成類似電視台這樣的媒體,而不要再花時間跟 Goolge、Facebook 競爭,更讓人心惶惶。

Marissa Mayer 做了什麼?

Marissa 來了以後,很快的替雅虎開了診斷。

她認為,雅虎有三個主要的問題,一是士氣,二是產品,三是公司業績。雖然股東們最在意的是公司業績,但要救業績,得先救產品。要救產品,得先救士氣。所以,最重要的,其實是士氣。而非常幸運的是,這裡面最好救的,就是士氣。

所以她第一週,立刻宣布了免費午餐,每週的員工集會(FYI),接下來更有免費 iPhone 與 Jawbone Up 手環。在 FYI 上面聽見的問題她都會立刻給予真實的回應,精彩處往往讓大家拍手叫好。另外還有一件事,就是全面清查公司在申請綠卡遇到困難的人,並立刻啟動申請。後者非常重要,因為有很多雅虎外籍員工之所以還沒離開,就是因為卡在綠卡申請。眾所周知的是矽谷公司的成功有很大一部分是外籍員工的貢獻,而如果公司裁員的狀況持續 下去,這些綠卡申請都會遇到額外的政府審查,員工反而會更想離開。Marissa 一來,立刻就幫員工設想到這方面的問題,的確是非常了不起。

再來,就是產品。Yahoo 經過過去幾任 CEO 的輪換,許多產品缺乏持續性的投入,要找到能接手的人都成困難。Marissa 到任三個月後立刻宣布了 12項重點產品,這些產品同時要有網頁、行動版網頁,iOS/android 行動版 app,一年內要完成。無論你認同與否,甚或是無論你是不是還在考慮跳槽,一時之間,突然大家都動起來了。

Yahoo Weather,就是其中一項成品。這是後話。

至於業績,Marissa 說,現階段是公司重整期,視情況我們可能要暫時放棄一些以往的作法甚至是業績,把人力投資在未來的成長。她觀察到過去幾年 Yahoo! 一個最大的缺點就是害怕承擔風險,尤其是害怕承擔計算過後的風險。印象中,她是這樣說的:”As a CEO, I should be the one who play defense, and you are the ones who should be bold, be creative, and be disruptive. You guys should be the one who play aggressively and I will play defense for all you guys.”

老闆話都講成這樣了,員工還不賣命嗎?

拆掉組織內部的高牆

有一個轉變,是外界很難察覺,但身為開發者的我很想提出來的,那就是雅虎對於過去自己築起的技術高牆的解構。

在我 2010 年加入雅虎之時,雅虎內部有很多系統設計是與外界完全不一樣的。它有自己開發的 in memory database,package system,assets pipeline… 這許多系統是僅限雅虎內部使用的。這原本沒有什麼不好,當中的許多系統在設計之初甚至是超前於外界系統的。可是這些優異的自建系統,也把自己與外界之間築成一道高牆,變成一間 walled garden。

Marissa 進入雅虎之後,逐漸開始拆解這道高牆。許多在外界流行許久的 open source 專案終於得以在 yahoo 產品中使用。甚至是一度被視作精神象徵的 YUI,也在今年宣布走入歷史。YUI 的狀況可以說是過去雅虎具體而微的縮影:功能 “大而全” 曾是 YUI 過往的賣點,如今卻因為規模龐大變成負擔。如果把 YUI 的模組一個一個拆開來看,固然每一個都有一定的水準,然而它也導致程式碼過於繁多、彈性不夠,在十年後逐漸不敵由不同模組組成、而每個模組都有專門的 open source 團隊維護的專案。

宣告放下 YUI,讓員工開心的擁抱 open source 專案,對許多技術員工來說,真的是天降甘霖。

阿里巴巴的及時雨

許多人談到雅虎這兩年的景況,都會提到阿里巴巴(或戲曰阿里爸爸)資金的挹注,甚至會說現在雅虎的股價也全是靠阿里巴巴拉抬的結果。

要說是也是,說不是也不是。這個世上,從來只有天助自助者,沒有只靠著祖上庇蔭無度揮霍還可以走長久的。阿里巴巴業績近兩年井噴式的爆發,的確讓雅虎有許多緩衝時間進行組織重整,甚至更有足夠的金錢進行大量併購來補充人才。然而如果不是過去這兩年的努力,雅虎的股價早該在阿里巴巴掛牌後就光環消退,不會一路續漲來到突破 52 美元的關卡。

回想起兩年半以前,雅虎的股價一直在 15 美元左右徘徊,而且是人人避之唯恐不及,誰曉得現在會增長超過三倍呢。

挑戰仍在前頭

不過,要說挑戰已被克服為時尚早。相較於其他巨頭們,雅虎在行動網路時代,雖然行動廣告已經開始賺錢,但仍然缺少讓人印象深刻的新應用,而且過程當中也仍然是犯過一些錯誤。但整體來說,過去這兩年「調體質」的狀況,比想像中好得太多。

某種程度來說,我覺得自己也挺幸運的。能在一家公司最低潮的時候加入,並且在其總部近距離觀察到矽谷最聰明的大腦們,如何在危機時扭轉頹勢,如何想辦法把一家公司從分拆邊緣,逐漸再爬回在產業中具有競爭力的位置。

任何一個還認為 Yahoo 是一年前那個 Yahoo 的人,要小心了,Yahoo 已經開始產生化學變化。這些是僥倖嗎?不是的。這是 Marissa 在這兩年當中,用極長的工作時數、在內部跟無數員工溝通提振士氣換來的。She deserved it.

Posted by Mr. D-Day

對於很多程式開發者,腳本語言(Script Language)應該是蠻常見的,諸如 shell script、JavaScript、Perl、PHP、Ruby 等。腳本語言的執行方式是動態的,也就是說原始碼原則上是不需要先經過編譯的。這對於一些商業用途的產品會產生一點困擾,因為這意謂著,產品必須以原始碼型態的方式發佈。除了原始碼,包含一些產品運作必須的重要參數,例如:資料庫密碼,也都會用明碼的方式存在。

對於 PHP 來說,像是 ionCubeSourceGuardianphpSHIELD 等商業化軟體都可以幫助我們解決這個窘境。如果是 Python 呢?以下是我知道的幾種作法:

把原始碼轉成 pyc 檔

我想這應該是每個 Python Programmer 最先想到的方法。因為 Python 在執行時,最先把 Python 原始碼轉變為易於執行的 bytecode,也就是 .pyc  檔。這些 .pyc 檔都是一些二進碼,並不利於人類閱讀,所以作拿來保護原始碼聽起來很適合。但是很可惜,.pyc 的decompiler (反編譯)工具算蠻成熟的,例如 Easy Python Decompiler

包裝成一個執行檔

雖然 Python 是一個跨平台語言,但這並不表示每台電腦或伺服器都安裝了 Python 直譯器,特別是個人用戶。因此有時候產品發行的時候,會希望使用像 Py2ExePyInstaller 這類型的工具,把 Python 直譯器與原始碼統一包成一個單一執行檔,使用者只要用像執行一般程式一樣的方式執行,也不用管環境有沒有安裝 Python 直譯器。也因為包裝後,看起來純粹就是一個執行檔,所以這類工具也可以被拿來當成 Python 原始碼保護使用。

打亂原始碼(obfuscation)

把 Python 原始碼打亂是另一種可行之道。被打亂的原始碼原則上還是一個符合 Python 語法的程式,只不過可能因為少了空白、換了變數名稱、或寫作方式,導致一般程式設計者很難閱讀。這種方式在 JavaScript 是很常見的,因為 obfuscatinon 通常附帶的好處是「減少程式碼的大小」。例如:pyminifier 就是屬於這類型的工具。

更改 bytecode 定義表

前面提到的方式都是比較容易的作法,但是嚴格講起來,並沒有辦法很確實的保護原始碼。像 Dropbox 為了實現跨平台的資料同步,它們所提供的資料同步程式,是以 Python 為基礎做開發的。為了保護自己的產品,Dropbox 乾脆修改了 Python 直譯器,開發自有的保護機制。簡明扼來說,Dropbox 的保護機制是以 Python 的 bytecode 為基礎,但是它更改了幾個 bytecode 機器碼的對應表(bytecode re-mapping),這導致你無法使用一般標準的 Python 直譯器執行它的程式,也無法透過像 Easy Python Decompiler 這樣的工具把程式反組譯回來。有興趣仔細研究的讀者,可以參考這篇文章

直接加密原始碼

這種作法是先把原始碼加密後發佈,只有在執行的時候,才會把加密的原始碼還原來執行。它與 Dropbox 採用的方式有著一樣的特點,就是必須採用客製化的 Python 直譯器,而不能直接在標準的 Python 環境底下執行。但是比起前面三種方式,因為執行時期,所有的原始碼都要多經過一道解碼的手續,對於執行效率要求比較高的應用或許可能會有一點影響。例如:PyProtect 算是屬於這一類的作法的工具。