電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2016年9月6日 星期二

先出社會再上大學?

這篇報導說蔡英文總統拋「先出社會再上大學」,向高等教育投下震撼彈 [1]。我想,「先出社會再上大學」本來就是很正常的事情,只是文憑主義作祟,才會一直有那種「盡可能墊高學歷再出去工作」的傳統觀念。

至於所謂的震撼彈,或許指的是助長「大學無用論」。我想,高等教育學用落差的問題,我談過多次了,有一系列的探討,請參考 [2]。當然,大學應該要辦得更好,不過在文憑大幅貶值的現階段,對學子來說,念到不合適的大學,或是不好好念大學,不如先不要念大學。

如果覺得先出社會不念大學太冒險,那我建議就先去業界實習,我昨天寫的那篇網誌「實習,為就業或創業打基礎」[3],就是談這件事。

我在網誌上所強調重點在於「優質的實習機會」,這是為「有事業心的年輕人」「能善用人才的公司」「想加強產學合作的學校」創造三贏的配套做法。

鼓勵學生去創業,或是先就業再念大學都行,但需要有配套做法,否則多數學生創業當砲灰,浪費青春;先就業的該去哪裡、如何體驗社會,都是要有方法。我沒看到政府的政策,暫且不評論,不過這個先工作、再念大學的概念,大抵上都可以用上述「提升實習文化」的作法來實現。

另外,如果覺得先出社會再上大學過於震撼,先出社會再念研究所,也是一個選項。

我在國外看到不少先工作,再念研究所的學生,我想這也是國內學生們可以思考的。盲目跟著人家念研究所,對自己的興趣和行業的狀況都不清楚,其實是件很奇怪的事情。

國外大學的學費高,家境較差又拿不到獎學金的,甚至要舉債念書,所以學生和家長會把唸大學、研究所當成是對未來職涯的投資。國內大學學費過於低廉,學生可以單純為了學位或興趣來念,其實並不見得合理,這是應該好好改革的部分。

我們20多年一票人出國留學,還沒上課前先看到帳單,算算修一小時的課要付出將近70元美金的學費,所以選課時會好好打聽課程好不好、有沒有用,沒有人想翹課。

再說,大學畢業,先工作幾年,再回到學校念研究所,有甚麼不好?

以機會成本的角度來看,的確較為不好,比起一路念完研究所再就業,大學就業的薪資較低,但差距其實頗有限,如果學生個人發現對專業沒興趣,不知道為何而唸研究所的話,不如先去業界走一趟。

最後,我說過多次,如果對事業有用的是「實力」而非「文憑」,那應該就沒必要拿了文憑才能工作。例如程式設計,有一大群非典型的程式設計師,大學的主修與程式設計無關,有的甚至沒念過大學,靠著自學有成的人很多,不只唐鳳。

這條路走得通的重點是「口碑行銷」。以往沒有社群網路,雖然你很厲害,天下沒幾個人知道,所以需要某種的認證,例如文憑和證照。但現在有社群網路,如果多與社群互動,讓眾人都知道你的本事,自然會建立良好的口碑。

我想未來的社會,應該會更強調終身學習,大學應該會更開放,提供各種形式的課程,而大學與社會的邊界會逐漸模糊化。所以不要過度執著於文憑,想想如何善用社會與大學的資源去學東西,去打下事業的基礎。

[1] 高教震撼彈! 蔡拋「先出社會再上大學」(民視,2016/9/5)
http://news.ftv.com.tw/NewsContent.aspx?ntype=class&sno=2016905L01M1#

[2] 【學用落差與產學合作系列1】學用落差
http://www.tvet3.info/industry-cooperation-series-1-the-gap-between-theory-and-practice/

[3] https://www.facebook.com/notes/洪士灝/實習為就業或創業打基礎/1247770011920805

2016年7月30日 星期六

資訊科技教育、課綱制訂與後續發展

很多朋友知道我幾年前就鼓吹要在中小學加入資訊科技教育,教導運算思維。我的好朋友成大資工蘇文鈺教授甚至還親自去偏鄉教小朋友,但我們都不認為這件事能夠以傳統方式進行,對於規劃和實施的方式有過一些討論,讀者可參考 [1]。在討論中,我提到:
「台灣要做的話,應該要找在教育理念上獲得大家認同的、對資訊科學素養卓越的人來全職全力來領導和推動整件事。或許台灣學界應該設法推舉出一個工作團隊,並且賦予這個足夠的資源、權力、責任,去完成這個任務,包括教材、教具、教師訓練,否則蘇教授提到的問題,勢必會出現,而且一旦引入不合適的課程和教師,不只是搞砸了資訊教育的美意,而且不容易收拾後果。」
然而,我不是政府長官,以上這些話,雖然被轉載於網路媒體上,例如[2],但大長官聽不聽得進去,就不知道了。有時候,長官即便知道應該怎麼做,但礙於政治現實,也不做了那麼多,只好妥協,所謂無魚蝦也好,先求有再求好。
我們這類專門做系統效能優化的工程師,最不想看到的就是「先求有再求好」這種事,因為這樣做的下場,就是有了之後求好不得,只好擺爛;但諷刺的是,我們常常在「先求有卻好不了」的情況下進場救援。
十多年我在Sun工作的時候,有些產品部門的心態就是「先求有再求好」,例如為了趕進度,產品開發部門先把密碼加速器做出來,效能優化的事情之後再說。可是軟硬體的架構不搭配好,結果就是不好,只好聯絡我們效能工程部門來善後。受到教訓之後,這個產品開發部門從設計之初就會希望我們參與,以免重蹈覆轍。後來Oracle購併了Sun,非常重視這個部門。
話題回到資訊教育,既然我身為鼓吹者,所以在政府開始規劃中小學資訊科技教育的時候,只要找我,我自然義不容辭、盡可能參加討論,希望能提早發現問題加以解決,也因此對於規畫的過程略知一二,也知道制訂課綱的種種限制。
首先是法規面的問題,高級中等教育法第四十三條明定:「中央主管機關應訂定高級中等學校課程綱要及其實施之有關規定,作為學校規劃及實施課程之依據。前項課程綱要之研究發展事項,由國家教育研究院辦理之」。國民教育法第八條亦規定:「國民小學及國民中學之課程綱要,由教育部常設課程研究發展機構定之。」[3]
依據上述法規,教育部必須對資訊科技教育訂出課程綱要(簡稱課綱)之後,中小學才有依據做後續的規劃和實施,而課程綱要之研究發展,明訂為國家教育研究院(簡稱國教院)負責。又依據國家教育研究院組織法第二條第四項中亦明訂國家教育研究院之掌理事項包括:「課程、教學、教材與教科書、教育指標與學力指標、教育測驗與評量工具及其他教育方法之研究發展」。故國家教育研究院負有國家專責課程發展基地之任務與使命。[3]
由此可知,國教院的職責重大,也有很多經驗豐富的專業人員在裡面,然而由於資訊科技教育幾乎是一個全新而且快速演進的項目,所以本來就不容易掌握,但我想長官可能沒有聽進去我的逆耳忠言,或是籌措不出資源,或是為了配合其他科目的課綱修訂,必須在很短的時間內以傳統方式完成這個重大的職責。
在資訊科技的課綱起草初期,國教院有詢問我的意見,我以當面與書面告知想法。基本上,我說不要教太難、教學時間要足夠、課程要設計好、師資要準備好,要做的話就要有充分的資源來做,不然會做不好。但在正式規劃資訊科技課綱草案時,我並沒有參與。我想這理所當然,因為我不是教育專業,沒修過教育學分,沒正式教過中小學。
但後來我看到某一版的課綱草案後,在我臉書上發表個人看法 [4],還險些被朋友們誤會。我明白政府也沒拿多少資源出來做規劃,只是給一點點出席費要參與的專家學者提供建言,這些專家學者平時有很多要忙的事情,已經犧牲很多寶貴時間來擬訂課綱,因此我這個沒有參與的人,最好不要隨便發言讓外界覺得他們沒好好做事。「不在其位,不謀其政」,大概就是這個意思。
不過現在是民主、網路時代,我一來只是以個人立場發言,二來沒想佔位子、搶資源,三來只是對事不對人,幫忙釐清問題、促進討論而已。況且擔心的是,今天我沈默不說話,到了政策要啟動時,民眾看到訂出來的政策不周延,是不是會出來罵人?事後再改(先求有再求好),所需要面對的問題更大。
還好長官和朋友都能溝通,沒造成重大誤會,但我也瞭解參與者難為之處。由於課綱中必須以簡要條目的形式呈現,如圖一所示,因此很難將綜合反映各方多元的意見。例如說某某原理要教多深?演算法要用什麼方式教?每個項目的比例佔多少、需要多少教學時數?這些都沒辦法在課綱中陳述。

圖一: 課綱中所制定的學習內容 (部分列表)














我個人比較屬於自由派,我認為課綱不需要規定太多項目,老師或是教材可以彈性地做補充,但是有些專家學者並不如此認為,覺得如果某個項目不放入課綱,教材就不會編進去;就算編進去,如果升學考試不考,學生也不會好好學。
我有理由猜想(理由容後再敘述),由於每位專家學者都見多識廣,自然會認為很多東西都是重要的;不同的專家學者一起開會,不好意思當面說別人認為重要的東西不重要,所以到最後,幾乎是採用「聯集」的概念來放進專家學者的意見,於是課綱中的項目多到會嚇人,有些關心資訊教育的朋友看到後傻眼。
定了課綱之後,某些長官們覺得應該可以透過下一階段,也就是在課綱所訂定的各學習主題之下編寫課程教材的時候,與編教材的專家、學者溝通,建議出所應學習之重要概念。其中一項作法,是透過師大資訊教育所的研究案,發出問卷請教專家學者(包括好幾位中學資訊科教師)的意見。我參與了其中三次的問卷調查,以及最後的討論會。圖二是節錄自第三次問卷調查結果。

圖二: 問卷調查,關於課綱的各學習主題之下所應學習之重要概念





讀者從圖二可以發現,到了第三次問卷,21位專家學者仍對於「1.1.1 程式語言的種類」有不同的意見,3位認為非常不適合、3位認為不適合、7位持平、5位覺得適合、3位覺得非常適合。通常,認為不適合的人,會提供修改建議,然而由於要80%以上的人認為不適合才能決議刪除此項目,所以大部分有爭議的項目都留在上面刪不掉,這就是為何我猜想在先前制定課綱時會成為聯集的理由。
最後到現場開會時,我發言主張盡可能刪減,但只有不到一半的專家學者出席,所以能改動的有限。最後只能刪除一些明顯太難的東西,以及修改有爭議項目的文字。如圖三所示,我們在1.1.1加了「(高、低階語言)」來表達「只要教學生高、低程式語言的差異性和用途即可,不要叫他們背誦世界上有哪些重要的語言」。我們把1.2.5的歸納改為舉例,因為歸納太過抽象。至於1.3.2的二維陣列,某些人覺得很重要,希望再加上「概念」兩字之後保留,但我們還是決議刪除,所以放上了灰色的陰影。

圖三: 問卷討論的結果範例





由於這樣的經驗,我能夠理解為什麼中小學有這麼多要學的東西,大概是因為這些東西都是某些專家學者認為非常重要的東西。程序來說,課綱的制訂應該沒有什麼瑕疵,召集人在行政工作上也負責盡職,找來的專家學者也是一時之選,做上述的研究也有一套標準的研究方法,但結果仍然是大堆頭式的內容,這大概就是所謂的傳統教育文化。
只不過近年強調適性學習、發展專長、自學,大學很多科系逐步減少必修學分,認為與其嘗試盡量列入必修,貪多嚼不爛,不如給學生自由空間,以選修課來建構個人的專長,也希望學生發展出自學的能力,因為在這個時代快速變遷的趨勢下,學校不可能教授各種將來會用到的知識,所以要懂得自學。因此我個人不贊成以制式的填鴨式教學內容來教資訊科技,雖然課綱上有很多項目,但還好資訊科技雖是必修,但非大學必考項目,所以還能夠希望學校和學生平常心教之學之。
如果我們以平常心來看待這個過程,我把個人所知寫出來,大家討論一番,或許將來在課綱的制定過程上有改進的空間,或許有助於接下來教材編寫和教學實施的規劃,總之希望能幫得上忙。至於接下來的工作項目才是重頭戲,在在都需要專業人士花時間去做,教科書的編撰會交由書商,書商會找專家;教科書的採用是各地教育主管機關的職責,各地教育主管機關會找專家;而資訊教師的訓練養成與教學方法的塑造,牽涉到人的因素,則是更複雜的問題,可能需要花很大的心力去解決,更不是少數幾個人就能夠做好的。其中有很多的部份需要民間的參與,而關心資訊教育的企業也可以協助和贊助相關的工作,不能凡事都只靠政府。
[4] 關於資訊教育課綱,http://hungsh-ntucsie.blogspot.tw/2⋯⋯

2016年7月25日 星期一

淪落到只能靠削價競爭?


上週拜讀了臉友台大化工系藍崇文教授寫的「慘業」一文,說到台灣四大慘業,應是給台灣一個教訓,走俗又大碗的時代已經過去了,只要中國可以做的東西,在台灣就不值得做了。藍教授的評論深得我心,尤其是他這個極為生動的比喻:「小家碧玉要跟人家比,是得靠清純與氣質,要走妖豔脂粉路線,脫光了也不是人家的對手。」

看到比喻,想起去年我到荷蘭阿姆斯特丹開會,跟著人群到頗負盛名的紅燈區觀光。「性工作」在當地是合法的,工作者當街脫衣展示其傲人身材,有尊嚴而不怕人看。所謂職業無貴賤,我不反對任何合法的職業,包括代工和性工作,但我認為工作要有尊嚴,如果一路淪落到只能靠削價與人競爭,價值越來越低,這樣的社會是否會成為「悲慘世界」[1]的翻版?

上週四(7/21)到資策會新成立的開源軟體技術服務中心給Keynote演講,演講前我跟資策會的長官和朋友說抱歉,上週幫經濟部審查計畫時扮黑臉,今天又要來講點比較刺耳的話,請多包涵。長官說沒問題,有些事情也到了該轉變的時候了。顧及長官的面子,我沒有直白講的是,如果法人和廠商仍舊用降低成本來賺錢、或是靠政府補助營運的概念,只會把原本有機會的產業越做越小,搞成「慘業」。

我在演講中說: 各位推動開源軟體是件好事,但如果只是因為政府沒錢買不起國外的軟體才來做這件事,或是因為想要包攬政府資訊系統預算才來呼籲政府各單位採用開源軟體,那不免把當代開源軟體的意義和未來性看得太小了,實際上開源軟體遠遠不止於此,我們可以以開源軟體為基礎挖掘新資訊時代中的金礦,提升技術競爭力,站上世界舞台。

我長期與業界朋友探究資訊產業的研發方向,由於產業的類別甚多,技術深淺有別,研發的速度又非常快,而每個人的位置不同,目標可能也不同,所以想法和做法差異甚大。然而由於高科技的天性,政府官僚看不懂、追不上,我不認為可以靠政府來大力推動,然而某些政府官員和民眾還停留在三十多年前政府設立工研院和新竹科學園區大力扶植電子產業的成功故事,殊不知今天的大環境和資通訊產業研發策略已經與三十多年前大不同,而近年政府的產業推動策略和研發補助計畫有多少成功的案例?

我如果說政府不要補助產業的話,可能會被那些長期靠政府補助過日子的業界和同行罵。但我們這樣搞下去,這麼多年來淪落到只能靠低廉的勞動成本與國際競爭,難道是有識之士所樂見的嗎? 如果大多數人只是醉心於賺入大把鈔票、滿足自家生活、獲得個人地位、或是鑽研一己的學術領域,那麼要如何避免繼續沉淪下去呢? 其實我自己這些年過得不差,但正如同我這篇網誌 [2] 所說的, 我看見諸多有能力、薪水還不錯的人也深陷此漩渦之中,痛苦不堪。因此,光靠壓低物價,遲早會出大問題。要創造價值,需要的是突破和躍昇,有能力的人或許可以思考如何做點不同的事情。

然而好比停留在上個世代成功的經驗,有些人還在寄望於研發市場大、泛用性高的技術和產品。我想,現在做這個不容易,你沒有夠大的資本,只能為人代工,運氣好賺一票之後,不出幾年,就得再找下一個賺錢的技術和產品,因為無法累積技術,所以只能找技術門檻低的東西來做,老闆要數鈔票,靠的是廉價技術勞工的辛勞,我們暫且稱此為路線A。

台灣有很多公司,說自己有做高科技研發,其實只是買現成的技術和機具來幫人代工,就是標準的路線A,其中不乏一些有品牌的公司,但產品品質或品牌價值不出眾,只能靠低價爭取市場。不過,我們也不要隨便批評某某公司做代工產業不好。舉鴻海和台積電為例,雖然是代工,但他們在代工的技術上長期耕耘,研發了一些獨門技術,所以能在世界舞台上成為一方之霸。但我不諱言,這兩家公司仍然有相當重的代工習氣,談前瞻產學研發案的時候過於算計,還有改進的空間,否則可能在新領域的研發上縛手縛腳。

另一個方向,稱為路線B好了,是市場規模小、需要頗多客製化的專業領域技術和產品,例如醫院用、航空航海用、軍用的設備,必須花很多功夫與專家合作,通過某些規範認證,所以門檻高,但進去之後不會有很多人來惡性削價競爭。然而因為能進來的人不多,同時因為公司需要高水準的技術、行銷人才,所以公司很難大幅擴張。舉最近我使用Garmin智慧運動手錶的例案例報告 [3],以及我與一些以技術為基礎做專門領域事業的中小型科技公司談合作的經驗,我相信這是現階段台灣要走上國際的路線,以技術立身,如以色列、荷蘭、芬蘭等國的例子。

然而政府似乎老是以泱泱大國的思維去談研究發展,以那些大國的名校和大型企業為目標,搞得我們做學術的常常要跟頂尖大學拚排名,發表一大堆世界級的學術論文來證明自己能與先進國家並駕齊驅,但我們的經濟力量、本國市場規模、產業水準其實並不適合走這條我稱之為路線C,去追逐那些市場規模大、高技術門檻的研發項目。以資訊科技來說,除非是像中國那樣用本國市場來保護和扶植自身的公司,像韓國那樣敢拚敢賭把國家力量灌注在Samsung如此大的公司,否則很難與矽谷大公司競爭。

上述三條路線比較起來,如果我是沒技術、不想冒險的老闆,我想我會走市場大、泛用性高、低技術門檻的路線A。當然,走這條路的也有雄才大略的,請勿過度引申。因為市場和技術容易懂,所以當老闆的我在看了幾本書之後,可以滔滔不絕向身邊的人吹噓自己的智慧和眼光,重點在於看準切入的時機以及有辦法找一群願意賣肝的團隊在最短時間把產品做出來,最好是拿政府的補助、藉由金融操作、預支員工的薪資來做這件事,降低自己的風險。所以我們看到台灣的老闆們時常要政府給好處,掏空某家公司來支助私人的公司,給員工非常低的基本薪資但承諾賺一票之後分紅。

