我經常被學生問到,現在學的這些,從學校出去以後可以用多久?
標準答案是,看你自己在學校學了什麼?再看你從學校出去以後又學了什麼?不僅止於知識的學習,還包括自學、解題、研究的能力是否有被啟蒙與開竅?
大家知道嗎?現在你修的一些課,講的可能是過去火紅的議題,或是符合現在業界需求的技能,但等到你出去之後,資訊的世界可能又改變了。
你能夠因此說,那我只要學那些基本功夫就好了嗎?還是說,那我要拼命多學,十八般武藝俱全,將來總有一兩項是有用的?
對我來說,這兩種說法都很「廢」,因為太過偏差。
如果你對資訊科技本身並沒有太大的興趣,只是想應用學校所學來在業界找到一份好工作,那我奉勸資訊系畢業的大學生,可以找個自己真正有興趣的行業,然後用你的資訊技能去改變這個行業,機會很多很好。不然,待在變化迅速的資訊領域中,你會很辛苦的。
如果你對資訊科技很有興趣,樂此不疲,將來要走這個專業的話,請繼續讀下去。
我假設你讀到資訊工程研究所了,我想問你,在經營你的研究所生涯的時候,有沒有常常看看外面的世界?除了業界的公司之外,還有哪些?誰能告訴你五年後、十年後什麼技術最為搶手呢?
關於業界在做什麼的資訊,現在非常普遍,你如果說不知道、找不到的話,我真的質疑你是否適合念資訊系。
要了解資訊領域五年後、十年後什麼技術最為搶手的這件事,比較棘手,因為大部分學校的老師都有其專業和個人興趣,你可能要問好幾位老師才有機會能得其全貌,但教授對於業界的掌握度有多高,這就見仁見智了。
我在此做個嘗試,告訴你,你可以自己來嘗試找到你有興趣的未來熱門議題。當然,方法很多,這只是其中之一。
我們來看一下IEEE Transactions on Emerging Topics in Computing (TETC)的網頁(http://www.computer.org/portal/web/tetc)。大家來看看有那些emerging topics (顯化中的議題)正在call for papers?
我把所有call for papers的議題列出,再把跟我有興趣作為工作的部分用雙星號(**)標示,跟我目前個人嗜好有關的部分用單星號(*)標示。在這個實際例子裡,目前一共有9個顯化中的議題,與我們實驗室相關的有4個(嵌入式系統的資安、行動雲端演進、巨量資料系統效能、巨量資料處理),與目前個人興趣相關的有1個(工程教育),總列表放在文章最後。
因為要專精在系統效能、行動雲端應用、資安,所以我們實驗室有很多不做的,以上的議題有四個對我們來說是外行,因為我們不做電路 (circuits),不搞網路協定層(network layers),不精於統計、理論、演算法等等。
但如果有時間的話,我個人是有足夠的背景去看。當年修過的電機系課程,網路課程、影像處理課程、數學、資訊理論,讓我必要的時候,能夠進去逛逛,大致了解其中有什麼新的東西。不過要做研究的話,又是另一回事。
重點是,對於我有興趣的題目們,是否能夠用一個核心的方法論(core methodology)把它們貫串起來,達到所謂「吾道以一貫之」的程度呢?
對於初學者來說,很不容易。我們往往得摸索好一陣子,才能掌握一些要訣;再繼續摸索好一陣子,才能將要訣融合連貫收斂;再來則是實際運用測試收斂後的方法論,達到神而明之的程度。(That's what I call "beyond programming".)
在上例中,我的核心方法論是「系統效能」。我從小就對於電腦的效能非常感興趣,總是好奇,為什麼電腦不能再更快一點?能夠讓電腦更快,就能幫人類解決更多的問題。
當然,有很多方法可以讓電腦更快,但是根本的問題是,我們怎麼知道電腦在做什麼事情、在什麼時候不夠快,不夠快的原因,以及加速的方法,而這個能夠涵蓋這些的一套方法,就是我核心的方法論。這個方法論必須統攝多個相關領域,包括效能量測(performance measurement)、效能分析(performance assessment)、效能模型法(performance modeling)、效能最佳化(performance optimization)等。
我在博士班的研究,建構了這樣的核心方法論(沒有積極發表,因為一般人不能賞識和吸收),對於日後所從事的工作,有極大的助益。這十多年來,靠這個方法論,在一個接一個出來的新興領域,混得還不錯。
我將系統效能方法論用於超級電腦、商用伺服器、嵌入式系統、行動裝置、雲端服務、儲存系統,乃至於巨量資料處理等應用領域,皆是游刃有餘,只需要學習該應用領域的特性,或是與專家合作,即可登堂入室。
我在SUN工作的時候,被找去做資安,發現資安領域中有很多效能的問題,因為要層層加密和檢查,需要耗費大量運算資源。很多的商業應用,也是效能的問題,沒有解決效能問題,服務沒辦法在使用者或工作量持續延展(scale)的狀況下維持服務品質。
行動運算,談的是在小小的、有限能源的系統上做計算;雲端運算和巨量資料處理,很多議題談的是資料的儲存和處理的相依性和一致性,其本質是平行與分散式運算中的做作分割(task partitioning)、資料集中性(data locality)、運算同步(synchronization)、資料一致(coherence)、效率通訊(communications)、優化排程(scheduling)等;異質多核(heterogeneous multicore),是進一步優化效率的形式。
這些相關問題,多得不得了,同學們如果能掌握關鍵方法,很多時候都可以做得有聲有色。
我們希望能做更多,所以想辦法把方法論建置在工具上。因此我們花了很多年時間建構各種虛擬平台(virtual platform),希望能逐步把一些效能量測、分析、模型、最佳化的方法放進去,完成我當年博士論文中所提出的想法。做出這樣的工具,應該可以幫助很多系統的設計者,同學們加把勁吧。
好吧,我把我自己多年來用得很不錯但不怎麼樣的秘密都說給你們聽了,道理很簡單,修行在個人。
附件:
Call for Papers in IEEE TETC, as of 2014-12-09
Special Issue on Circuit and System Design Methodologies for Emerging Technologies
**Special Issue on Emerging Security Trends for Deeply-Embedded Computing Systems
**Special Issue on Advances in Mobile Cloud Computing
*Special Issue on Emerging Trends in Education
**Special Issue on Big Data Benchmarks, Performance Optimization, and Emerging Hardware
**Special Issue on Methods and Techniques for Processing Streaming Big Data in Datacentre Clouds
Special Issue on Approximate and Stochastic Computing Circuits, Systems and Algorithms
Special Issue/Section on Low-Power Image Recognition
Special Issue/Section New Paradigms in Ad Hoc, Sensor and Mesh Networks, From Theory to Practice
沒有留言:
張貼留言