由於台灣在上世紀末走路線A的公司大賺其錢,連帶產生許多英明的老闆和科技新貴,於是這些人被捧上天了, 把自己講得像是走路線C的企業,讓一般的民眾以為台灣真的是世界一流的科技島,跟著玩起了金錢遊戲,缺乏居安思危、突破創新的想法。於是一些產業,在技術沒有深耕和累積,加上中國、印度的崛起,自己人削價競爭,逐漸失去競爭力和利潤,成為慘業。

另一方面,如果要做市場規模小、需要頗多客製化的專業領域技術和產品的路線B,老闆自己得真的懂,或是勇於做高風險的投資,同時得提高薪資,僱用具備國際競爭力的高級人才作為領導群和研發團隊,談何容易?而且,在路線A的公司產生許多科技新貴的年代,學生們被洗腦的很厲害,只嚮往去那些分紅多的公司,而這些公司還很拿翹,只收第一流的年輕人,能在最短時間內被訓練成高效率的生財工具,所以即使我這個老闆想走路線B,我也不容易募到資金、找到好人才。

說到人才,我們有多少第一流的人才走在路線A上,而目前深陷於慘業之中,但仍舊企圖苟延殘喘? 別的不說,政府和產業往往是打著要發展新興產業或是產業轉型的口號爭取資源,卻只是將資源導入既有的產業,因為主導者還是那一批人,變不出新把戲。於是檯面上的看起來戰功彪炳,卻難以扭轉頹勢,反而屢屢耽誤國家產業轉型的契機。

國家轉型不成,有許多藉口和假議題,幾年前還抱怨員工分紅費用化讓台灣產業失去競爭力,指責年輕人偷懶不抗壓,說學界訓練不扎實,歸罪於國際金融風暴和政府不補助,實際上是產業長期接收了許多台灣最優秀的一批年輕人,卻讓他們從事低門檻的研發,技術難以累積提升而喪失競爭力。

然而台灣是民主國家,我們有什麼理由去要求這些檯面上的資本家用他們的錢去投資在他們看不懂的高風險的高科技產業上呢?錢是他們的,那些大公司要不要轉型,也是他們的自由,他們有些人覺得把錢投資在炒房和炒股,或是投資國外比較容易賺大錢,只要合法,也是他們的自由。所以我從不指名道姓罵那些慣老闆,因為他們不需要為台灣負責。有句話叫做『商人無祖國』,我們本來就不應該把未來植基於這些商人的良知與資源上,勞工本身要自立自強。

我想,如果想要台灣的高科技業永續發展,我們可透過意見表達和實際行動,讓政府不要再繼續支持這那些無法轉型的企業,個人不要支持炒房和炒股的行為,而多去支持那些能夠提升本國技術競爭力的企業和機構。其實國內有不少致力於走路線B的企業,如果能集結一流人才,是大有可為的。過程中可能會有陣痛,但重要的是去做自己深切認為是對的事情。

有人問,那具體來說該怎麼做呢? 唉呀,我都說自立自強了,在問我之前,是否能自己先多想想呢? 我也不是神,所知和智力有限,只能概述。 大體來說,只要政府不去補助路線A,就幫到路線B的公司了,所以政府決策的思維和機制要重建。然而,重點在於民間和人才的意願,大多數人只看到大公司和消費市場,所以我才要在此幫高調,提倡路線B,讓多些人看到另外的路線。如果輿論不改,那麼民粹政府也只會隨眾去補助路線A的公司吧。另外,政府也不是沒有能幹的人,不過需要一些論述來支持,否則很難對抗既得利益團體的。當然,沉淪到最後總是會觸底反彈的,只是遲早而已。

[1] https://zh.wikipedia.org/wiki/悲惨世界


[2] https://www.facebook.com/notes/洪士灝/這25年來的薪資與生活概觀/1216275755070231


[3] https://www.facebook.com/photo.php?fbid=1228262997216186&set=a.150385068337323.25791.100000974924946&type=3&theater

2016年7月24日 星期日

這25年來的薪資與生活概觀

想起1991年,我當完預官後,以大學畢業的學歷在台大電機系當了一年的助教,月薪大概是30K左右,收入雖不多,不足以買名牌貨,但我樂在工作,白天玩得不亦樂乎,每天傍晚打排球,獨身一人,但日子頗逍遙自在。

1992年去美國密西根大學留學,隔年當上研究助理後,薪水約略是2000鎂,學費全免。靠著這樣的薪水,過了六年快樂的時光。幾乎每年暑假都回台灣三週,指導教授照樣付薪水給我,我每次都帶回兩大箱貨品,因為在美國有不少東西比台灣便宜許多。我不解的是,其中不乏臺灣製品,或許是美國的量販文化讓價格如此便宜,我如是想。喔,一個大麥克只要一鎂,美國牛肉真的便宜。

拿到博士後,因為家人,留在學校做了2年的博士後研究員,做一模一樣的工作,拿兩倍的薪水,換算成年薪是48K鎂(約150萬台幣),正常且彈性上下班,充足的休閒、運動、社交。1996年用14萬鎂買的三層透天含車庫的房子,在2000年賣房時,也增值到17萬鎂,這段日子更是愜意。

2000年剛去矽谷工作時,年薪是博士後研究員的兩倍,100K鎂 (不算bonus),之後每年以績效加薪,到我2005年離職時薪水已接近150K鎂。但矽谷唯一不好的地方是超高的房價。高房價衍生的高額貸款,讓我在這幾年過得沒有先前愉快。

在眾人皆說必須買房的狀況下,我買了一棟70萬鎂的房子,剛好把密西根賣房所得的十多萬元做為頭期款,背了五十多萬鎂的貸款,一則付房貸利息可以抵稅,一則有能力負擔。好景不常,沒想到911之後房價一路下滑,到了2003年,市價竟低於我的貸款,還好在2004年漲回來,讓我不至於賠本賣,想想真是驚險。

2005年回到台灣後,薪水驟減至月薪70K台幣 (年薪約30K鎂),大約是在矽谷薪水的五分之一,如果接幾個外部的研究計畫,月薪大概可以增加幾萬台幣吧,雖不無小補,但執行計畫並不輕鬆。工作繁忙、房價高、環境吵雜,生活比矽谷更讓我感到吃力,但台灣有很多便宜的美食、親朋好友作為慰藉,生活還過得去。買不起房子就算了,車子比美國貴許多,還好我似乎回到1991年樂在工作的場景,只是忙到沒時間打排球,是我唯一的失算。

所以我想,日子過得好不好,因素很多,不能光算薪水和物價,也不是短期旅遊的經驗能夠決斷的。然而,我很看不起那些政府官員和慣老闆拿來壓榨台灣勞工的慣用說法,1991年到現在已經25年了,當國外不斷在進步的同時,台灣的大學給助教的薪資只高了一些,業界繼續用台灣物價低的說法來壓低薪資行情,一付「當勞工的有飯吃就不錯了,不然你自己想辦法」的態度,手上卻又掌握著資源不放,或是壟斷行情、變相打壓,讓有辦法的人也搞不出什麼名堂,只好出走。

我想我不是傳統想法中的好員工,因為我就是不想乖乖聽話地幫慣老闆做事。還好我不需要靠政府和財團的恩惠,只要他們不來打壓我,我可以憑本事過活。然而我很清楚,社會上很多人被壓榨,看不到出路,意見不受重視,這不僅僅是一般所謂的弱勢才如此,我看見諸多有能力、薪水還不錯的人也深陷此漩渦之中,痛苦不堪。因此,光靠壓低物價,遲早會出大問題。要創造價值,需要的是突破和躍昇,有能力的人雖然可以在主流中脫穎而出,讓自己進入管理、有產階層,但那又如何? 有能者除了幫慣老闆賺錢之外,或許可以思考如何做點不同的事情。

註:

在上述我的美國經歷中,無論是研究助理、博士後、業界工作,薪水都沒算進學校和公司所提供的保險,美國的公司往往提供包括保險、健身房在內的各種薪水之外的福利(benefit)。美國有很多合法節稅的方法,例如房貸利息抵稅,所以不見得要繳很多稅。因為時間多,很多人在自家煮飯,享受居家生活,而民生物資的價錢往往比台灣低。各位到Costco看看就知道,台灣Costco的價錢通常比美國略高,但時常人滿為患。

2016年7月20日 星期三

會腐蝕的鋁製Apple Watch


用不到一年的鋁製Apple Watch的背面,蝕刻後印上去的字大半糊掉了,但讓我不高興的不只是字糊掉這件芝麻小事,而是腐蝕、摩擦的部份會刮皮膚,戴在手上會起疹子。



雖然說鋁的硬度不高,但被我的汗水腐蝕、皮膚摩擦到這個程度,實在令我驚訝。不知道這是因為我體質特殊嗎?

我透過商家送至Apple服務中心,服務中心的回應是:「很多人都這樣,除了一款不鏽鋼不會,其他都會 (跟你狀況一樣),因為過了保固期,需收維護費用9000元,實際上會直接換一隻,加保3個月 。」

我聽了後覺得很好笑,如果今天去買一只新的同款產品也才11500元,服務中心要價9000元根本沒道理。況且如果幾個月後又會腐蝕,那問題還是沒解決。當然,我知道服務中心也是照著標準程序走,除非Apple官方承認這是產品設計不良,否則他們不會免費更換。

剛巧,昨天在Mobile01上,也看到類似的討論串。標題是:『AW的背蓋會腐蝕的現象,已經換了二顆,會不會有點誇張?』與我不同的是,原作者的錶還在保固期內,所以可以免費更換。

問題是Apple官方會承認產品設計不良嗎?

如果承認的話,恐怕要回收所有的鋁製Apple Watch,茲事體大;但如果不承認的話,我必須說我個人對Apple的形象大打折扣,而且我鼓勵有此問題的朋友們集結起來控訴Apple。

關於鋁的特性,我的醫師學長Michael M. Cheng在我的臉書上留言說道:

  • 鋁本身活性極大、剛加工好的鋁製品在常溫空氣中,就會氧化、因此、鋁製品必須予以「陽極處理」(Anodizing )、利用電化學方法,將工件(金屬或合金)充為陽極,施以電解氧化處理,使表面形成氧化膜,泡在不同溶液中,會形成不同成分及顏色的氧化膜,如Apple Watch上的鐵灰色, 就是這樣來的. 蝕刻字型的地方, 氧化膜很容易被磨掉, 於是鋁的表面就露出來, 與汗水產生氧化作用, 刺激皮膚, 引起所謂「接觸性皮膚炎」。
  • 不鏽鋼版本不會有這種問題、但不鏽鋼含有10%—30%的鉻,有的人會對鉻過敏,也會產生接觸性皮膚炎、但比例極低。如果用鈦來做外殼,就沒有這些問題,鈦與人體組織的生物相容性最好,最不易被排斥、所以骨板及骨釘(骨折手術使用),目前皆以鈦為材料。

話說,從使用Sony SmartWatch,到Google/Moto 360,再到Apple Watch,我覺得這些所謂的智慧手錶,應用都不夠成熟。但如果只是應用不成熟就算了,連基本用途都不行:Sony老斷線,Moto的皮錶帶怕水,Apple Watch會腐蝕... 我怎麼感覺到這些所謂一流的電子業者把手錶當做消耗品來設計的感覺。

如果我不是研究資訊科技的話,我不會浪費錢在這些東西上。但因為這是研究,所以我會繼續嘗試,在Apple答應免費更換這隻腐蝕的錶之前,我不想戴它了。

下一支可能會試試Garmin。去年參觀過Garmin在林口的廠房,我還頗喜歡他們對研發的企圖心和對品質的堅持。

以下是題外話:

最近幾年Apple也沒推出什麼有看頭的東西,在iPhone 6S推出的時候,我的評論是「Apple暫時穩住了江山」,接下來如果沒有真的突破,我不看好Apple在iPhone 7和Apple Watch 2的銷售量,因為沒有新鮮感的產品,加上沒有高度實用性的花樣,目前的形象是不足以維持高價的。

2016年7月11日 星期一

從資訊教育出發 創新高中教學

我在逢甲大學舉辦的「高中課程創新教育論壇」(2016/07/07)擔任與談人,當場以此為題對現場的高中主管們做10分鐘的意見分享。

首先我發表免責聲明: 
  1. 大學教授未必充分理解高中教育現場,我所提出的想法或建議列入參考就好,各位需要做進一步思辨。就算是中研院院士的話,也不是聖人之言,不要緊抓著不放。 
  2. 台大是研究型大學,而且沒有教育學院,對於高中教育的貢獻是有限的。坦白說,台大只想要最好的學生,而台灣大部分最好的學生都會到台大,所以請不要期待大多數的台大教授會致力於普及教育,他們有很多自身的教學研究工作要忙。 
那我來這裡做甚麼? (笑)

我可能稍微另類一點... 雖然另類的程度遠遠不及葉丙成教授,頭髮也沒有他長,但我們以各自的方式對國民教育提出一些建言。我個人覺得台大對國民教育不能置身事外,因為國教的品質與大學教育息息相關,有些教授抱怨大學生素質每況愈下,或許可以出來為中學教育做點事情。

其實我覺得台大教授雖然不甚瞭解高中教育現場,但應該可以在創新方面注入一些能量。不是教育科班出身的好處是,我們的著眼點和思考比較不會被現有的教育框架所限制住,對於如何翻轉和創新中學教育這件事,或許可以較為天馬行空地做腦力激盪,或許可以因此激盪出一些火花。

如我在免責聲明所說的,各位不要把我們當成教育專家,而我們談創新中學教育,真正需要的是激發在座每一位教育專家的創意和創新的企圖心,才能有自發的改革和創新,而不是一直處於保守的上行下效的框架裡。

有人可能會問,保守有甚麼錯?

現在的教育體制,源於西方工業革命之後對於大量專業人力的需求,因此開辦學校,制定標準教材,舉辦學位或技能檢定考試,讓業界得以有效率的雇用人力。然而,業界已經進化到高度自動化的工業4.0,以及所謂人工智慧的時代,而教育的形式也受到資訊網路和線上學習的影響,許多國家已經在重新檢視標準化教育的意義性。

各位為人師長的,是否知道這社會十年後職場上所需要的能力?很會背書、記公式、考高分的學生,是否能適應未來的社會? 從我教大學生以及與業界合作的經驗,好學生未必懂得自學、團隊合作、求新求變,而這些能力到了大學再練習是否太晚?

很抱歉,各位先進從過去照本宣科、數十年如一日的教學生涯,轉為現在這種需要翻轉和創新的日子,罪魁禍首是我們這些搞資訊科技的,但我們自己也得在這個的潮流中日新又新,而且潮流影響所及,各行各業也都從數位化、網路化,進到自動化、智慧化,不斷有新的挑戰,也不斷有新的機會。

因此,資訊科技和資訊教育實在太重要了,但千頭萬緒,在有限的時間內,我想摘要幾個我所認為的重點與各位分享:
教育如何善用資訊科技?
如何以資訊教育啟發學生新時代所需的能力?
資訊科技是提升數理人文各領域的利器!

首先,教育如何善用資訊科技? 方式很多,以下只是幾個例子:
  1. 翻轉教學、線上學習: 老師不需要重複教同樣的課,學生可以按自己的進度學習,透過網路與世界接軌。 
  2. 蒐集資訊、分析資料、跨領域學習: 各個學門都可以結合資訊科技做資料的蒐集與分析,進行專題研究。 
  3. 數位校園、個人化學習: 根據每位學生的學習狀況,提供適合的課程與進度。 

其次,如何以資訊教育啟發學生新時代所需的能力?

資訊教育不是教工具的使用,不是教用電腦做簡報、也不是教用電腦畫圖…而是讓學生在資訊科技改變人類生活的時刻,理解其幕後的原理和現象,可以巨觀和微觀去看待資訊科技與人類的互動,這是所謂的計算思維。

由寫程式入門去了解計算思維,是一種方法,但不是唯一的方法。好比我們教數學,如果不會列方程式,如何學習用數學解應用問題? 但光會解方程式,並不是學數學的目的,但我們因為要應付考試,往往過度強調解題技巧;同樣的道理,在中學教育中,學習寫程式只是敲門磚,如果我們過度強調程式寫作,也會迷失了焦點。

中學資訊教育絕對不是為了培養資訊專業人才,重點在於具體訓練「語言理解與表達能力」「抽象思考」「解決問題」等能力。我們不要重蹈覆轍,像某些科系以自我本位的想法把過多的材料塞進中學教育裡面,造成學生貪多嚼不爛、因噎廢食的結果。

新時代所需的能力有很多,包括:
  • 自學的能力 
  • 跨學門解決問題的能力 
  • 在開放原始碼的時代同中求異的能力 
  • 在人工智慧時代尋找出路的能力 
最後,除了啟發上述能力之外,資訊科技是提升理工人文各領域的利器,所以現在台大許多科系都希望學生能夠寫程式、做資料分析。例如台大正在成立資料科學(Data Science)學程,而台大也逐步加強計算設備,因為計算模擬和資料分析對學術研究越來越重要。

幾年前,我到台大理學院、到教育部的課綱委員會談中學資訊教育,必須花力氣向與會人士解釋推動中學資訊教育不是資訊系的私心,還好這幾年進步了,我不用多說大家也懂了。剛才有先進提到考招聯動,我想將來不少科系可能採計資訊課程,不會只是資訊系。

舉個現成的例子,來台中的路上,我看到網路上有一則用機器學習技術分析紅樓夢八十回前後的差異的文章。這個例子告訴我們,文學的研究也可以有創新的做法,而使用資訊科技做跨領域研究可以產生很多創新和突破,這也是為何我說資訊科技可以幫助老師和學生在中學階段進行跨領域的教學研究。

最後,我想再次強調,中學資訊課程不是為培養資訊人才而設,不是幫資訊科老師搶飯碗,應該是學校主管和所有科目的老師都需要關心的事。資訊課程的重要性與日俱增,我們在教學場域中,看的應該不僅是現在的需求,我們必須看遠、創新,研究如何為了學生的未來而教。

2016年5月13日 星期五

如何深耕軟體工業基礎技術?

昨天(5/12)被邀請去參加「行政院工業基礎技術第二期次產業投入與深耕項目產官學共識會議-軟體領域」,聽了第一期的執行成果報告,在座的產學人士,包括我在內,都給了一些意見,因為官方希望知道第二期要做些什麼。

在講我的意見之前,先談談第一期的執行面。被派來呈現第一期的成果代表團隊有三個,我特別欣賞中山大學黃英哲教授團隊的報告,他說他早在12年前就開始做軟硬體整合的技術,有與業界合作的產學計畫,也有受科技部補助的前瞻研究計畫,當然我在多個教育部教改計畫中也見到黃教授的貢獻。

我欣賞黃教授的成果,不是因為他報告中所呈現的KPI,而是因為我這些年看過多次他團隊所呈現出來的內容,挑戰困難的實作問題,堅定的態度始終如一,不隨波逐流。因此長久深耕而能累積豐富深刻的技術,進而衍生產學計畫、技轉、專利、論文等等,自然是水到渠成的事,毫不意外。

然而,黃教授也誠實地說,他這12年來深耕軟硬體整合技術,最辛苦的就是做第一期深耕計畫的這四年,因為每隔三個月科技部就要研究團隊填表格提供成果報告,而成果報告表格的項目一大堆,衍生產學計畫、技術轉移、專利申請、論文發表、培育人才、開發課程、辦理推廣活動、邀請業師授課、赴業界演講等等。如果績效不彰,可能就刪減預算,甚至停止計畫。所以光是忙著應付這些關鍵績效指標(KPI),就忙得不可開交。光是這兩週,我就見過他來台北兩次做這個計畫的成果報告。

我發言說我深感認同,因為我們也深為KPI所苦,而且這些年來用數字管理,已經早造成了許多嚴重的問題,應該要換個方式來評鑑執行成效,尤其是這個所謂的深耕工業基礎計畫,如果目的真的是為了好好發展那些「在國際上趨成熟,但台灣過去因產業文化,且未能在短時間看到經濟效益,以致於產業尚未投入深根之技術」(請參考下圖),就應該不是這樣的做法。



這個工業基礎技術發展方案,用「三高一廣」來描述其願景,在三年多前一開始的時候只有幾項質性的KPI,但一路執行下來,為了滿足計畫審查委員和立法院的質詢,不斷加入新的KPI,希望參與的研究團隊能夠提出強而有力的實質證據。

實質證據?如果是前瞻研究或產學計畫,或許可以定義好標竿,但一面說要「深根」和「十年磨一劍」,一面又要執行團隊每年拿出績效,要「三高一廣」,可能嗎?同時,由於這些KPI,反而造成許多「務虛」的事情。填表的事情就不用說了,為了要有經濟效益,研究團隊必須配合廠商,因此也不可能把研發的技術免費方享推廣給大眾,於是立意頗佳的計畫,到頭來只有少數廠商受惠、培養少數研究生而已。

我直接了當說,這些繁瑣的KPI不僅無法評估真正的貢獻,而且還扯後腿,讓研究團隊之間彼此競爭而非合作,成果無法在國內分享推廣。

今天要解決這個問題,關鍵不在於談下一期要做什麼,而是必須基於開放方享的概念,來提昇真正作為工業基礎的生態系(ecosystem)。例如談軟體領域,現代軟體工業的基礎是開放原始碼計畫(open source projects),尤其是那些常見於大型軟體工程以及系統軟體的開放原始碼計畫,包括Linux, Android, Apache, Hadoop, Spark, NoSQL, LLVM, Tensorflow等,國內現在極度缺乏能夠好好使用或修改這些開放原始碼計畫來堆疊出大型軟體應用或是建構先進系統的人才,原因是沒有人好好來經營這個生態系!

坦白說,國內在軟體實務工程架構技術上落後先進國家幾十年。不用說先進技術,各位可以到國外參加討論版,就可以知道人家如何從公開的討論和程式碼的分享中培植軟體人才和厚植軟體的實力。上述的開放原始碼計畫,都是經過許多一流專家們千錘百鍊所打造出來的,如同把秘密和寶藏公開放在我們面前供我們免費取用,正是我們好好利用來迎頭趕上的機會,為什麼不把握機會以國家的力量經營這個開放原始碼計畫生態系?

有人說,前幾年科技部不是砸錢搞過開放原始碼計畫嗎?再次,我必須說KPI不對,在執行面上就會失焦。之前科技部所支持的「自由軟體鑄造場」(https://www.openfoundry.org/),目前有將近1976個開放原始碼計畫,立法委員看到數字每年增加很高興,但究竟有多少是有用的呢?開放原始碼軟體貴精不貴多,各位到國外的網站上,可以看到更多的開放原始碼軟體,例如sourceforge.net 就有21539個程式碼。要知道,既然可以免費使用人家的原始碼,我們何必花時間重新打造類似的東西呢?(如果說這是訓練,那要如何證明程式碼不是抄來的呢?)

務實支持開放原始碼計畫,不是鼓勵參與團隊多多發表全新的開放原始碼計畫,應該是聚焦在現有的重量級開放原始碼計畫,鼓勵學界、業界多分享、研究、改進、貢獻這些開放原始碼的技術。學生藉由研究重量級開放原始碼來學習第一流的軟體、強化自己的軟體實力,藉由使用開放原始碼來堆疊出有創意的作品,藉由改進或創新開放原始碼來展現自己的程度。業界要懂得如何善用開放原始碼,而不是看到開放原始碼就轉彎,因為世界上的開放原始碼計畫越來越多、越來越好,看到開放原始碼就轉彎的公司遲早會無路可走,難道沒看到連微軟、IBM也擁抱開放原始碼嗎?

然而,業界要善用開放原始碼來創造價值,一個健全的開放原始碼生態系,其中包括好的人才參與其中、技術的交流、產業的分工。在這方面,我們落後先進國家很多,但是由於開放原始碼的天性,我們可以從網路上取得大量免費的資源加以研究,所以成功的機會遠比那些需要昂貴研究設備的尖端科技,或是需要長期實務經驗累積而成的工業技術來得高,關鍵在於有沒有辦法聚集足夠的高素質軟體人才和產業的參與。

目前的開放原始碼生態系還不夠蓬勃,缺乏業界的支持,雖然許多人有心耕耘,但大多是以社團、同好會、讀書會的形式在運作。雖然如此,但我樂觀其成。這幾個月來我課上演講的業師們,在國內的網路社群上很活躍,他們樂於分享開放原始碼的研究心得,也透過分享讓世界知道他們的才能,對社會和產業造成貢獻。

因此我對長官說,您問我第二期深耕項目要做些什麼?在座的諸位有各種的意見,我也可以把我有興趣或專精的技術項目加進去,但我認為重點不在於技術研發,而在於生態系的經營。至於要如何經營軟體領域中重點項目的生態系?我想可以利用開放原始碼作為基本載具,在上面想辦法加值,把成果分享給所有人,有產官學積極的參與和持續提供充分的資源,自然能把基礎打穩,大可不必讓KPI造成學界、業界的隔閡和浪費資源。

2016年5月9日 星期一

如何讓人盡其才?

台大校長、副校長、葉丙成教授最近講了不少關於大學鬆綁、產學、人才待遇的話,其實有些東西我已經探討過許多次了,所以我有一種「太好了,既然你們用力講這些,我就不用講太多」的感覺,只要略微補充一下就好。

例如丙成兄關心學生的出路,在某個案中,他發覺公司並沒有積極爭取優秀的年輕人 [1]。

我不大想評論個案,因為個案的種類太多,但就整體來說,我覺得台灣有很多人(不只是年輕人)對於產學議題的所見所聞相當狹隘,甚至還不知道自己的狹隘。年輕人由於對於業界的動態和學界的狀況不熟,所以不知道要學什麼才能提高自己的價值,而且在資訊不對等的情況下被業界和政府佔便宜,究竟是誰的問題?

我個人覺得,對於被佔便宜的學生而言,學校要負擔很大一部份的責任,所以我(以及系上同仁)經常對學生敘述個人的所見所聞,教導有價值的技術,介紹值得去的工作機會。然而,當我們已經盡力完成上述工作項目之後,部份學生還是不懂得珍惜自己的價值,因為當前「主流的聲音」告訴他們要找穩定的大公司、趕快成為主管、趕緊賺到第一桶金來投資房市才是最重要 -- 那就是學生(家長)和業界的問題了。

視野有限,不能光靠學校。為何主流的聲音不可信?如果說主流的聲音不可信,那要信什麼?

主流的聲音主要是基於過去的經驗,但台灣的所謂高科技業過去所在的大環境,至今已有極大的變動。因此這些過去的經驗,不見得適用於現在和未來。可是主流媒體和看報導的民眾,還是迷信那些所謂的成功人士,轉來轉去都是知名人物的言論。另一方面,小道消息和酸民言論在非主流媒體和PTT上瘋傳,成為極大的對比。試想,身為一個學生,面對這些各執一詞的言論,要如何取捨?

我的看法如下:
  • 那些需要優質研發人才的公司應該多站出來喊話,不要怕破壞薪資行情,不要怕花時間,否則人才為什麼要去你那邊?把美食端出來,比我們在學校拼命形容美食有多好吃要有效多了。否則,那些主流的聲音會持續讓多數的年輕人無心於技術的精進,或是被迫到國外發展,怪不得誰。 
  • 家長們應該要知道,台灣的(科技)產業正在轉型,因為低門檻的工作在世界工廠和機器人的能力逐年強化之下,會越來越難賺錢。不要只強調學歷,要在職場上具備長久的競爭力,必須要擁有很好的學習和適應能力,無論將來社會如何演變,都能成為社會所需的專業人士。 
  • 學生們要知道,一窩蜂盲目追隨主流是一件危險的事情,但功課越好的學生,往往一直在主流價值的框架內發展,反而缺乏獨立思考和隨機應變的能力。舉例來說,為什麼會覺得學歷越高,可以工作的地方越少?這就是盲點。考試升學,養成許多學生一窩蜂追隨主流的慣性,到了研究所還受此毒害,這是需要學生自我檢視改進的重點,甚至比技術能力還重要。同時,我希望學生們不要太短視,最好是找到那些可以學習成長、精進技術的地方。 
  • 在國外,暑期實習和人才媒合公司扮演著重要角色。我們這幾年幫了很多學生找到不錯的暑期實習機會(請搜尋:核心系統達人),最近和人才媒合的公司(例如sudo.com.tw)合作,希望讓更多人才進到需要人才的公司。同學們平常不妨多注意業界動態、多問問師長。 
  • 我一向不贊成政府過度補助那些不值得扶持的產業,也不支持政府介入而降低人才薪資行情的一些作法。有些機構或公司該倒,與其讓他們苟延殘喘至倒了之後裡面的人無路可走的情況才去處理,不如趁著他們還有競爭力的時候倒,釋出的人才還可有助於產業發展。 
  • 產學合作:這是老掉牙的話題,也是必須務實解決的問題。如果說過去的頂尖大學獨尊學術、忽視產學,現在一下子要大舉推動產學,辦得到嗎?我不贊成政府和學校「為了產學而產學」,過度迎合業界的需求。要知道業界如果要的是低門檻、短期訓練即可產生的人才,那應該由技職體系產生,或是自行訓練。研究型的產學合作應該要有技術門檻,如果一窩蜂搞產學,可能又會搞砸,應該要謹慎為之,而且讓業界多負擔人才培育的責任。 
  • 新創公司還沒賺錢,要用願景和學習機會吸引人才,可思考與學界多合作。這當然也要花時間,但高科技研發本來就不是簡單的事。換句話說,找有即戰力的人來做短期研發就能賺錢的機會,誰不想呢?但這樣的機會越來越少,如果公司的作法一成不變,只會撿現成的,要求年輕人吃苦耐勞、共體時艱,那恐怕很難令人信服,自然就會被冠以「慣老闆」的形容詞。 
舉例來說,以下是翟本喬學長在臉書上對丙成兄個案的回應,這就是我所說的,自認為需要人才以及善待人才的公司應該要出來喊話:

『我們和沛接收了好幾位其他公司釋出的研替,驚訝地發現有些公司竟然會利用研替不能離職的弱點,三年不調薪、或是只調一點點。我們是完全比照正職人員,該調多少就多少。表現好的,每年10%並不少見。用人不是買貨物,能殺價就殺價。人才總是會發現自己的價值的,到時候你損失的,不是一個人才的離去,而是整個企業的誠信。』

我想,願意爭取人才公司並不少,但多半忙於工作,沒時間發言,或是人資部門根據過去狀況限制薪資行情,或是公司還沒賺大錢之前不好意思講大話。但是不多講,學生就不知道,因為那些主流的做法和聲音遠多於此。

三不五時講講公司的願景,公開吸引人才的新作法,提供優質的實習機會,讓年輕人有希望從事的工作目標,突破低迷的氣氛,有哪麼困難嗎?有的業者說,為什麼要我來做,對我有什麼好處?我想用翟本喬學長剛剛說的笑話來回應這樣的說法:
  • CFO 問 CEO:我們花錢訓練這些員工,萬一他們走了怎麼辦? 
  • CEO 反問 CFO:我們不花錢訓練,萬一他們留下來怎麼辦? 
[1] https://www.facebook.com/pcyeh.NTU/⋯⋯

2016年5月6日 星期五

需要愚公移山的大學文化

最近台大楊校長講了一些鬆綁大學的話,例如讓大學教師開公司(註1)、大學存亡交給市場機制 (註2),讓大家耳目一新。我覺得以校長的高度,願意跳出框架,從事大幅度的改革,是值得讚賞的事。只不過,鬆綁需要有很多配套措施,需要多討論,而且這種事情到了輿論,或許由於閱讀者只看到部分的故事,或許由於各個學校的情況不同,甚至在台大內部因為系所的所謂市場性而有些爭議。

丙成兄剛寫了一篇「我眼中的台大同事們」(註3),描述他所見到台大同仁的努力,也為台大同仁抱屈,他說:『不是台大沒想辦法、沒創意去突破啊!臺灣的政府跟法律就是把所有可以試的路都堵死了,能怎麼辦呢?』我想,這是想做事的人常常會遇到的問題。然而,這問題已經存在許久,能夠讓這樣的問題延宕多時而不解決,說真的,台大人也是責無旁貸。

我去年寫過一篇短文「教育事業的資本論」(註4),說政府吝於投資教育,徒務虛名和急功近利的作法,儘管短期有些成效,但無法長久。然而,虛名和功利充斥在國人的文化中,台大也參與其中,如何置身事外?另一方面,更為根本的問題是,作為國家的頂尖大學,是否在提昇文化上盡心盡力,而非自私自利?教育出來的學生,是否有長遠的視野,能對國家整體有所貢獻?我想社會對此,自有公論,但我個人認為台大在這些方面,還有很大的努力空間。

教育文化事業,並不是短期可成的,即便台大擠身世界百大又如何?我們除了想招收第一流的學生之外,有積極努力讓更多的學子受惠嗎?我們的校友,除了本身在政治經濟界飛黃騰達之外,有設法讓人民更幸福嗎?政治經濟不佳,社會風氣文化不改,第一流的學生在國內無用武之地,不來念博士班,當然排名倒退;更何況世代剝削的情況嚴重,年輕人徬徨若失,求學之心更是消極,台大對此能否多做些事?

丙成兄說路都堵死了,這讓我想起「愚公移山」的故事。我覺得,台大有太多的聰明人,沒有人願意做愚公。我多年前就看到一座山堵在門前,很多聰明人好心告訴我如何他們繞過山的方法,但沒有幾位願意持續努力把山移走的人。我不是偷懶不想爬山,只是覺得這樣繞路走的教育文化不應該存在於頂尖大學之中。放眼看真正的頂尖大師,有很多在未發跡之前,可能都被譏笑為愚公之流。

至於有人不願支持台大,甚至看台大不順眼,我倒是不求什麼「體諒」。身為台大的一員,社會對台大的看法,無論好壞,也會投射在我身上。我們把事情公開講清楚,盡到自己的社會責任,追求個人的理想境界,也就是了。

各位可以到網路上看看,台大有很多的公開分享的課程和相關資源,歡迎大家多多利用。例如在軟體領域上,我們擁抱開源分享的文化,邀請業界來演講,也將演講內容開放分享(註5)。我們樂見社會大眾因為大學樂於分享受惠,但我覺得更重要的是走出學術象牙塔與大眾交流的心,即便需要長期的醞釀和發酵才能有所影響,甚至影響還不被承認,也甘之若飴。仔細看看,台大還真有不少愚公,只是不願居功、不為人知而已。

至於鬆綁大學的問題,需要很多配套措施,改天再論。

(註1)楊泮池:讓大學教師開公司 產學雙贏 http://udn.com/news/story/6885/1666⋯⋯

(註2)楊泮池:大學存亡 交給市場機制 http://udn.com/news/story/6885/1666⋯⋯

(註3)葉丙成,我眼中的台大同事們 https://www.facebook.com/pcyeh.NTU/⋯⋯

(註4)洪士灝,教育事業的資本論 https://www.facebook.com/shihhaohun⋯⋯

(註5)開源系統軟體臉書社團 https://www.facebook.com/groups/159⋯⋯

2016年5月3日 星期二

教授擔任評審:系統性的問題

Ben Jai這篇[1]講到了教授擔任評審的問題。我想,原本審查系統運作的重點不在於錢給多少,然而由於整個系統的運作不彰導致錢變成了重點。

良好的審查系統,重視的是「為國家貢獻的機會」,同時藉此「增強個人的閱歷」,而且如果大家都好好無私的審查,促進國家的進步,之後自己和家人也會受惠,等於是一個「守望相助」的概念。

例如學術界裡的頂級國際會議和期刊,找來一流學者當評審,沒有付出一分審查費,甚至還要評審自費出席評審會議。話說我這個月要幫ICCAD 2016會議看十幾篇論文,然後下月初要飛去Austin參加這會議的評審會議,全部是自願而且從自己的研究計畫出的經費。

要打造出良好的審查系統,關鍵在於有多數能夠促進「正向循環」的人,彼此守望相助。如果某個評審不認真或偏頗,傳了出去之後,即便不被踢出系統,在行內也不好做人。

很多人知道「破窗理論」,如果社區裡某棟房子窗戶破了沒人在乎,讓大家覺得這個地方沒人管,社區很快就會變差。因此,系統出了漏洞就該設法解決。但有些知道破窗理論的人不想或無力解決,就用遮掩的方式處理,或是挖東牆補西牆,如果之後賺了錢有力解決問題,那還好,最怕的是賺了錢不補洞,依然把破洞遮住,卻拿錢去做別的事情。

台灣在三十年前,有不少因陋就簡的事情,但是因為大家都沒錢,教授的收入相對是不錯的,而且動員戡亂時期有貪汙治罪條例,所以審查系統還可運作。但這些年來,當台灣的聰明人到處賺大錢的同時,一般來說頭腦還不錯的教授們,難道只知道拿學校發的死薪水嗎?學校也知道應該調薪搶人留人,卻沒有調薪,而是讓教授靠著自己的本事到外面獲得額外的收入。但是隨著差距越來越大,外面的誘惑也越來越大。

所謂君子愛財、取之有道,我們靠功夫接計畫、當顧問,賺的是辛苦錢,接沒幾個計畫,把自己搞得累死,賺的錢還沒有自己的碩士班畢業生賺得多。聰明又膽大妄為的人,當然不會做這種笨事,自然另有一番事業心,而且有事業心的人彼此結黨營私,就跟古代的官場差不多。

這是從源頭開始造成系統性的問題,而評鑑是另一層次的系統性問題,就像學術論文一樣,非專業的人不大分得出好壞,唯有建立專業的可信度。那些靠數字做經營管理的人,奉KPI為圭臬,坐視專家操作KPI來掩蓋問題,即使大家都看到破窗,還能夠提出數字來證明破窗不存在,把錢投在別的地方。學術評鑑若只看KPI,到後來也會變質。

要建立專業的可信度,也是資訊傳播的議題,但若媒體被操縱了,那可信度要如何建立?所以我對媒體有較高的要求和期待。搜尋引擎和社群網路已經改變了以往需要找人打聽消息的方式,但所得的資料仍舊不見得可靠。如何進一步利用大數據分析技術提高資料的可信度,不只與商業模式的演進相關,也關係到社會文化的轉變,我想是非常值得關注的議題。

[1] https://www.facebook.com/ben.jai/po⋯⋯

寫程式之外,傑出軟體工程師所需的六項能力

這篇【會寫程式還不夠,矽谷傑出軟體工程師都有的5種能力】[1] 說得不錯,值得想深耕軟體技術領域、以技術立身的人一讀。這也是我在矽谷工作時的切身經驗,因此我一直希望訓練學生這些高生產力的傑出軟體工程師所具備的能力:

一、不害怕探索陌生程式語言

二、精通Debug

三、開發節省時間的工具

四、優化重複性工作的速度

五、發展系統性思考模式

(請自行閱讀該文)

我前些日子寫過一篇【博士滿座的系統優化團隊】[2],略講了一下我之前在矽谷工作的團隊。我十一年前從矽谷回到台灣教書,原本想把這些工程研發能力的重要性傳達給學生,卻發現號稱電腦王國的台灣,在軟體工程的領域的研發文化竟是意想不到的淺碟。明明是國外重視的工程技術,國內卻乏人問津。學界標榜要世界一流,只好抄捷徑,從理論著手;業界要快速賺錢,沒時間研發,要的是現成的解決方案,所以在軟體界,產學的落差很大。

要知道,產學落差影響最大的是學生和工程師。講難聽點,教授可以一輩子在學術的象牙塔裡優遊自在,不用太在意學生的出路;老闆和主管把握時機賺飽了錢,之後可以把產業當投資遊戲來玩。但如果在學校沒有受到足夠的工程訓練,成為工程師之後又沒有機會做深入的研發案,可能一輩子只能「逐水草而居」,接些門檻不高的專案,難以成為傑出的軟體工程師和系統架構師,結果就是一直為人代工、為人作嫁。

礙於視野,一般學生常常以為解決困難的理論問題、寫出酷炫的應用才了不起,程式設計競賽得獎的是神人,不大明白軟體和系統工程的概念,不大知道高生產力的意義性。如果一直做為人代工、為人作嫁的工程師,或是成為主管、老闆、理論型學者,是您想要過的日子,那麼您大可不必繼續看下去了。

以下是我的個人經驗談,分別對應到以上的五項能力:

1. 我很早就建立起程式設計能力,在高中時自己學了約十種程式語言,學到後來覺得學新的程式語言沒什麼了不起,只是很有趣、很簡單、很有用。所以只要有空、有需要、有機會,就很自然地會學到新的語言。尤其在平行處理、分散式系統和異質計算一直有新的語言出現,需要有不害怕探索陌生程式語言的能力。

2. 然而我必須說我從來就不是很擅長特定的程式語言,也不是很精通程式設計,我很少設計新的演算法,但我看很多人寫的程式碼,而且擅長Debug,這是設計師和工程師的重要差別之一。在解決平行處理和系統效能優化的工程問題時,會遇到很多一般程式所沒有的Bug,而且很難抓,尤其是所謂的Performance Bug,更是需要傷腦筋,有時候還需要一些方法論和工具才行。

3. 因為平行程式的Bug很難抓,複雜系統Performance不好分析,所以需要開發出能幫開發者節省時間的工具。我的博士論文裡面敘述如何以工具蒐集程式的靜態與動態資訊,以工具進行分析和優化,甚至設計工具去將程式和系統建成模型(model)後做進一步的模擬。我在矽谷Sun公司做系統優化工作時,用了非常多的效能分析工具;現在帶領學生開發從晶片設計到超級電腦的輔助工具,都覺得工具特別重要。

4. 除了工具之外,要進一步省下大部分時間(所以日子可以輕鬆點),必須觀察或預判工作中大量重複的部分,設法將之優化。好比優化程式的效能。就是找到關鍵的迴圈,再以各種手段(編譯器選項、改寫程式碼、平行化、GPU、硬體加速器等等)去加速它。同樣的想法也可應用在工作和生活上,要重複同一工作很多次,可不可以寫一個小程式(Script)去自動化工作的執行和結果的分析? 如果每天重複做某些事,能否換個方式讓這些工作變得有效率?

5. 即便是簡單的系統,也有「牽一髮動全身」的問題。很多時候,做了一件所謂優化的工作,未必會得到好處,搞不好先看到壞處。複雜的系統就像人體和社會,出了問題要吃藥、要修法,但藥不能亂吃,法不能亂修,需要有「系統性思考模式」: 了解每個變因可能造成的正面和負面的結果,乃至於變因之間、變因與系統之間的交互影響。對複雜系統來說,做這件事的難度很高,所以我才會一直想研究方法論和發展工具,來提高生產力。

容我再補充第六點:

六、化繁為簡、有條不紊與人溝通

很多工程師很難與人溝通,有些滿嘴都是一般人或老闆聽不懂的術語,有些則是會做不會講。各位到矽谷看,大部分的高級工程師都能言善道,能夠把艱澀難懂的技術,依據對方的程度,用對方能聽懂的語言表達。如果不能表達清楚的話,再怎麼厲害,作為工程師的成就也有限。

擁有高度生產力的工程師,是國家真正的技術力和國際的競爭力,這是瑞士、荷蘭、以色列、芬蘭這些國家走的路線,而不是靠低工資和加班工作。我發現台灣過去的薄利多銷的路線已經不單只是衍生出業界現在必須面對的問題,經濟壓力和普遍過勞的現象也造成不少社會文化的問題,影響健康、降低生活品質、讓文化層次停滯不前。

在我個人能力範圍所能做的,是設法提高我學生的工程素養,有機會就協助某些有志提昇技術能力的業界人士。但大家可能要先有個認識,這些能力往往都不是一般人到研究所和業界學個一年兩年能夠出師的。以我個人的駑鈍之才,到了國外念博班和工作時有緣遇到艱難的工程問題,才得以略窺門徑,然而在台灣要如何才學到這些技能呢?

我沒有簡單的答案,這也不是容易的事,我之前談過多次,包括最近一篇【系統人才的出路】[3]。我只是相信,以目前台灣的環境來說,這是一條值得鼓勵嘗試的路,如果在學校和業界有機會面對艱難、前瞻的工程問題,才有機會練到功夫。網路上很多明師,不一定要拜師才能學藝。

反過來說,如果只在乎速成,在學校不願挑戰艱難的工程問題,到了業界又沒有機會遇到前瞻的工程問題,我想就很難發展上述的能力,這也是當前台灣業界非常缺乏系統架構師、軟體架構師的原因。

但這些原因都不是真正足以阻擋一個能欣賞工程技藝的、願意認真學東西的人,有機會花幾年時間深入做系統研究,自然會學到上述能力,Jim Huang就是一個好例子。如果具備上述能力,還需要擔心工作的問題嗎?如果業界有很多高生產力的人才,還需要這麼擔心競爭力的問題嗎?

[1] http://www.bnext.com.tw/article/vie⋯⋯

[2] 博士滿座的系統優化團隊 http://hungsh-ntucsie.blogspot.tw/2016/04/blog-post.html

[3]系統人才的出路 https://www.facebook.com/notes/洪�⋯⋯

2016年4月20日 星期三

系統人才的出路

臉友提問:「請問系統設計的人才在台灣是否出路越來越少?」我想這也是當前許多人的迷思,「以偏概全」是台灣教育文化乃至媒體的通病。這樣的問題,不妨拿來做為高中生的人文社會學科的論說文的題目。

要做好論文,要先懂得蒐集資料,看懂別人的論述,吸收消化、綜合分析後才開始做論文。如果從中學開始,我們的國民就有這樣蒐集資料、思辯論述的素養,那麼大家應該就不大會去相信那些偏頗不實的言論,也就不會去看那些所謂亂源的媒體和腦殘的文章。

抱歉,我忘了大家在中學時忙著背書、解考古題、衝高學業成績,哪有那個美國時間做這種事呢?考試的作文又不需要這麼費功夫,只要把那些嘉言絕句背出來、套用一些陳腔濫調的公式,讓閱卷的國文老師認可就行了,而社會科的申論題都是有標準答案的,絕對不能有個人的意見,論甚麼論?把標準答案背出來就是了。

我說過台灣還未擺脫科舉封建和專制的陰影,因為我們上一代和這代人就是在那樣的文化中長大的。混得還不錯的,就覺得聯考那樣的遊戲規則太公平了,學而優則仕才對勁,要有房產巴結權勢才有搞頭,搞到不少人發覺大半輩子都是活在陰影下,為時已晚,但都是別人的錯和大環境的問題。

談到出路,人文社會學科其實有很多有用的東西,為什麼會沒有出路?我覺得和台灣科技業所面臨的問題類似的地方是,我們並沒有讓各領域的文化昇華,所以淺池容不下大魚。很多人提起當年的刻苦耐勞,覺得只要肯努力就有出路,以此質疑現在的年輕人不努力。但我看到的是,要再目前這個全球化的時代中出頭,要學的東西太多,要有新的方法和具有競爭力的環境,就不要再緬懷「紅葉少棒」那種事了,還有能力和資源的話,就帶領子弟兵或是贊助他們去提升專業領域的層次,就不要只出一張嘴說當年勇來教訓子弟。

回歸到系統設計的人才的議題,關鍵也就是在文化上,在系統和晶片廠最賺錢的時候,許多人一窩蜂跳進去,削價競爭,把市場做到爛。當時進到這個產業的人,不知道有沒有意識到,這是一個高科技、高風險的產業,如果沒有持續精進,是沒有辦法維持榮景的。老闆和股東可以不做研發,集體壓低員工薪水,一路賺到公司賠本為止,但員工如果為了本身長遠的出路著想,值不值得為了短期利益願意陪這些老闆這樣玩呢?

或許,說「系統設計的人才在台灣是否出路越來越少」這句話的人所指的是,那個學點技術就能夠進系統或晶片設計代工廠做幾年、靠股票分紅成為科技新貴的時代已經過去了,這點我同意,因為台灣過去靠廉價人力紅透半邊天的傳統系統產業正在萎縮中,原本在裡面的人都要想辦法轉型了,還會找新來的人去進去做老掉牙的東西嗎?

然而系統設計的領域大得很,很多人只注意到消費性電子產業,那些系統廠多半以大資本(政府補助)買現成技術薄利多銷的策略為主,卻不知道還有很多技術門檻較高的產業,總產值雖不高,但利潤高,其實頗適合台灣發展。

有不少做較高端系統產品的業界人士可能會告訴你,他們積極在搶真的懂系統軟體的人才,從國外找人才來做研發,還非常需要系統架構師來帶領研發,甚至砸大錢從大學挖學理兼備的教授和博士生來做研發。而我們實驗室有接不完的業界委託研究計畫,做高階系統研發和雲端服務的公司一直向我要人,教育部長官這兩年來不斷要我們想辦法培育更多的高階系統軟體人才和系統架構師。

這些高利潤、高技術門檻的產業,以往較乏人問津,可能是因為國人總喜歡炒短線、學生一窩蜂去大公司,想要馬上賺錢的觀念。我們看到很多值得投資研發的中長期項目,業界不甩,學生也沒有興趣。現在鼓吹年輕人搞新創,我很支持,但前提是不要短視近利,可能的話,以「以技術立身」。

高階系統人才,需要不斷學習來跟上系統的快速演進,而厲害的系統架構師往往需要多年累積的經驗來造就,這就是以技術立身。我之前在矽谷共事五年的團隊,就是一個實際的例子 [1]。

可惜的是,上述的東西,很多人沒有實際接觸過,但做過我多年的臉書朋友應該會覺得我講上述同樣的東西講到煩了...

我想,機會(出路)是保留給準備好的人的,說句不客氣的話,如果連門檻都進不了,還談甚麼出路?在我所看到的現在和未來,系統領域還有很多創新的空間,可以參考Gartner’s Hype Cycle [2],不過我再三強調,高科技業也是高風險業,有很多的hype,所以要保險一點的話,還是設法提升自身的技術,才能長久勝任。

不過我知道有些人不怎麼相信「以技術立身」的想法,或許是對自己的腦袋和技術能力沒有信心,或許是對大環境不抱甚麼希望,有人覺得走門路進當紅的公司撈一筆才是機靈,有人覺得要進大公司當經理主管(之後撈一筆)才是正途,有人覺得還是早點弄到第一桶金來錢滾錢炒房產才是王道;對了,還有那些不想與狼共舞,一直在找尋越來越夢幻的小確幸的羊群們...

我不是狼,也不是羊,我屬馬的。

[1] 博士滿座的系統優化團隊 http://hungsh-ntucsie.blogspot.tw/2⋯⋯

[2] What’s New in Gartner’s Hype Cycle for Emerging Technologies, 2015, http://www.gartner.com/smarterwithg⋯⋯

2016年4月15日 星期五

資訊通識教育以及計算思維的教學法

(原發表於2016/4/5的臉書動態時報上)

資訊通識教育以及計算思維怎麼教呢?我很擔心有人把程式設計課本的每個章節拿出來,簡化一番就拿出來教了。現在的程式設計課,很多大學生都學不好,我想如果把簡化版拿去教中小學,恐怕也是問題重重。

國外在這方面進步得很快,我們不妨來參考一下Google在這個「Exploring Computational Thinking (ECT) 」網頁上所提供的教學影片 [1]。

這些教學影片都很簡短,每個影片用通俗語言來解釋一個概念,採用大量的實際世界的範例和日常接觸到的電腦用語,幾乎不用任何術語,目的是很清楚地讓不懂資訊科技的聽眾理解概念。

舉例來說,有一段標題為「Improving the World’s Videos with Algorithms and the Internet」的影片 [2],解釋如何以演算法和網際網路來改進影片的品質,聽眾不需要懂什麼影像演算法,也不需要知道什麼以太或4G網路。看完影片後,聽眾還是不會寫程式,但是應該能夠理解演算法和網路以及資料中心在實際世界中對影片的作用,以及從作用中摸索其意義。

我個人認為,計算思維中最重要的概念之一,是能夠將計算「抽象化」與「具體化」的能力,例如與影像相關的演算法那麼多,我不需要知道各種演算法長得什麼樣子,但我知道影像壓縮演算法可以幫我省下傳輸時間,影像辨認演算法可以幫我了解影像裡面有什麼物件(以上是抽象化),而這些演算法早已經有聰明的專家實作出來,我們可以透過網際網路,利用資料中心的雲端服務來使用這些演算法(這是具體化)。

至於如何『透過網際網路,利用資料中心的雲端服務來使用這些演算法』呢?想知道的話,就去學寫程式吧!實際上,在某些系統上很可能短短幾行程式就描述了這件工作,學生只需要理解語法,用語法表達想法,將要做的工作描述出來。至於有沒有必要知道這些演算法長什麼樣?我覺得除非想當專家,否則根本不必學。

我想,會寫程式不代表一定懂計算思維,所以要教資訊通識或計算思維的教師,應該要多參考已有的教材,例如Google這裡有個給『教師』去了解計算思維的線上課程 [3],修課者不需要程式設計的基礎,只需要會使用瀏覽器,花費15-30小時。當然,這類課程也頗適合想瞭解所謂的計算思維的一般人。

反過來說,懂運算思維不見得會寫好程式,那又如何?話說寫程式也只是初步,資訊世界還很寬廣,如果懂得資訊世界的運作,心中有運算思維之後,或許有人會想閱讀程式去更加理解資訊世界,或許有人會想學習用程式設計改變周遭世界,或許會想改進資訊系統的架構,或許會想到新的應用、新的商業模式,或許會用計算思維去解決各類學術研究上的問題⋯⋯

所以,我不是說不要教程式設計,而是不希望過於強調程式設計而框限住學習內容和未來的發展性。還有, Google提供的資料,可能比較強調他所在意的東西,所以也需要多參考其他的資料才好。


[1] https://www.google.com/edu/resource⋯⋯


[2] https://www.youtube.com/watch?v=lTj⋯⋯


[3] "Computational Thinking for Educators", https://computationalthinkingcourse.withgoogle.com/⋯⋯

2016年4月12日 星期二

失業率與學用落差

有些人看到聯合報這篇的標題【2.7萬碩博士沒頭路!失業率比專科生還高】(註1),馬上就下斷語,開始批評高等教育的學用落差問題,我看了覺得哭笑不得。

我這些年一直批判高等教育學用落差的問題,也一直提倡產學合作來降低學用落差,因此我樂見社會大眾關心這個問題,但並非隨意引用數據來踐踏專業。

不只聯合報,「關鍵評論網」這篇【所學無法致用 碩博士失業率比專科生還高】(註2),摘錄了各大媒體的報導,把失業率和學用落差扣連在一起。多虧有這篇,我很快就找到各大媒體報導的內容。

首先,如果今天有篇報告說,這個月蘋果的銷售率比橘子高,您會不會馬上說,這批橘子種得不好,種橘子的人有問題? 蘋果比橘子,就單一項目去比較,很容易得到錯誤的結論,更何況是拿大學比專科,應該要從多個面向去比較,才有意義(註3)。

其次,聯合報說「研究所以上學歷者失業率3.07%,但專科學歷者失業率僅2.96%」,請問這個0.11%的差別很大嗎? 注意到記者這邊用了「僅」字,試圖引導讀者。如果研究所以上學歷者的失業率跟專科一樣低,標題還是可以寫有2.6萬碩博士沒頭路。

大家不妨來研究以下的圖表,原本圖表刊在中國時報上(註4),為了不侵犯他的版權,我自己用Excel輸入資料重製過:




圖表上,每年的失業率起伏的幅度,常常大於0.11%。如果說是學用落差的問題,那麼100年、103年的時候研究所失業率比專科低許多,該如何解釋? 拿今年這0.11%(聯合報的數字)或0.13%(中時的數字)來指責學用落差,是沒有什麼道理的。失業率,與太多的因素有關,尤其是經濟狀況和產業的需求,不是隨意就把矛頭指向研究所。

再者,有些人比較專科和研究所的失業率,歸因說研究所做了很多沒用的學術研究,擴大學用落差,可是圖表上這些年大學畢業生的失業率一直維持在5.5%上下,遠高於專科和研究所,請問又該如何解釋呢? 我們知道,有不少大學生畢業後準備考研究所,所以提高了大學畢業生的失業率,所以要再次強調,失業率不是單一因素所造成的,不假思索、不合邏輯地就拿某項數據來支持個人論點,是偏頗而有失公允的。

最後,報導引用主計總處官員的話,說這是學用落差的問題,例如中時(註4):「碩博士雖然學歷較高,對就業有一定程度的幫助,但長期以來,由於產學間一直存在落差,學校所學未必符合業界的需求,因此失業人數比外界預期來得高,反觀專科偏重技術,較符合業界需求,就業機會較多、失業率較低。」

這種質性的說法,全然以業界的觀點來看待學用落差,失之偏頗。我們為何不換個角度說,業界不懂如何運用高等教育所造就的高階人才? 這麼多年各界一再呼籲產業要轉型,請問有多少產業真的轉型了? 薪水凍漲了這麼多年,請問還要高等教育和年輕人如何配合這個充滿了世代剝削和壓榨勞力的產業?

我前兩周在矽谷,看到許多公司爭相從台灣挖人才,要我推薦人才,我也是哭笑不得。如果本土產業能夠善用人才,我何必幫國外公司介紹? 如果本土產業只會集體壓低薪資行情,引進低薪外勞,來保證資本家穩賺不賠,哪我們何忍讓辛苦培育出來的高階人才被踐踏? 我會說,真正該檢討的重點不在於那3%的失業率,而是在那97%的人所受的待遇。

當然,高等教育有很多地方也需要被檢討,如果不是因為這些年累積的問題,也不至於如今落到人人喊打的地步,但不要因為打高等教育的問題而忽視產業轉型和世代剝削的問題,否則我們培育出的人才要何去何從?

(註1) http://udn.com/news/story/6/1621258

(註2) http://www.thenewslens.com/post/309⋯⋯

(註3) 題外話,我想,能夠分析多維度的資料,是近代機器學習技術遠優於仰仗規則的傳統AI的地方,由此可窺見一般教育訓練的不足之處。

(註4) http://www.chinatimes.com/newspaper⋯⋯

2016年4月8日 星期五

教改要怎麼改?

在這篇文(註)中,羅賓森很精要地在哲理上講了教育的問題和解決方法,跟我的想法頗為類似。基本上,羅賓森和我都認為,在這個人人幾乎都是知識份子的時代,人民本身應該要為教育負最大的責任,不只是抱怨和監督,而且該實際行動去改善教育系統。

以下我借用羅賓森的話,以問答的方式,討論一些關心教改者可能會問的問題:

Q1: 教改的問題不是領導者無能所造成的嗎?

A2: 羅賓森說:『看到全世界每個國家都在進行教育改革,可是其中不少卻是由根本不懂孩子該怎麼學習、好學校該怎麼運作的外行人主導,還將政治權力和商業利益列為優先考量,更是讓我擔心得不得了。』『現有教改不但沒有解決原本宣稱會解決的問題,反而讓它們更加惡化。』

所以,教改越改越糟,不是台灣特有的問題,而是全球性的問題。當然,不是說教育部長不需要負責任,而是說這個問題不是光換部長就能解決的。何況,領導者無能,也是教育系統的問題。

Q2: 全世界的問題?那麼是為什麼呢?

A2: 羅賓森:『因為系統本身才是造成問題的主因,所以只要系統不變,不管其他方面再怎麼努力,產生的效果都很有限。』

Q3: 什麼系統不系統的,我不懂,那為什麼以前沒問題,現在有問題?

A3: 羅賓森:『簡單的說,大多數已開發國家的公共教育系統依然和十九世紀中葉時差不多。這些教育系統原本只是為了滿足工業革命後的大量勞工需求,而設計架構則以「大量製造」為基本原則。後來的標準運動更是以加強這些系統的效率和可靠性為目標。問題是,這些老舊的教育系統早就不適合截然不同的二十一世紀的環境了。』

有些人覺得教改越改越糟,要求改回到教改之前,但要知道,現在和三十年前是截然不同的環境。

標準運動,指的是幫教育制定標準教材,為教育成果制定評量標準,再用標準的指標來評鑑教師和教育機構。

Q4: 標準不就很客觀公平嗎?不是也造就出很多英才嗎?

A4: 羅賓森:『許許多多人能適應這個系統,而且表現傑出。如果刻意去扭曲這一點,未免太過可笑。但是更多人在漫長的教育路途上卻只是虛擲時光,並沒有得到教育應該給他們的好處。為了少數在這個系統中表現傑出的佼佼者,卻犧牲了大多數人,這樣昂貴的代價真的值得嗎?』

我想,這是真正的人本情懷,每個人所關心的,不只是自家小孩的成績,而是有餘力去關心多數人。當然,我們的社會離這個境界還頗遠的,但我會用這個角度去看教改的方向。

Q5: 沒有標準的話還得了?學生要怎麼證明自己優秀?老師不知道要教什麼?家長要怎麼督促孩子用功?教育部要如何評鑑學校?

A5: 羅賓森:『我所提倡的教育革命是以和標準運動完全不同的原則為基礎。它推崇個人價值、保留自行判斷的權利,相信人人都有進化和發展充實人生的潛力,同時強調公民責任和尊重他人的重要。對我來說,教育的目的是:讓學生了解周圍的世界和自身的天份,以幫助他們擁有充實人生,並成為有熱情、有生產力的公民。』

我想,問這個問題的人,不妨先想一想自身從小大接受了多少的框架。有些成功者可能會將成功歸因於師長的鞭策,但請回去看Q3-4和A3-4,想想當年那些同學,是否有些會因為不適應教育環境而鬱鬱寡歡,甚至厭惡人生?

Q6: 那該怎麼辦?我們不就只有這點教育資源嗎?

A6: 羅賓森:『我們必須做的是找出一條完全不同路。教育系統需要的不是修正微調,而是徹底改變。』『現今,有了現代科技的幫助,加上自身的創意,我們比以前任何時代的人都有機會彌補這個遺憾。現在的我們不但有無數機會去激發年輕人的想像力,甚至還有能力為每個孩子量身打造最適合的教學模式。』

這也就是我這些年為什麼推崇數位學習、適性學習、自我學習。

Q7: 真的是這樣嗎?要怎麼找出一條完全不同路呢?

A7: 我想,『找出一條完全不同路』,並不是一下子就能做到的,社會得要有能接受失敗的勇氣和毅力,不斷去找,一直到找到為止。誠然,學生不是實驗品,但教育工作者也不是完人,如果不願接受大幅改革現有的系統時所可能出現的某些弊端,那大幅改革很難出現,也就不可能找出一條完全不同路。

什麼樣的人適合來帶領教改?羅賓森說:『我對教育承受的巨大政治壓力非常清楚。面對這些壓力,政治決策者必須接受挑戰,做出改變。一直以來,我都主張政治決策者要勇於面對急劇變化的改變需求,但革命不會為等待法律修正而停下腳步。第一線的人開始動手之後,力量就會團結起來。』

Q8: 那除了希望有正確的人來帶領教改之外,我們平民還能做什麼?

A8: 羅賓森說:『教育並不發生在立法機關的會議室裡,也不藏身於政客的華麗辭藻中。教育只存在於真正的學校裡,只存在於學生和老師的互動中。如果你是老師,對學生來說,你就是教育系統。如果你是校長,對你的社區來說,你就是教育系統。如果你是政治決策者,對所有你負責的學校,你就是教育系統。』

我想,他的意思是說,每個人所在之處,皆可作為教改的道場。所以,在抱怨和哀傷各種社會亂象的同時,我們可以設法讓自己和周遭的人變得更健康,這才是真正完整的教育改革。

Q9: 真的要改嗎?未來會是個什麼樣的世界?

A9: 試想,當機器人可以取代大量藍領和白領階級的時候,人能夠做什麼?人應該做什麼?

我沒有標準答案,但我知道現有的教育系統有很大部分已經不適合那樣的世界。我想,並非所有人都有能力創新,所以拉著所有人去搞創新也不是答案,如Q5/A5所言。

如A7所言,完全不同路,是需要去找的。悲觀的人或許不認為這條路存在,還是學習「認命」比較快... 但我可能比較樂觀一些。我想,人到這個世界上來,可能就是來學習和探索的,即便是「認命」,也有各種方式的,也是要學的。

(註)「世界的教育部長」:教改是一場注定由下而上的革命,

http://udn.com/news/story/7063/1339⋯⋯

2016年4月1日 星期五

博士滿座的系統優化團隊

今天到Oracle拜訪之前在Sun的老同事。沒想到,兩年不見,之前我工作過的團隊(Performance and Applications Engineering, PAE) 多出了一群生力軍。我在PAE的會議室裡和八位來自台灣的博士聊天,四位是我的學長輩的,四位是這兩年才加入的年輕人。
這四位年輕人,竟然有三位是我密西根大學的學弟妹,其中一位原本在新竹清華大學擔任副教授,幾週前才進來工作。另一位則是我台大電機系的學弟,威斯康辛大學博士... 這真是有緣千里來相會。



PAE擅長的是複雜系統的優化,當Oracle併購Sun之後,PAE的地位和價值更高。今天,Oracle的目標是做出世界最頂尖的Cloud,PAE雖然不直接負責產品開發,但在效能測試與優化上扮演關鍵角色,無論是資料庫系統還是大數據分析系統,PAE必須熟悉各項軟硬體技術,否則怎麼談系統優化?

為什麼需要博士?一位老同事說,因為工作上有很多未知數,沒有受過研究訓練的碩士,看了會怕失敗而不敢做,受過博士訓練的人比較能面對這類問題。他說,他們一天到晚為了解決新的問題,都在學新的東西。(註:在美國,通常碩士不必寫論文,不需接受研究訓練。)

我想起當年,我是PAE少有的博士,但我一開始沒有亮出博士學歷,因為團隊注重經驗多於學位。不過雇用我的老長官總是丟一些新的題目給我,讓我有機會表現,例如當時沒有人碰過的密碼加速卡以及最新的高速網路卡的效能問題,都丟到我手上,我得想辦法自己學。還好,我們圓滿解決問題,幫PAE在公司裡樹立起專業形象。之後,或許是覺得博士好用,新的博士陸續進來,PAE負責解決的問題日益複雜,但始終維持使命必達的好形象。

要知道,這個40多人的團隊,擁有上百櫃的機器,PAE在Oracle內部,是非常燒錢的單位,而且因為PAE沒有直接為公司賺進一毛錢,如果沒有非常良好的形象,如果公司沒有上進心,根本不可能維持這樣的團隊。

我其實很想讓台灣的公司來參觀一下,讓他們看看這個當年SUN能夠在幾年間以效能優化來提升競爭力,讓SUN能以小搏大,力抗IBM、Microsoft、Intel、HP、Dell等強敵的幕後功臣,雖然整個SUN的核心技術團隊已融入Oracle,但Oracle還是把SUN的標誌掛在每一台伺服器上,這說明Oracle對SUN的肯定。

對了,SPARC還在,只用在高檔的商用伺服器上,據說富有的阿拉伯國家很喜歡買...

2016年3月19日 星期六

Linux Kernel與產業發展的故事

下周(3/22)梁文耀博士要來台大講Linux Kernel,我來暖一下場子,提一下Linux Performance Tools,順便說說故事,免得學生覺得這個老師都找業師來上課,自己倒底懂不懂? 而且故事或許可以告訴大家,從以前到現在有甚麼變遷,不要食古不化、學錯重點了。同時大家也可想想,為什麼要學習Linux Kernel? 學了之後有甚麼用? 如何學習? Linux Kernel這麼龐大,要花多少時間來學? 如果學不得法,事倍功半。

早期,很多台灣的學生和工程師學Linux Kernel只是為了寫裝置驅動程式(device drivers)。因為系統代工廠開始採用Linux作業系統,要讓系統能夠在新的硬體上工作,必須找一群人來寫drivers。下游的系統晶片、周邊晶片、周邊設備廠,也得提供幫自家產品寫drivers給客戶用。

這些年有不少資工系的學生畢業後去業界負責寫drivers。例如聯發科技在業界的風評不錯,使用聯發科技的晶片的客戶,只要夠大咖,在driver方面會得到迅速確實的服務,其幕後當然就是那些刻苦耐勞系統的軟體工程師了,一旦有bug,就會在最短時間解決掉。

十多年前,嵌入式系統頗紅,教授只要宣稱有做嵌入式系統,學生就趨之若鶩,就是衝著台灣系統晶片和消費性電子產品的熱潮。那時政府投入到系統晶片的資源多,做嵌入式系統教學研究的人也分到一杯羹,學生畢業後進了像聯發科技這類的公司,也賺了不少錢,好像大家都很開心。

那時很多人學做嵌入式系統,只是看了幾本書,追蹤過Linux Kernel,寫寫驅動程式,讓系統會動、功能正確就好。在學術界做嵌入式系統研究,為了要發表論文,很多人跑去做系統裡面工作的即時排程、節能省電的研究,搞一堆數學模型和heursitics。這些研究成果雖然也很厲害,但是跟當時的業界的技術層級距離頗遙遠。

距離遙遠? 是的,大多數代工廠只需要按照客戶的規格要求把系統做出來,至於系統上面跑甚麼應用就不是他們要擔心的事了。以HTC為例,早期他代工做Windows Mobile手機,最在乎的就是如何選料做出價廉物美的硬體,而整支手機軟體中唯一能改的,就是drivers了 -- 這是2006年我們到HTC訪問時,軟體部門主管回應我的問題所說的話,因為「微軟只讓他們碰這個」。

因為學界被要求要證明自己是世界一流,業界有很多限制,所以學用落差很大,而兩邊又都很忙,很少溝通,但大家似乎不以為意。或許是因為當時的電子業錢太好賺,業界只要學校開一些簡單的實作課程幫學生打基礎就好,反正業界做的也不是甚麼偉大的研發工作,有了基礎到業界就能在短時間上手,那些眉眉角角的know-how,入行久了自然會知道。因此政府出錢,用補助設備和課程開發經費的方式鼓勵學界開一系列強調實作的嵌入式系統課程。

我在2005年回到台大教書,看到這種情況,很不以為然。同樣是做嵌入式系統的教學研究,我特別強調複雜系統的設計、效能分析與優化,我陸續開了一系列課程,包括「輸出裝置與驅動程式設計」「嵌入式處理器設計」「嵌入式多核心系統與軟體」「計算機效能最佳化」「平行計算機系統與應用」「Linux系統核心與應用」,嘗試訓練一些高階系統實務人才,但絕大多數賺錢的業界公司並沒有珍惜這些技能,也沒有想提升他們自己的境界,原因很簡單,因為搶錢都來不及了。

舉例來說,我在2005年去演講的時候,一位技術學院的教授當場嗆我,你講這些對我們沒甚麼用,我們只要能訓練出能寫USB裝置驅動程式的學生,他們就有做不完的工作了。我認為他看到的職場現狀接近現實,當時需要大量的工程師來幫忙做這些做不完的系統軟體開發工作 (註1),但邏輯上的問題是,這兩年有做不完的工作,未必代表未來二十年都有工作,我們不應該只教那些,業界也不應該只做那些。

大家現在都知道了,膚淺技術的代工業已經大不如前。即便代工,也得有高階技術才能生存發展。(補充說明: 不要誤會了,我很尊重那些注重技術研發、能持續精進的代工廠,包括台積電、聯發科、鴻海這些,他們現在也知道要投資做研發,才有出路。)。那些不上不下的公司,要如何生存發展呢? 這是個大問題。

過了十年,現在還是有很多系統廠還無法轉型和升級,仍然以代工製造硬體搭配膚淺的軟體為主。上個月有一家公司找我去諮商,公司大部分的軟體技術都仰賴微軟的供應鏈,自身的軟體研發能力薄弱。說到為何不用Linux呢? 他們一下子說不敢用,一下子說看不懂市場,一下子又說找不到人才。我說,一直這樣的話,你們也只能讓微軟予取予求,果然講到他們的痛點。以前讓微軟予取予求,就當作是繳稅,現在利潤如此微薄,這個微軟稅繳起來就很痛... 我看那個態勢,似乎是要我介紹人給他們,但我猜想,這公司恐怕僱不起Linux人才,也不見得有給人才發揮的空間,所以就謝謝再聯絡了。

昨天有位考上碩士班的學生來找我,他雖然是名校畢業,但非資工系,全是靠自學。他原本在某家高雄軟體園區的公司上班,做月薪22K的軟體開發工作。一開始聊,他完全聽不懂我在講甚麼,他自承是靠補習考上研究所,但對系統有興趣。其實不只一位學生,這幾天來了好幾位考上碩士班的學生,對系統的認識薄弱到令我訝異。所以我花了不少時間告訴他們如何迎頭趕上,包括看看我們在【開源系統軟體】臉書社團(註9)上分享的資訊和課程內容。

言歸正傳,話說Linux Kernel這麼龐大,要花多少時間來學? 這幾位靠補習考上研究所的碩士生,連Linux都沒用過,要怎麼在短時間內學會做系統研究?

第一,如果想做系統,只要能抽出時間,用力學就對了,不要管要花多少時間,Just Do It! 或許,有了一百小時的研習,可以讓你入門;幾百小時,可成為某個部份的高手,接下來就繼續補充不足、與其他高手過招、漸入佳境。如果想快速成為真正的專家,每天10小時,3年一萬小時,應該有機會。不過各位看看Jserv這麼厲害,我猜他一天超過十小時花在作業系統相關的議題上,搞了30年,大概是10萬小時。

第二,利用社群資源。一般學生在考試陰影下,潛意識中某種程度敵視老師和同儕,因為一個逼你念書,一個跟你搶名次。殊不知,到了研究所,老師和同儕都是寶貴的資源,甚至為了有更多資源,還要設法到網路社群上找。國內外有很多開源碼的討論社群,都可以加入。尤其是最新的資訊,不可能等到人家寫書或是開課來教你,一定要懂得上社群網路去搜刮最新資訊和參與討論。

第三,挑戰高階(複雜)的實作問題。我認識很多聰明人,給他抽象、簡化過的難題,他們可以解得不亦樂乎,但是真實世界是複雜多元的,如果不會解析複雜問題、化繁為簡的話,根本無從解起。這是現代高階人才該具備的重點能力之首: Complex Problem Solving (註2)。有些資訊系畢業的學生,連上千行的程式都沒看過幾個,要如何探討軟體架構 ( software architecture)? 如果在學校能看懂Linux Kernel架構,能了解其運作,嘗試解決其中的問題,也算是個開始。

比如找一個大數據分析應用,設法解決其效能問題。由於很多大數據應用是架設在Linux系統上,這時候解析Linux Kernel的能力,對於改進系統在做資料儲存、資料交換上的效能非常重要。當然,處理大數據所用的中介軟體也很重要,所以我們之後也會來看Hadoop、Spark之類的中介軟體,但我希望大家可以舉一反三,否則只是學到皮毛而已。

效能工具(Performance Tools)的使用,是在實務上分析效能的關鍵。要解決問題,先要有資料;要有資料,最好是能自己動手蒐集,不必等人。要知道電腦系統裡面有很多效能監控機制,使用者可以透過效能工具取出這些資料加以分析。但是系統中有那些效能工具? 有哪些效能工具? 如何使用效能工具? 如何分析蒐集到的資料? 常常需要專業的知識,我們在學期稍後會講,但同學們可以先看。例如網誌的圖,上面列出玲瑯滿目的工具,來自於介紹Linux Performance Tools的網頁(註3),作者就是開顧問公司的。我們當年,在SUN的系統上開發了很多效能工具以及分析的方法,後來幾位SUN的工程師出去開了這家顧問公司。

我回到台大之後,也訓練學生做類似的工作,幫業界解決效能問題(註4)。但是因為過去代工業太賺錢了,願意花時間和傷腦筋創新的大公司不多,所以看到一大堆機會沒有被業界把握住,實在可惜。這幾年新創蔚為風氣,但許多贊助新創的機構的思維還是沒變,為了快速回收,只敢投在淺薄的技術研發上。

不過最近一些資金開始關注到某些「務實做有深度研發的項目」,燃起希望的火苗。例如有找我們解決效能問題的公司變多了,題目的素質也提升了;我學生畢業後到VMFive(註5)和Appier(註6)去幫忙解決效能問題;台灣開始有以解決效能問題的新創公司,例如Skymizer (註7); 翟神開的和沛(註8)最近重金禮聘幾位我認識的Linux專家,希望有好的發展。

台灣的競爭力應該是在人才的素質上,而不是人力的數量上。我想,眼前的業界,是朝向「質」的方向發展,這是可喜可賀的事。至於量的方面,關鍵是業界和政府能否把握機會行動,以及學生能否看清現實,而我只能盡人事聽天命,無法預測未來。所以請各位同學、業界朋友、長官不要問我,現在投入系統研發的行列,未來會不會大發。我只能說,學生要做的話就好好做到出師,業界要做的話就卯足全力衝刺,政府學界要做的話就給足資源,不上不下的半吊子,恐怕是難以呈現出價值的。

(註1)嵌入式系統商機大,卻鬧人才荒 (2005/01) http://www.ithome.com.tw/node/27357

(註2)現在和未來新創所需的技能 (2016/03) https://www.facebook.com/notes/洪�⋯⋯

(註3)Linux Performance http://www.brendangregg.com/linuxpe⋯⋯

(註4) https://www.facebook.com/notes/洪�⋯⋯

(註5)http://www.vmfive.com/


(註6)http://www.appier.com/zh/


(註7)http://skymizer.com/


(註8)https://www.hopebaytech.com/


(註9)https://www.facebook.com/groups/159⋯⋯

2016年3月16日 星期三

現在和未來新創所需的技能

看到這個世界經濟論壇報告裡講到2015和2020的Top Skills,如下圖。從2015到2020次序略有變動,耐人尋味。不過我比較關切的是從新創的角度來看這些Top Skills。基本上,新創的門檻會逐年提升,所以並不見得適合所有人,而且有些技能本來就需要某些資質和天份,不是說猛力訓練就能出得來,應該適性發展,不能過於勉強。同時,這上面所列的能力還頗多元的,但並不是說一個人必須具備所有表列的技能才行。



我先談與新創最有關係的前三項,之後有空再慢慢補充其他項目:
第一是解決複雜問題的能力(Complex Problem Solving),但是要如何才能訓練出這種能力呢?我們做系統研究,就是研究複雜系統裡面組件之間各種互動模式中可能產生的問題,這需要蒐集資料、細心觀察、分析問題根源、提出解決方案、實際驗證效果。這不是在學校裡做那些可預見結果的實驗,也不是去業界做那些受幾個月訓練就能上手的工作所能培養的能力。
第二是批判式的思考(Critical Thinking),更是那些乖乖聽話讀書的人所欠缺的訓練。我們的社會,一向不大鼓勵批判傳統主流想法,甚至把批判和特立獨行看成是叛逆。但是批判式的思考,並不是網民打口水戰、為反對而反對嗆聲,要有足夠深刻的思想,才能脫離膚淺的批判。
第三是創新的能力(Creativity)。在這個資訊爆炸的時代,已經有ㄧ輩子讀不完的好書和電影、電視,還有數位教育課程,甚至還有會解決已知問題、精準完成任務的人工智慧和機器人,如果不創新的話,那要做什麼事來呈現個人的價值呢?但要如何訓練創新的能力呢?除了天才和天份之外,我覺得上述第一和第二項能力也是創新的關鍵,如果懂得解析複雜問題、批判既有作法,那創新的機會可能提高不少。

此外,對於研究人才來說,排在五和第七位的Coordinating with Others和Judgement and Decision Making,也是很重要的技能。

但這些聽起來還是很抽象,要如何發展和應用這些技能呢? 要講清楚並不容易,剛好今天晚上在探索開源系統軟體時,看到一個技術創業的故事,剛好可以拿來對比以上所提到的技能。

話說我對Tachyon這個開源系統軟體很感興趣,原因可能是因為我也早有類似的構想,只是沒有找到有能力而且願意做的博士班學生。今晚突然想關心一下Tachyon的時候,發現他變成了1.0版,而且名字換成了Alluxio (註1)。想多了解一下為什麼換名字,就讀了作者的部落格。



Tachyon/Alluxio的作者HaoYuan Li還在唸博士班,讓我們來看看他的技術創業故事,也試著看看那些地方用得到上述的技能:
  1. HaoYuan Li是2008年北京大學畢業的學生,先到美國Cornell大學念碩士,2011年開始在UC Berkeley攻讀博士。他在北大時,在2005-2008年就到Google實習;2010年拿到Cornell碩士後,到Conviva這家2006年成立的新創公司做了一年,才到Berkeley念博士。所以在念博士班之前,就具備了相當的業界經驗。 
  2. 他看到AMPLAB實驗室出品的Spark和Mesos這兩個軟體紅起來,卻同時也看到這幾個軟體的不足之處 ,這應該就是所謂的Critical Thinking。 
  3. 於是在2012年底產生了Tachyon技術來補充不足之處的想法,這是所謂的Creativity。 
  4. 評估之後,決定這是值得研究的題目,馬上開始做,花了幾個月做出了Tachyon的雛型,這是Judgement and Decision Making。 
  5. 在2013/04開放原始碼,以與社群合作的方式繼續研發,這需要Coordinating with Others的技能。 
  6. 再花了兩年的時間不斷去改進Tachyon ,這就是博士班最強調的Complex Problem Solving 。 
  7. 在2015年獲得750萬美元的投資成立公司。到現在,阿里巴巴、百度、華為、IBM、BARCLAYS等大公司都開始用這個軟體,不知道Alluxio這個公司現在價值多少? 他作為CEO,要讓公司發展,可不能光憑技術,也需要People Management、Emotional Intelligence、Service Orientation、Negotiation等技能。 
當然啦,再說一次,我這裡談的是新創,而且不是說其他的技能不重要,也不是說一定要有這幾個技能才能做新創。個人要如何發展,應該是看個人的資質和願景而定,只是說世界在變,大環境所重視的技能也在變,統計上的資料有其參考價值,但還須要多觀察實際的例子以及了解自己的特性。

理想上,上述的技能,當然是越早適性開發越好,但我們常常批評在台灣長大的人,只會念書考試,我想中國也不遑多讓。我想HaoYuan Li本身的資質應該是頗優秀的,不過在這個例子裡,可以看到UC Berkeley研究所提供了發展和應用技能的環境和機會。這樣的研究所環境,台灣有沒有呢? 以前的學術界的問題已經談過很多,在此就不說了,現在學校比較重視新創和產學,所以建議諸位對新創有興趣的同學和業界朋友,可以設法找到這樣的環境,善加利用。

(註1) http://www.alluxio.com/2016/02/allu⋯⋯

2016年3月3日 星期四

改行做軟體與自學新專業

某位臉友來信談到轉行自學的問題,由於是常見問題,在徵得他本人同意之下,我公開回答他的提問,也希望諸位先進給與指教。

Q. 臉友提問:

我是您Blog & FB 的追蹤者,長時間閱讀老師所寫的文章,而老師也時常點出業界的弊病及提出改善的方法,台灣須從高資本低技術轉型到低資本高技術產業,已是刻不容緩的事情。

本身研究所畢業之後從事顯示器背光模組機構設計(兩年),近年來因技術被大陸追趕,不斷被搶單,而高層只想賺可以立竿見影的easy money,不願意長期投資先端的研發。因為硬體開發成本高的特性,底下的工程師縱使再有想法也無力影響公司改變,最後是失望離開。

因想要轉職&政府補助,在資策會進修過java web設計,目前做銀行AP的軟體撰寫。但是從硬體產業跳到軟體產業,發現若不從事深度技術的研發,依然是在做代工。若是想往系統底層技術發展,勢必須在系統軟體鑽研,而根據老師你近日的文章表示,此領域若不能全心投入很難有顯著的成果。

雖然本身透過下班之餘自學,但以非相關背景進入此領域還是感受到困難。由於您在平行運算&異質系統有深刻的研究,希望可以請教老師有關學習&如何踏入這行的建議。

A. 我的回覆:

在這個資訊全球化的時代,如果只是會做一些眾多人都會的東西,技術門檻不高的話,那麼無論做甚麼,所可能獲得的利益,恐怕還是會和硬體代工業或是傳統產業差不多,除非有個富爸爸或是政府補助。甚至由於資訊科技的進步極快,較為浮面膚淺的東西過不了多久就被淘汰,因此要在資訊界安身立命,談何容易?

如果細心看我的文字,我從來不隨便鼓勵年輕人走資訊科技這條路的,我只是說資訊界目前需要人才,而且在可預見的將來還持續提供人才發揮能力的舞台,但未必所有人都適合走這條路。事實上,這條路並不容易走,如果只是偏重技術研發,沒辦法在生態系中佔據一席之地的話,到頭來還是只能以技術代工,甚至在一窩蜂搶訂單,無法向上發展的情況下,就會遇到您所見的窘境。

我所謂的在生態系中佔據一席之地、向上發展,並不是說一定要擴大營業額、做品牌行銷。那是一般的迷思,覺得代工廠賺錢後,就應該放大利潤、朝品牌發展、直接面對消費者。我認為,以台灣本身的市場規模和經濟實力,在大型消費市場上做品牌行銷,需要大量資本和商業操作,如果沒有技術門檻的保護,很容易踢到鐵板。

因此,其實我並不反對代工,只是我們總是希望工作可以換取更高的報酬。代工業者如果精益求精,提高自己與競爭者的技術差距,就有機會獲得較高報酬。例如台積電、鴻海這些公司,雖然是代工,但他們長期在製造技術上所投入的研發,讓他們得以在生態系中佔據一席之地。

但是要向上發展的話,不只要會做漸進式的改進,而是要能解決原本不會,或是更複雜的問題。例如組裝iPhone的工廠和設計iPhone的Apple相比,一個強調代工製造的能力,一個強調「Think Different」,各有各的專業,但專業的報酬有頗大的差別。雖然很多人都覬覦Apple的高獲利能力,但這並非台灣的廠商能夠快速趕上的領域。

單單只是換個方向朝「軟體」發展,如果不能提高技術門檻的話,也很難提昇工作的報酬。美國的公司,在十多年前就將一些軟體的工作外包到印度去,而印度也欣然地扶植其軟體代工業,然而迄今印度的軟體技術以及從業人員的收入,仍然大幅落後美國。

印度的軟體代工人員的薪資不高的原因是軟體越來越複雜,用途越來越廣,但提高軟體價值的關鍵不在於軟體本身,而在於如何使用軟體開拓新產業,或是提昇既有產業的競爭力。因此,如果我們不改變想法,一頭熱投向軟體產業,做一些低技術門檻的軟體代工,那結果可能就如同您所描述的「從硬體產業跳到軟體產業,發現若不從事深度技術的研發,依然是在做代工」。因此,我希望國內在做軟體研發的時候,能夠找到一些方法來提昇產業的競爭力,包括與特定產業領域知識的深度結合,或是在軟體技術上產生差異化。

想與特定產業領域知識的深度結合,以您目前做銀行AP的軟體撰寫的工作為例,如果只是被動接受委託寫出銀行所需的軟體功能,那就是代工;如果您能夠深切了解銀行的需求,主動提出可能提昇銀行競爭力、因應未來需求的軟體方案,那就是目前最熱門的金融科技(FinTech)了。同樣是幫銀行寫軟體,工作性質有很大的不同。如果要做金融科技的話,就要有能力跟得上這門快速進步中的新興領域,如同我一開始講的,從業者本身若是沒有兩下子,談何容易?

那麼要在軟體技術上產生差異化,可以怎麼做呢?方法頗多,如我昨天在「開源系統軟體」社團上貼文提到,我們可以把改善開源軟體效能的方法分為四大類:

1. 改進演算法,這個是大多數CS的學生都可以試試看的

2. 加入JIT編譯技術加速,範例請參考Jim Huang (黃敬群老師)的筆記(註)

3. 改以平行化,分散式計算或異質運算加速

4. 改進資料流動的效率,例如以DMA/RDMA傳送資料,以caching存取常用資料,以memory取代硬碟存放大數據

要解決實務問題,招數不嫌多。第一招是最多人可以嘗試的,像是參加程式設計競賽一樣,要想到別人想不到的最佳的演算法,難度頗高;第二招需要懂一些動態編譯器的技術,屬於比較硬一點的軟體技術;第三招需要搭配計算機架構/平行計算/網路/GPU,也有其難度;第四招則需要打破傳統以計算為主的思維,在系統層面觀察實際資料的流動,再以軟硬體綜合規劃的方式去改善效能。

然而,要精通上述的每一種招數,都需要花費時間去學習和應用,很難速成。黃敬群老師昨天來我課堂上講三小時,學生起碼要花三十小時才能有起碼的了解,都是學生們必須自己嘗試去學習的,如果所有的東西都要等老師來教,那將來要如何面對快速進化的開源系統軟體?

今天有位大四的學生對我說,他聽了黃老師的課之後非常惶恐,覺得自己懂得太少。我勸他不要太擔心,因為業界有太多人基本的軟體功夫不夠扎實,很少跟社群接觸,根本不知道自己懂太少。知道自己懂得少,有幸遇到明師願意指導,就好好把握學習機會,只要一路學下去,就有機會成為專家。

此外,要使用上述招數之前,必須有能力解析資訊系統和複雜軟體的功能和效能,這些也不是短期間能夠精熟的東西。而且,就算能精通以上的技能,我們還是要回歸到應用面,想辦法用這些技能去改善高價值的軟體應用,提昇產業的競爭力,這樣才會得到重視。

所以說,您問到要如何踏入這行、鑽研系統軟體,這固然有其困難之處,但我想更關鍵的問題在於,您是否了解這個行業快速變化的特質,是否能夠適應這種不斷在演進的場域,願意花多少時間來學習成為專家,以及未來想如何展現身手、持續精進?如果只有下班之餘能夠自學,也不是不可行,但要在有限時間和資源之下迎頭趕上,恐怕難度頗高。

我個人已經浸淫在資訊科技將近三十五年了,到現在還是時常要涉獵新領域、學習新知識、思考新問題,才能維持自己在這個行業的競爭力和敏銳度,如果將此視為興趣,自然會樂此不疲,但若以此維生養家活口,那麼可能還是再考慮一下吧?

延伸閱讀: 關於產業轉型的部分,我另外寫了一篇網誌,可以參考一下: https://www.facebook.com/notes/洪�⋯⋯

(註)

https://ntuoss.hackpad.com/Mar-1-20⋯⋯

https://embedded2015.hackpad.com/Co⋯⋯

冀望新政府來解決學用落差?

包括小弟我在內,很多人探討這些年來高等教育的學用落差問題,有些人希望新政府能解決問題。

我多次說過我不想當官,只想做事,因為我認為在這個時代,當官不見得做得了事,要做事的不一定要當官,尤其是對我這個人而言。因為我個人認為,台灣當前許多問題的根源在於教育文化,而教育文化影響到經濟與政治,衍生出社會問題。這些根源性的問題,光是換一批人執政,或許能改善問題,但並不足以全盤解決。

我想,唯有民眾的覺醒,才能促使教育文化的提升。比如說以下這段報導,希望只是媒體的片段報導,也希望民眾會明察秋毫:

「蔡英文政策辦公室執行長張景森轉述,業者反映台灣教育系統與產業脫節,產業需要的軟體人才非常不足,因為老師教學生寫軟體、或自己寫軟體,也不能升等,造成教育系統產生的人才不符合產業需求。」(註1)

如果把上述這段的「因為」換成「其原因之一是」的話,那我可以接受。但是,邏輯上我不大認同以上這段的說法,因為完全沒有提到業界自己該負起的責任,包括業界提供具備吸引力的工作條件,以及業界與學界合作共同培養軟體人才。

教育部或是學校的長官們,或許不方便出面反駁這個未來可能是上級長官的張景森執行長所轉述的話,因此社會大眾和未來的執政團隊可能以為學界默認了此類業界人士的說法。

因為我沒有長官們的包袱,所以可以大膽跳出來說,當前的學用落差,是這些年學界、業界與政府所造成的共業,我們不能老是讓業界指責政府,政府訓示學校,而學校為了經費只好悶聲照辦,不敢說話。如果換了政府還是這樣幹,是超越不了這個共業所造成的障礙而持續這個循環的。

但坊間往往對於我這類沒權沒勢沒名的人的話不放在眼裡,當成是憤青、酸民之流,甚至學界大老會嗤之以鼻,說不在體制內反映意見,不好好做教學研究,寫這些沒什麼用。但在體制內反映意見能造成改變嗎? 什麼是好好做教學研究呢?

其實張景森執行長轉述的話,就是指出我們多年前就指出的大問題。雖然在過去這些年,教授要快速升等的話,教軟體不如專心寫論文,關心教育界大環境不如教學生鑽牛角尖,至少這是我親身經驗。但我覺得,在新的時代,學術界必須有新氣象,不能再延續這樣的舊文化,所以我覺得該做的事情要做,該講的話還是該講,只是累壞自己的身體,減少陪伴家人的時間罷了。

我在2014-2015年間,接受臺灣大學公共政策與法律研究中心的委託,探討學用落差的問題,撰寫了一份題目為【務實弭平學用落差與促進產學合作】的研究報告,收錄於【台灣高等教育與人才培育--學界業界與政府應負的責任】(註2) 的第五章,歡迎各界參考。學用落差的問題,牽連到產官學各界,如果各自為政,互踢皮球,推卸責任,那麼是解決不了問題的,想概略了解全局的話,可以看看這篇報告,在此我就不多說了。

該報告完成時大約是2015年5月,剛好當時的教育部吳思華部長找我和一群關心高等教育改革的人士某周末在部長官邸做非正式茶敘,我把這份360頁的報告,還來不及裝訂,直接呈上去給部長,建議他有空看看。當然,吳部長有沒有空看,我不知道。我只是想盡我作為國民的一份責任,以及述說我在學界的所見所聞所思。

的確,我是不能只靠教學生寫軟體、或自己寫軟體而升等的,我也不是為了升等而來做「開源系統軟體」的教學研究,而上述探討學用落差的報告,對我的學術生涯不會有加分作用,只希望不要被長官認為是不務正業就好。

有趣的是,這些日子以來,學術界似乎出現某種轉機。這一周來參與了系上的「產學合作」和「新興領域」的策略會議,討論如何鼓勵系上同仁做產學合作以及朝向新興領域發展。最近負責寫新的「研發基地」的構想書,教育部長官已不再拿「大學排名」和「學術卓越」作為首要的目標,而是洋洋灑灑列了十大點:

1. 對台灣前瞻創新產業發展的影響

2. 是否對解決我國社會重要問題有所貢獻

3. 是否成為該領域或主題匯聚校內外人才與研究成果的重要平台,並創造外部連結效益

4. 是否展現階段性研究進展

5. 是否與國際重要研究單位與社群建立合作連結關係

6. 是否在該研究領域上積極促進社會對話、每年提出政策建議書

7. 是否吸引全球人才來台就學工作

8. 在該領域是否擁有整合與學術領導地位

9. 研究成果回饋學生學習的情形

10. 其他學校自訂重點

當然,學術中人最會寫文章,所以要落實一切,最後還是要看評審是否務實,是否有眼光,是否能抗拒人情壓力。否則,就算文章作得再好,結果靠學術人脈結案,還是務虛一場。

除了教育部,產業界和其他政府部門似乎也開始想玩真的,想多投一些資源在軟體研發上,對於開源系統軟體有興趣,找我諮詢發展軟體的對策等等,甚至學生們也動了起來,開始關心起資訊教育。我想,這些都是好現象。

在我談理念的同時,我也跟年輕人談現實面,理想和現實往往是有段距離的,最終還是得一面尋求平衡,一面藉由創新來降低期間的落差。想降低學用落差,也是一樣的道理。我昨天才寫了一篇網誌,公開回應一位想轉行的臉友(註3)。我說,現在是個全球資訊化的時代,當年台灣靠著與美國日本的友好關係和技術合作,也得花上一段時間才能建立起硬體代工、代設計產業,現在某些代工產業所面臨的問題,在於技術門檻不夠高、差異化不夠,會做的人多,只好削價競爭,但是那些夠專業的代工廠,還是有其生存之道。我們鼓勵創新,但同時希望技術門檻要夠,才能真正改變產業。

我希望多一些像我一樣做軟體教學研究的教授能夠升等,但我不能保證;我希望多一些和我合作做軟體技術研發的公司能夠發達,但我不能保證;我希望讓多一些對軟體有興趣的學生更上一層樓,但我不能保證他們一定找到理想的工作。不過我個人覺得,好好想清楚,找到值得努力的理想,比起找到確定能大發利市的工作,更是個人能把握的事情。

對我來說,有個值得努力的理想,在努力的過程中嘗試縮短理想與事實之間的差距、讓自己看得起自己,這樣的意義性比獲得名聲、財富、地位更重要。當然,名聲、財富、地位可能對於達成理想有所幫助,但若捨本逐末,那我就不是現在的我了。

總之,想改變社會亂象,不能只冀望政府,也需要眾多人的努力,唯有促使教育文化的提升,才是根本的解決之道。至於如何影響教育文化? 我想,不是只能由教育部、文化部來告訴我們什麼是教育文化以及解決學用落差問題,可以是由我們主動來告訴教育部、文化部,以及更多的部會,我們希望有甚麼樣的未來,以及我們願意承擔哪些責任。

(註1) http://udn.com/news/story/9485/1532⋯⋯:要能與產業溝通-推動新人才培育,聯合報,2016-03-01

(註2) 「台灣高等教育與人才培育--學界業界與政府應負的責任」,陳永芳、周祝瑛、洪士灝等撰,臺灣大學公共政策與法律研究中心研究報告,2015/05,http://www.cppl.ntu.edu.tw/research⋯⋯

(註3) 洪士灝,臉書網誌: 改行做軟體與自學新專業, https://www.facebook.com/notes/洪�⋯⋯

2016年2月17日 星期三

非絕招的絕招 - 淺談RDMA的小知識與大效用

有些高階網路介面卡支援RDMA (Remote Direct Memory Access),但仍然很多人不知道RDMA是什麼,以及它能用來做哪些好事情呢?

RDMA主要是可以讓某台機器可以透過網路介面卡所提供的API,直接存取在另一台機器上的記憶體,免去透過傳統作業系統與網路協定所增加的負擔。(註1)

這項功能純粹是為了效能而存在的,對於現代已支援各種網路協定的系統而言,RDMA並沒有增加系統的功能性。換言之,RDMA是一項可有可無的、需要硬體特殊支援的系統功能,有了它,可以節省電腦系統在做資料交換時,作業系統所耗損的運算資源和降低延遲(latency)。

因此,RDMA不是人人都需要懂得,也不是到處可見的,近年來RDMA被率先用於高效能計算(HPC)上10Gbps乃至於100Gbps的高速網路,目前它逐漸被利用資料中心和大數據運算時,作為提高資料傳輸效率、降低系統能耗的手段,例如用RDMA加速Hadoop、Spark,以後可能會被用在某些強調效率的物聯網的裝置上。

實際在網卡上使用RDMA的範例,可參考(註2)。如果看懂這份200多頁的文件,應該就很清楚知道RDMA能做哪些事情。

但光是學會RDMA是不夠的,要發揮出RDMA的作用,必須要懂得將RDMA實際用於應用面上,必須要懂得軟體和效能分析的技術,分析效能的瓶頸和資料交換的模式(pattern),才能善用RDMA,否則可能不光是達不到預期的效果,還會減損系統效能,甚至危及系統的安全和穩定度。

首先在效能上,必須考量資料的傳輸模式,包括每次資料傳送的大小、資料的連續性、傳送的時間間隔、傳送的對象等等,來決定如何使用RDMA。我們可以讓傳送端主動把資料放進接收端,或是接收端主動到傳送端提取資料,究竟該用哪種模式?何時該進行傳輸?是否要用高階的gather/scatter功能? 這些都是要根據實際狀況才能回答的問題。

為什麼說RDMA使用不當,可能會危及系統的安全和穩定度? 因為「讓某台機器直接存取在另一台機器上的記憶體」這樣的功能,好比「讓某人直接進入你家存取東西」,如果某台機器被入侵,有可能危及其他機器的安全;也好比「共享記憶體」會造成搶資料的問題,如果兩台機器沒有同步好,可能會造成race condition,系統就會不穩定。

因此RDMA也不是隨隨便便能夠使出來的絕招,必須先精通軟硬體的實務才行。所以,絕招其實並非絕招,招數本身說穿了並不難,只是說使用者沒有足夠的軟硬體功力,練了絕招也沒有用。如果笑傲江湖裡的令狐沖沒有好好練個十多年的武功,突然接收了獨孤九劍的心法也沒有什麼用的。當然,並不是每個花很多時間練功的人,都能領悟獨孤九劍的要旨,學了也不見得會用。

話說RDMA也不是那麼罕見的概念,基本上RDMA是由DMA (Direct Memory Access)轉化而來的技術。說到DMA這個幾十年前就廣泛被使用在各種電腦系統的東西,很多做硬體設計和I/O驅動程式的人都很熟悉, 可以在單一機器中讓CPU節省傳送資料的時間,例如把大量資料送到磁碟機、網卡、顯示卡,甚至軟體想做大規模記憶體複製(memory copy)的時候也可以使用,普遍得不得了。

我原本以為,既然DMA是如此普遍的概念,那麼多加利用DMA和RDMA來改善系統效能的這件工作應該不難,但其實並非如此。看懂別人怎麼利用這些招數,和真正學會如何利用這些招數,並不是同一件事。很多做底層作業系統和驅動程式的人都看過DMA,有些會拿現有的範例照抄,但有多少人會調整DMA的使用方式或是用於解決新問題?

舉例來說,我們十年前玩過當年最紅的多核心處理機之一,IBM Cell (註3),用在超級電腦和Sony PlayStation 3上,所以我們實驗室買了十幾台PS3,用來做教學研究。這個系統晶片有個特點,晶片上多個處理機核心之間資料的傳送,是靠DMA來進行的。雖然DMA很有效率,但是很多程式師不大會用DMA。當年開發Cell的chef architect,Peter Hofstee,後來跟我們一起合作,聊起這件事,他覺得這些程式師暴殄天物。

我讓學生學習如何在Cell上運用DMA,發展效能分析工具,甚至有位學生設計出一個輕薄(lightweight)的message-passing library,使用DMA來加速CPU之間資料的傳送。不只支援Cell,也支援工研院所研發的異質多核心處理機PAC Duo,拿到ACM RACS會議的最佳論文獎 (註4)。事實上,實驗室還有其他幾個作品,也用了DMA來提升效能。

從眾人熟知的DMA延伸到RDMA,只是把單一機器改為多台機器,概念極為類似,所以要理解並不難,但如果要會運用,還是要實際運用才行。因此,我們建置了一套以100Gbps網路連接的小型叢集(cluster),打算來訓練學生使用RDMA,研究如何解決big data系統中資料傳輸的問題。很多開源碼系統軟體還沒有被好好優化,而且優化的方式就像以上所講的,必須根據實際應用的狀況而定,因此這裡有很大的發展空間。

RDMA 只是眾多非絕招的絕招之一例,還有很多這類的招數。我自己對於效能分析與優化特別感興趣,所以一路走來,到處學習、運用、發掘這類招數。但就像以上所描述的,這類招數說穿了一點都不稀奇,所以旁觀者看了覺得好像沒什麼了不起。國外的公司懂這類技術的人多,比較能夠賞識這樣的技能和成果;但某些台灣公司主事者的心態很奇怪,你化繁為簡,講到他能聽懂,他就以為你沒什麼了不起,以為他自己可以找到價美物廉的人在做同樣的工作。關於這點,可參考我兩周前寫的故事(註5)。

的確,這沒什麼偉大,但一般人懂了不見得會用,會用不見得會解決問題,所以「專業」不是一天造成的。以為自己官大學問大,不尊重專業,夜郎自大,自我設限是常見的通病。這篇文章的目的,在分享如何在系統開發上「同中求異」的心得,如果不想老是做跟人家一樣的東西,要如何創新? 基本功夠扎實,加上一些特異功能,例如本文的RDMA或是異質計算,那麼很有機會做出比別人好的系統,這其實不難,也不容易,需要務實培養專業能力。往好處看,台灣現在越來越需要,也比較能賞識這類人才。

(註1) https://en.wikipedia.org/wiki/Remot⋯⋯

(註2) Mellanox, RDMA Aware Networks Programming User Manual, http://www.mellanox.com/related-doc⋯⋯

(註3) https://zh.wikipedia.org/wiki/Cell_⋯⋯

(註4) Building a scalable and portable message-passing library for embedded multicore systems, http://dl.acm.org/citation.cfm?id=2⋯⋯

(註5) https://www.facebook.com/notes/洪�⋯⋯

2016年2月4日 星期四

那一年我們做系統優化的故事: 為什麼我們會做學界業界不(屑)做的研發?

 前天在與某廠商開會時遇到10年前做過產學合作的熟面孔,為了保護他的隱私,這裡稱他為X先生好了。X先生說他還清楚記得當年我們幫他的老東家「廣達的儲存伺服器研發部門」所開發的技術,這點讓我頗感驚訝。

事隔十年,保密協定也早過期了,論文也發表過了,所以應該可以來說說這個故事。

在2006~2007年間,我們與廣達做產學合作,那是我2005年回國後第一個產學計畫,我帶著實驗室草創後的第一批研究生,研究廣達剛剛研發出來的中階儲存伺服器。這個中階儲存伺服器,有兩個大腦 (雙控制器)來提供容錯功能,每個控制器上有一個處理機跑著廣達輾轉向國外某公司買來的複雜軟體,為了要快,雙控制器把從硬碟載入的資料放在一塊特殊的共享記憶體,然而整個系統,跟競爭對手比起來,還是不夠快。

X先生在前天對我說,他覺得我們很厲害,能夠搞定這個困擾他們工程師許久的非常複雜難懂的系統軟體,把這個儲存伺服器的極速提高了將近十倍,對於產品的競爭力有很大的貢獻。

其實這不是我們厲害,我們做效能分析和優化都是有方法論 (methodology)和工具 (tools)為基礎的。沒有這些,只能做些簡單的東西,不能做複雜的工程。國內很多研發單位只重視短期研發,根本不懂這些。(我講的十年前的狀況,廣達研究院現在應該好些了吧?) 我聽過有人說: 「什麼方法論、工具的? 反正就叫工程師拼命加班做,限時完成產品不就好了? 」所以我跟這些人談前瞻系統研發,等於秀才遇到兵,說也說不清,只有等他們遇到解不了的複雜問題,才會知道專業的價值 -- 現在搞雲端、大數據、物聯網、異質計算,這類複雜問題比比皆是,所以很多人毫無頭緒自己該做甚麼,可能也沒能力做甚麼。

首先,為了分析這台儲存伺服器的效能,我們還特別打造了效能分析工具。黃書政同學,做出了一個利用GCC編譯器在產生機器碼時在程式的進入點和離開點處插入追蹤器以產生追蹤資料,用以觀測程式執行流程的方法。這個工具幫助我們精確地分析儲存伺服器上軟體的流程,黃同學也以此作為碩士論文:

【一個針對嵌入式軟體的追蹤和效能分析技術 (Developing new tracing and performance analysis techniques for embedded applications) / 黃書政(Shu-Jheng Huang), 2007】

當年追蹤分析系統最強的工具之一,是SUN的 Solaris kernel team所開發的DTrace,這個技術後來也被IBM拿去做Linux上的SystemTap。在黃書政同學開發新工具之時,林以迪同學研究如何利用DTrace來自動化分析應用軟體的效能,後來他的分析方法幫助到這個廣達的計畫,也以此為題寫了碩士論文:

【利用DTrace在Solaris系統上以自動化方式建立應用軟體的效能模型與分析 (Automating server application performance modeling process on Solaris system via D-trace and trace-driven analysis) / 林以迪(Yi-Di Li), 2007】

要知道,一般的效能分析多半是針對CPU-intensive的應用,探討CPU的使用,然而儲存伺服器的重點不只在CPU上,還包括磁碟和網路這類的I/O動作,這些是一般工具和普通工程師較難對付的部分,所以陳人豪製作了一個量測和模擬的框架,讓我們能評估I/O部分的問題,這也是他的碩士論文題目:

【系統層級的效能量測與評估框架 (System-level performance profiling and simulation framework for I/O-intensive applications) / 陳人豪(Jen-Hao Chen), 2007】

不要忘了, 一個複雜的多工系統不只是一次只做一個工作,還有多個核心來做多項工作,所以張筱薇同學 (實驗室唯一的女生!)選擇做這個最硬的研究工作,利用SystemC做出一個能夠快速分析多執行緒應用程式效能的模擬環境,令我感到非常難能可貴:

【設計與實作一個快速分析多執行緒應用程式效能之多核心系統模擬環境 (A rapid simulation environment for application performance estimation on parameterized multi-core/multi-threading architecture models) / 張筱薇(Hsiao-Wei Chang), 2007】

搞清楚效能的問題所在,接下來就是設法優化(optimize)其效能了。怎麼做呢? 我們實驗室研究效能優化,著重的是那些編譯器做不到的事情,而不是那些編譯器可做的事情,這是跟那些做編譯器研究的實驗室最大的不同。我們認為,天底下有太多編譯器做不到的最佳化工作,厲害的人可以手動搞定。

舉例來說,編譯器往往不知道該怎麼優化程式,所以提供一大堆選項讓開發者來選。當時的GCC有42個可能影響效能的選項,請問要怎麼選? 至少有2的42次方種組合,不可能暴力搜尋。陳奇孟同學在十年前就採用的現在最紅的「機器學習」來幫助編譯器自動找到最佳的選項集合:

【以機器學習快速的搜尋最佳編譯器選項集合 (Finding the best compiler optimization option set rapidly via machine learning) / 陳奇孟(Chi-Meng Chen), 2007】

然而,一般的搜尋方式,只適用於普通的應用程式,為了最佳化這個儲存伺服器的核心,每次編譯過後必須重開機測試效能,所以非常耗費時間,所以林煌森同學針對這個議題設計了一套自動化搜尋機制:

【自動搜尋編譯器選項最佳設定 : 應用於儲存伺服器核心模組效能之提升 (Automatic selection of compiler options for performance optimization on the kernel modules of a storage server) / 林煌森(Huang-Sen Lin), 2007】

適當選用編譯器的選項,的確提供了效能,但真正讓這套儲存伺服器效能起飛的是對於軟體架構的改進。然而,如果沒有蒐集足夠的效能資料和對於系統完整的分析,根本不可能碰觸到軟體架構的改進,所以最佳化的成果還是得歸功於整個團隊的合作。

陳嘉翔同學在這套儲存伺服器中,加入了高效率的快取索引表,大幅改善了原本極為沒效率的搜尋機制。誰知道這套廣達花錢買來的軟體,會寫得這麼沒效率呢? 陳同學的碩士論文:

【磁碟陣列系統之最佳化研究 : 快取索引表之設計與實作 ( Performance optimization on a RAID system ; design and implementation of a fast indexing table for disk caching) / 陳嘉翔(Jia-Siang Chen), 2007】

吳建成同學算是集大成者,他不僅加入了預測使用者未來的需求做預先提取(prefetch)的機制,同時負責整合和評估最終的結果,寫出他的碩士論文:

【評估快取與預先提取在儲存伺服器上的效能 (Performance evaluation of caching and prefetch strategies on a storage server) / 吳建成(Chien-Cheng Wu), 2007】

總合來說,這些研究,讓儲存伺服器的極速提高了將近十倍,而廣達只贊助了我們一百多萬台幣的研究經費 ,這不能怪廣達小氣,這對當時沒有國科會經費、又沒有名氣的我來說,這筆錢讓我能夠購買設備和供養學生;不過這點經費大概只能僱一位菜鳥工程師做一年研發的成本,如果比起當年廣達贊助MIT的研究經費以及給台大的捐款,所以我想廣達的經費應該是大大值回票價了。

但或許廣達不這麼看,這才是當時身為菜鳥助理教授的我,最為感到不值的部分。那個儲存伺服器研發部門,被長官要求要自負盈虧,為了要在短期內謀求利潤,只好開始刪減「不必要」的研發開支,所以在一年的研究期間過後,就沒有下文了。

所以我說國內業界短視近利、不懂軟體研發,這是我親身經歷的第一個實例。X先生應該是站在我們這邊,但他當時也是小咖,即便覺得應該持續贊助我們,也改變不了大長官的旨意。X先生目前在某大公司擔任處長,前天開會中發言強調軟體開發的重要性,支持提早做軟體的開發,我聽了非常窩心,希望業界有更多懂得系統和軟體的人才。

另外,在學術方面,我指導這批第一屆的研究生做實務研究,在2007年產出了八份碩士論文,忙得不亦樂乎,隨後將部分論文改寫投稿,在2008才發表兩篇國際會議論文(註一) (註二),2009年一篇(註二),投資報酬率極低,發實務研究的論文難度高,是其他領域的人所不能夠理解的。

首先,關於這類系統研究,教導學生基本知識和技能、指導學生做研究、解決實作問題、驗證研究結果,原本就可能要比其他領域花更多心力;其次,要寫一篇優質的實務研究論文,必須能言善道、精準犀利,但大多數學生推導數學公式可以,寫程式可以,卻不大會用英文談論設計方法、分析利害得失、探討關鍵議題、展現系統優勢,如果要在國際會議或期刊上發表論文,我們必須在論文寫作上花很多時間。另外,寫論文時還要顧及與廠商的保密協議,必須遮遮掩掩的,當然更不利於發表。

所以我說國內學術界在數SCI論文數量的同時,把很多教授和學生逼上找尋容易發表論文的途徑,像這類我認為很有價值的產學合作,在那個SCI掛帥的年代,因為事倍功半,所以被年輕教授們視為畏途。

業界短視近利,加上學術界SCI掛帥,我對於這個系統優化的產學研究案的積極投入,算是非常吃力不討好,唯二能夠安慰自己的,第一是教出一群能實作的研究生,第二是這個研究案讓我更清楚我們能做出業界需要的前瞻研究,只是時機未到。

至於個人的學術成就,懂的人就懂,對於那些只會算論文數量的人,我也不冀望他們的理解。但上述的情況在這些年嚴重阻礙台灣的產學發展,造成前瞻研發不務實、論文氾濫的現象,甚至影響教育品質和人民生計。然而,產業仍不乏有能人,學界還是有志士,只要堅持走對的方向,我們還是有可能走出困境的。



(註一) Shih-Hao Hung, Chia-Heng Tu, and Chien-Cheng Wu, Optimizing the Embedded Caching and Prefetching Software on a Network-Attached Storage System, in Proc. 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing (EUC) , pp.152-161, Shanghai, China, December 17-20, 2008.

(註二) Shih-Hao Hung, Shu-Jheng Huang, and Chia-Heng Tu, New Tracing and Performance Analysis Techniques for Embedded Applications, in Proc. the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA) , pp.143-152, Kaohsiung, Taiwan, August 25-27, 2008.

(註三) Shih-Hao Hung, Chia-Heng Tu, Huang-Sen Lin and Chi-Meng Chen, An Automatic Compiler Optimizations Selection Framework for Embedded Applications, in Proc. the 6th International Conference on Embedded Software and Systems (ICESS) , pp.381-387, HangZhou, Zhejiang, China, May 2009.

2016年2月3日 星期三

歷史的「真相」

清大彭明輝教授最近發表的〈失去真相的台灣史〉一文(註1),由於彭教授讀者眾多,因此也引起不少爭議,其中包括朱宥勳先生寫的『敬告彭明輝教授:一個說故事的小常識』(註2),從寫作的觀點,指出彭文的偏頗之處。還有其他的批判,我想就不一一列舉。

短論文的根本問題在於:「要用如此少的篇幅,論這麼大的議題,怎麼論得完整?」既然論不完整,那要怎麼論?如果使用的語氣十分強烈,恐怕文章所引發的爭議將多過溝通和理解。如果明知道論不完還要論,若不是有所圖,那多半就是作者心中有諸多想抒發的意見。

我有幾次評論過清大彭明輝教授的文章,雖然看法不同,不過我對於他的人品是頗尊敬的。有一次與他在台北同桌各自表述如何讓產業轉型提升經濟之後,比較能夠理解他看事情的出發點。

或許,採取激烈的言詞,是為了突顯議題、引發討論所不得不為之事,尤其對於當下的政治型態而言,非得如此才能喚起大眾迴響;然而,如此一來,與學術和理性不免有所牴觸,甚至漸行漸遠,恐怕對於作者來說也是頗為矛盾的情結。

「中國」傳統以來,乃至於近代台灣的史觀,往往與政府的意識型態環環相扣,以遂行掌權者的政治訴求。意識型態高於對於史實的認定和解讀,歷史教材淪為統治工具乃至於愚民的劇本。讀吳鳴兄這篇「重訂課綱,吹響號角」(註3),看到歷史學者講述對於影響史觀極大的「春秋筆法」,以及為了近百餘年來學者為了型塑「中國」國族主義所做的重重努力。

我和吳鳴兄,也就是「政大彭明輝」,算是喝茶吃飯聽音樂的好朋友,數次聽吳鳴兄談到台灣的歷史教育,感觸頗深,因此在此很高興看到吳鳴兄把他的見聞和想法記錄下來分享大家,他這篇「重訂課綱,吹響號角」,非常值得閱讀和深思。

各位可以選擇相信歷史課本的內容,或是選擇相信親朋好友記憶傳承的歷史,但誰能告訴我「真相」是甚麼?

很不幸的,我不認為歷史的真相能夠輕易取得。那該如何是好?

我到中國拜訪朋友,比對彼此所認知的近代史,差異甚大,沒有人知道哪個是真相;在對岸看到諸多未曾見過的台灣品牌,也是真假難辨。人在社會中,難以擺脫政治,這些圍繞身旁、似真似假的歷史文化,我可以選擇接受它們的存在,但未必相信,也不願被這些意識形態左右,正如同我可以為了考試和與人溝通而背誦歷史故事,但我不會照單全收。

然而,真正我個人所關切的,不是歷史上的人事物,而是我究竟能夠從這些人事物的故事學習到什麼? 為此,我得過濾從小到大所吸收的資訊,釐清各界加諸於我的意識形態,甚至必須先將那些基於「受汙染的資訊源」所衍生的知識和信念打破,再小心地重建。

打掉重練個人的歷史觀,是我近年來不斷在做的事情。我必須說,這是很不容易的事,一開始,會發現不知道該相信什麼;然後,會發現不同的觀點都有某種道理;但是,更深層檢視後,可能會看到幕後所埋藏的意識形態和根本旨趣;最後,很可能還是無法確認何者是真相,但至少能夠稍微擺脫這些意識形態所加諸在我身上的束縛;當然,非得要做選擇的時候,還是挺傷腦筋的事情。

我可以不要這麼辛苦,就選擇相信那些自幼成長時所接受的傳統的中國式教育(至少那時候天天高喊復興中華文化),或是轉換到時下流行的台灣優先,然後以這些意識形態出發看待事情,撰寫一篇一篇非黑即白、非友則敵、以偏概全、無限上綱的論述文章。

但那只會讓我距離真相越來越遠,也不是我所要的學習歷程。

然而,時下基於政治意識形態的文章多,因為想從文章中得到政治立場的支持或是心理慰藉的人多;掌權者企圖藉由教育工具影響人民思想的作為多,只要有效,這類作為就不會停止。只要政治掛帥,可以合理化學術的扭曲、掩蓋人格的瑕疵,那就持續會有專家學者用那種貌似「我在追求真理」的論述方法,遮掩個人已有的立場、成見、意識形態,藉由引用數據例證,撰寫貌似符合科學、理性之作,來影響群眾,遂行其政治意圖。

民主政治要好,根本之道,是人民有能力擺脫層層的思想控制,而且有能力不靠統治者加諸的意識型態彼此溝通理解、共同合作。因此人民本身的素養,決定了民主政治的高度。一旦政府發現人民不受教材的擺布,那自然就不會想藉由教育體系來遂行政治目的。

話說,我這些年來寫文章的第一優先,不是宣傳理念,而是「澄清個人的思辯」,從這個角度去增進與人之間的溝通。如果能夠藉由文章去增進彼此對於這世界的理解,那會是多美好的事情?

雖然,在這個紛紛擾擾的世界,我們很可能不知道甚麼是真相,缺乏共同的基礎,那麼理解、同理、包容、表達的能力,就變得更重要了,這是我持續在觀察和學習的。

(註1)失去真相的台灣史
http://mhperng.blogspot.tw/2016/01/blog-post_24.html
(註2)敬告彭明輝教授:一個說故事的小常識
http://opinion.udn.com/author/articles/952
(註3)重訂課綱,吹響號角
https://www.facebook.com/pangmingfui/posts/826882854101876

2016年1月10日 星期日

人工智慧太厲害了,我們該怎麼辦? (Part II)

昨天概說了人工智慧過去和未來性 (註1),在技術面上著墨不多,所以今天來談談技術面。

首先是關於「摩爾定律」,我在半年前寫了一篇「後摩爾定律的世界和台灣的產業發展」(註2),有興趣的人可以參考一下。我當時說:

「說白一點,摩爾定律是錢砸出來的。摩爾定律的黃金時代,開始於個人電腦急速成長的時代,但個人電腦的效能在十年前就已經能夠滿足大多數個人,所以「世界」對於摩爾定律的期待逐漸降低,雖然智慧手機和平板的異軍突起,但主要是希望摩爾定律能夠提供更高的性能耗能比(power-performance),然而這幾年手機平板已趨於飽和,也沒看到真正個人所需要的高性能耗能比的應用(killer apps),再加上像Qualcomm、Samsung這樣的公司上在推出新的行動晶片上屢次因為晶片過熱而踢到鐵板,所以在既然沒有消費者的需求,晶片製造商也裹足不前的情況下,自然就會降低對於摩爾定律的挹注。」

「我想,在缺乏資金挹注的情況下,摩爾定律在技術上能延續的機率不高,即便不少研究者熱中於此。除非有真正大眾需要的應用,或是再度出現軍備競賽,否則很難改變摩爾定律的終結。」

但任何事都可能有例外,不能太鐵嘴,還好我最後有加上一個以「除非」開頭的句子。人工智慧是否能成為大眾真正需要的應用,或是用於軍事用途? 我想其可能性還不小,所以我在這幾個月跟一些業界朋友說,不要再搞那些傳統的消費電子產品了,要想想如何將「智慧」加進產品之中。

怎麼把「智慧」加進小型的裝置之中? 基本上,有下列方法:

(1)由小型裝置自己做
(2)藉由網路把工作送到集中式的伺服器去做
(3)藉由網路把計算工作送到周遭多台機器分工合作
(4)上述三種的組合

先說「自己做」行不行? 現在很多人手上的手機,能做多少事情? 其實手機可以做很多事情,只是會遇到過熱和電量不足的問題,但是這兩個問題影響較大的是較長時間使用的應用,如果我們要的是「即時性的智慧」,那麼問題應該比較像是「如果手機在五秒內全速執行,能夠解決那些問題」?

舉例來說,即將出現在手機市場上的Qualcomm旗艦處理機Snapdragon 820有多厲害呢? 據說(註3) 這顆晶片的 4核CPU比前一代S810的8核快35%,省30%的電,支援600Mbps的無線網路,其中的GPU也快了40%、省40%的電,還支援OpenCL 2.0。不只如此,他還有一顆名為Spectra的影像訊號處理機(image signal processor),可以加速影像處理和支援電腦視覺(computer vision)。

要自己做,可以,要想辦法把各種運算能力整合到晶片上。要讓手機晶片有智慧,不能只靠跑在CPU上的純軟體,一定不夠力的。有些應用可藉由GPGPU來加速以資料為主的運算(data-parallel computing),例如做機器學習的開源軟體,Mahout和Caffe,都可以用OpenCL程式碼跑在GPU上。另外,以影像和聲音為主的應用,則最好設法在源頭解決問題,也就是說在感測器紀錄影像或聲音之後馬上送到訊號處理機,使用專門特殊化的(specialized)計算架構來提升效率,其實電腦視覺也可算是初步的人工智慧。

從上述的例子,可以看到「特殊化」處理機的趨勢越來越明顯,因為用CPU跑純軟體太沒有效率。時下很多人討厭寫C程式,喜歡用像是Java, Javascript, Python之類的高階語言來開發應用,但是對於開發與效能息息相關的系統軟體的人來說,光是懂得寫C程式可能還不夠,要懂得multithread、OpenCL、CUDA才會善用多核心的CPU/GPU,要懂得訊號處理機的架構和專用語言才能發揮其能力,甚至要會使用「硬體描述語言」才能用FPGA來加速計算。

我預測未來這十年,是大家各憑本事、各顯神通,想盡辦法來打造智慧系統的黃金年代。我們將會看到百家爭鳴,在計算架構和軟體設計上不斷推陳出新,快速發展。當然,演算法也極為重要 -- 再厲害的運算能力,也挽救不了愚笨的演算法。而且,針對大系統所開發的演算法和軟體,不見得適用於小機器,例如把Google釋出的Tensorflow裝在小機器上,可能會發現它的效率不彰,所以各公司可尋找屬於自己的利基市場(niche)。

當然,如果不限定要帶在身上,智慧型裝置也可能出現在車上、電線桿上的監視錄影機。因為體積和電力供應較大,我們有機會將百倍於手機的運算能力放進這些裝置。所以某些人工智慧的應用,可能會先出現在這類裝置上,例如前幾天的CES 2016,我們看到NVIDIA和Qualcomm都推出車用的處理機(註4)(註5),來搶攻這類市場。

這是新興市場,我希望台灣的業界人士看到以上幾段會頗為振奮,尤其是那些在硬體公司寫系統軟體的朋友們,這是值得把握的機會。如果您能夠針對某個智慧型應用設計出又快又省電的系統,那就有機會逐鹿天下。不過呢,要把握機會,必須先搞清楚這些研發工作將會需要「緊密的垂直整合」,最好有一個人才濟濟的團隊,針對應用的需求規劃系統軟硬體,要有「軟體為主,硬體為輔」的思維,最好要找到軟硬兼備的系統架構師(system architect)來領導研發工作,如我在這篇專訪上談到的(註6) 。

當然,我們也可如第二種方法,「藉由網路把工作送到集中式的伺服器去做」,來提升小型設備的智慧。但首先,網路傳輸需要時間,不利於即時性的應用;其次是隱私性和安全性的問題,我們未必希望讓大公司那麼清楚的知道我們的一舉一動,所以也可能不希望把全部的工作送到集中式的伺服器去做;再來,極為耗費運算資源的工作,除非Google能夠由此獲的廣告利益,否則它未必願意提供免費的伺服器資源來幫大眾做這個,所以並非所有應用都會有免費服務。

同時,在資料中心做人工智慧的運算,更需要高效率的加速技術。因此現今很多大公司都在積極找高手來加速需要大量運算的服務,例如微軟有個專門以FPGA加速資料中心服務的研究團隊Catapult,陸續發表加速搜尋引擎和機器學習的技術(註7)。

第三種方法與第二種方法的差別,在於利用較近的機器做計算來縮短時間,選擇能夠信任的機器來保護隱私,以及以互助會的模式來分享互惠資源。我們做過這類模式的相關研究,也實際建構出系統,例如這篇將Android程式中大量數據處理的工作轉移其他機器的作法(註8)。雖然目前還缺乏需要這種模式的高運算量行動應用,不過我相信在未來身邊需要人工智慧的時候,應該會有這類的需求和做法。

實際的作法,也可能是以上三種方法的排列組合。至於如何排列組合,就考驗系統架構師的能力。台灣現在很缺系統架構師的人才,缺到業界連如何善用系統架構師、去哪裡找這些人、如何培養這種人都不知道。以前做代工不需要這種人才就算了,如果現在還不知道,那就難做了。現在業界有不少地方都說要做人工智慧,但我奉勸想加入這類團隊的朋友,先看看帶頭大哥懂不懂,有沒有兩把刷子再說。

(註1) 人工智慧太厲害了,我們該怎麼辦?
臉書版: https://www.facebook.com/shihhaohung/posts/1072464976129323
部落格: http://hungsh-ntucsie.blogspot.tw/2016/01/blog-post.html

(註2) 後摩爾定律的世界和台灣的產業發展
臉書版: https://www.facebook.com/shihhaohung/posts/968793609829794
部落格: http://hungsh-ntucsie.blogspot.tw/2015/07/blog-post_13.html
轉載於Inside: http://www.inside.com.tw/2015/07/14/post-moores-law-and-the-industry-development-in-taiwan

(註3) Qualcomm's Snapdragon 820 INSANE Specs & Features DETAILED
http://www.knowyourmobile.com/samsung/qualcomm-snapdragon-820/23126/qualcomm-snapdragon-820-release-date-specs-features-android-n-launch

(註4) NVIDIA推出車用人工智慧電腦NVIDIA DRIVE PX 2,號稱性能比 Macbook Pro強150倍http://www.techbang.com/posts/40654-nvidia-at-ces-not-flagship-graphics-card-but-strong-for-a-taxi-containing-artificial-intelligence-supercomputers-nvidia-drive-px-2

(註5)
【CES 2016】高通發表 Snapdragon 820A 車用處理器,具機器智能神經學習系統
http://technews.tw/2016/01/08/qualcomm-snapdragon-820a-automotive-processor/

(註6) 深化產學合作!向沒有能力領導創新的大企業說掰
http://www.bnext.com.tw/article/view/id/38432

(註7) Project Catapult
http://research.microsoft.com/en-us/projects/catapult/

(註8) Shih-Hao Hung, Tien-Tzong Tzeng, Gyun-De Wu, Jeng-Peng Shieh. A Code Offloading Scheme for Big-Data Processing in Android Applications, Software—Practice and Experience, first published online May 2014.
http://onlinelibrary.wiley.com/doi/10.1002/spe.2265/abstract

2016年1月9日 星期六

人工智慧太厲害了,我們該怎麼辦?

我們為什麼要推計算思維呢? 因為未來各行各業都需要與電腦合作,否則有可能被電腦和機器人淘汰,例如這篇【機器人搶工作 律師、藥劑師也遭殃】所談到的(註1)狀況。如果不懂計算思維,很容易就迷惘了。

最近像這樣的文章和書籍很多,研究未來學的人,認為人工智慧是未來的重要趨勢,極盡能事去想像未來,但究竟有多少真實會發生,有多少只是虛無飄渺的幻想? 我想,很少人有能力確定,不過當前許多學生都跑來研究人工智慧相關的議題,則已成為我在台大所看到的事實。

我三十四年前在高中時,就對於人工智慧很感興趣,開始學LISP,後來進到台大念電機系,修了兩門人工智慧的課,還旁聽過神經網路,到密西根大學念書,也修過人工智慧,但我沒有繼續研究人工智慧,因為我覺得當時研究者走偏了,而且當年電腦的運算速度遠遠不足以支持有意義的人工智慧,所以根本做不出東西。

我猜對了,1990年代之後,人工智慧成為票房毒藥,沉寂了近二十年。

我選擇做電腦系統,看著電腦系統的效能持續成長,電腦系統的研究者想出各種方法來收割不斷成長的電腦效能,過去這三十年,最忙碌的研究領域之二,是計算機結構和系統軟體,我有幸能優游於兩者之間,探討一些軟硬體整合的議題。

如今,單一處理機的運算能力,約為30年前人工智慧全盛時期的100萬倍(註2),而且只要願意付些許錢,就可以租用雲端的上百台電腦,運算能力更是30年前的一億倍以上。

要注意到,這一億倍的運算效能,是人工智慧東山再起的關鍵。沒有足夠的效能,電腦很難生出智慧。然而,如今的運算效能,是否足以支持未來學想像中的人工智慧,則是一個大哉問。

大部份未來學專家的預測,都是基於以往的摩爾定律(註3),但這幾年摩爾定律已經放緩,甚至有可能停滯,主要是成本考量。以往這麼多年透過個人電腦、電子商務、行動運算、雲端服務等應用,半導體產業有足夠的利潤做研發來支撐摩爾定律,而大數據分析和人工智慧是否足以繼續支撐摩爾定律的延續? 如果摩爾定律停滯,那該如何是好?

有的人工智慧應用,需要比目前更高百倍的計算能力,有的實驗研究要成為產品之前,需要將龐大的運算能力縮小進到生活周邊,因此我認為我們做計算系統的,在產品化的過程中,還是扮演舉足輕重的角色,將來應該會有做不完的人工智慧系統設計的工作。

要創造出人工智慧的系統,關鍵在於要有能夠密切垂直整合的團隊,必須要有三種專家密切配合:
(1)領域專家,例如找律師、藥劑師來指導或教導電腦該領域的專業技能。
(2)人工智慧專家,綜合運用機器學習、數據分析、資料探勘等方式設計人工智慧演算法與軟體。
(3)系統專家,提供人工智慧所需的系統整合、資料蒐集、處理和計算能力,針對人工智慧應用優化系統軟體、設計晶片。

台灣比諸於其他許多國家,由於有硬體產業的基礎,非常適合發展「(3)系統專家」(這也是我想來培育的,也是目前即欠缺的人才),加上台灣目前很多學生對人工智慧很有興趣,學得很快,所以我不擔心會短缺「(2)人工智慧專家」,台灣在各行各業也有很多領域專家,但是能否聚集人才成為優質研發團隊,是真正的重點。

我想,很多有識之士已經看到這個局面,這是值得台灣去發展的好機會。我希望國家和社會多投入一些資源鼓勵產學界共同組成「對」的團隊,來把握這樣的機會,讓學術界多做些有益於這類幫助國家產業發展的研發工作。

然而,在謀求發展的機會的同時,我們也應該做好教育的工作,讓未來的世代能夠好好面對電腦和機器人。與其教學生背誦記憶一堆電腦瞬間可解的問題,不如教他們如何活用電腦、想辦法與電腦和機器人共榮。

另外,科技的民主化以及財富的合理分配,也將會是越來越重要的課題。我們絕對不希望大家多年努力的成果,被少數資本家收割,讓科技成為資本家搜刮社會資源和剝奪人民權益的打手 -- 這是社會大眾需要慎重看待和避免的議題。

(註1)機器人搶工作 律師、藥劑師也遭殃
http://www.cw.com.tw/article/article.action?id=5073792

(註2)以摩爾定律概算,假定每18個月電腦效能增加一倍。

(註3)https://zh.wikipedia.org/wiki/摩爾定律