這幾天跟一群剛錄取資工研究所碩士班學生的「小朋友們」解釋我的研究方向,什麼是系統架構師、處理機架構設計的時候,想說怎麼會解釋半天,對方還懵懵懂懂呢?
我把對話的重點整理成以下的FAQ,希望有助於新生釐清我的研究方向、周遭的現實、自我的學習目標。
Q. 所以架構師是做硬體的嗎?
A. 要懂系統或處理機架構,但是不見得要做硬體,常常做的是系統整體的效能優化,要去修改軟體。即使是設計處理機架構,也不是做到很細節的電路設計。
就像造101大樓(晶片)時,建築師(架構師)綜合案主的需求畫藍圖,搭配土木工程師(晶片設計師)去計算規劃工程細節。
Q. 要懂計算機結構嗎?
A. 要懂,否則怎麼當架構師?而且,你們老師可能沒有仔細教的課本(白算盤)的第七章多核心平行計算和附錄A的GPU會是重點。
但是整本書都背下來也沒有用,實際經驗很重要。我在SUN工作時參與多核心處理機架構設計和高階系統軟硬體效能優化工程,是台灣少數有實際經驗的教授。
Q. 要懂電路設計嗎?
A. 最好要懂,會加分,不懂也不是大問題。
我大學唸電機系的,所以有加到分。這裡談的主要是邏輯設計和功耗的基本觀念,通常不會太深入,但是當年修過電路學、電子學、半導體、控制、訊號分析等課程,在某些案子中會派上用場。
Q. 要懂作業系統嗎?
A. 最好要懂,會加分,不懂也不是大問題。
我在讀博士班的時候所做的研究題目不需要碰作業系統,但是基於個人的興趣,我很早就自學作業系統。在SUN工作的時候,為了優化大型系統的效能,有不少與作業系統相關的工作。要知道一個程式在存取檔案、傳輸網路資料的時候都要使用作業系統,完全不懂作業系統,怎麼做好大數據分析和物聯網?
Q. 要懂編譯器嗎?
A. 最好要懂,會加分,不懂也不是大問題。
我們做效能優化的第一關,就是善用編譯器的優化功能。現代編譯器技術的重點在於針對處理機架構優化的後端(backend),以及即時監控應用的特性做動態優化(just-in-time dynamic optimization ),都是我們關切的議題。我們知道現代編譯器還有很多做不好的地方,尤其針對平行程式和多核心系統,還有很多研究議題。
是的,我修過編譯器,也研究過編譯器,在某些案子中會派上用場。
Q. 要懂平行程式設計嗎?
A. 最好要懂,會加分,不懂也不是大問題。
我在二十多年前做的博士論文研究的是在大型平行電腦上實際優化高效能平行程式的時候所遇到的系統性問題,其間所訓練出來的能力,對於畢業後去SUN公司所從事大型多處理機系統優化的工作,有極大的幫助。
現在幾乎隨處可見多處理機系統,你的手機就有好幾個CPU核心,再加上更多的GPU核心,可是絕大多數的應用程式都沒有優化得很好,因為懂得寫好平行程式的人太少了。要做真的大數據分析,也要懂得平行程式的效能關鍵,但是真懂的人也少得很。
Q. 要懂機器學習嗎?
A. 最好要懂,會加分,不懂也不是大問題。
我在唸書的時候修過三門AI的課,說真的對我的工作沒有什麼幫助,直到最近AI爆紅。
這次AI爆紅的關鍵在於深度學習,而深度學習之所以能成氣候,關鍵在於大數據、GPU和平行計算架構。我們一方面研究如何從系統設計和優化的觀點為深度學習提供更強大的算力,一方面研究如何用強大的深度學習來開創新局。我不是機器學習專家,我只是研究如何用我的專業讓機器學習變強。
Q. 要懂物聯網嗎?
A. 最好要懂,會加分,不懂也不是大問題。
你知道什麼是物聯網嗎?完整的物聯網系統包含我們身邊(自己的和別人的)各種能連網行動裝置、電信業者或商家的基地台、基地台上能夠做的工作,一路連到世界各地公用或私有的資料中心做大數據分析。
物流網的重點在於蒐集資訊、分析資訊、即時做出回應,在在都與系統有關。這陣子大廠紛紛推出智慧物聯網開發版,像是Edge TPU、Jetson Nano,把深度學習加速器放進低功率的處理機裡面,讓大家能做出更智慧的物聯網應用,但是你知道物聯網應用有哪些與效能相關的因素嗎?有能力分析嗎?
抱歉,以上兩個問題是很多業界工程師都不會的,我不是刻意刁難你,只是說明一件事:懂越多,機會越多。
對了,我大學時修過不少通訊網路相關的課,包括統計通訊、數位調變、衛星通訊,還跟李琳山教授做過包括語音合成的專題,雖然沒有直接派上用場,但是這些基礎讓我對於Internet和5G技術不會太陌生。
Q. 要懂資安嗎?
A. 最好要懂,會加分,不懂也不是大問題。
我剛進大學時不懂事,在台大計算機中心做了一些駭客的事,不過只是為自己增加了電腦的使用時間,沒有幹下其他壞事。我大三修課時期末專題報告,詳細探討了老師沒教、剛出來的RSA公鑰密碼技術(public-key cryptography )的論文,不過對於考試和拿學位沒多大用處。
但事隔十多年,我在SUN公司工作時,被找去幫助解決密碼加速器的效能問題,當年期末報告的基礎讓我在面對密碼專家時能夠氣閒神定,從容在短時間內解決軟硬體搭配不良效能問題,意外成為公司裡密碼加速器的專家。此後幾年,公司所開發的外掛密碼加速器、處理機內建的密碼加速器、作業系統和伺服器中對的加密技術,往往都來找我幫忙。
我不認為自己是傳統所謂的資安專家,但是我對於解決實際系統上的資安問題感興趣,尤其是越來越重要的資料隱私保護的問題。各家醫院、健保署裡面有很多資料,但是礙於法規很難拿出來放在一起做大數據分析,不解決這個問題的話,進步會很緩慢。
但是,不懂資安也沒關係,一則您所理解的資安可能不是我們在意的資安,一則我們還有很多其他不需要資安的研究議題。
.... (還有很多其他的問題就暫時不寫了,例如要不要懂C語言...)
Q. 如果以上那些「不懂也不是大問題」的都不懂,可以做架構師嗎?
A. 可以啊,如果人家很缺人,而且又沒有其他人跟你搶這個工作的話。
要認真說的話,這是跨領域的時代,融會貫通數個專業是一件好事,更何況是架構師這樣的工作。反過來說,你沒有身兼幾個專長,除非你在某個領域能做到最強,否則不要說能不能成大器,我會為你的前途感到憂心。將來面臨中年失業危機的時候不要怪我沒警告你。
Q. 那麼只懂xx和yy行嗎?
A. 我不知道,看你的事業運了。
排列組合太多了,未來很難預測,我自己的作法是多利用身邊的機會和資源、多跟大師學。
當年選擇研究平行電腦,因為有大師的指導,加上學校建置了全新的平行電腦,有此極為難得的機會。你看看和我年紀相仿的教授和工程師,有幾位在唸書的時候,能在大師的親自指導下研究超級電腦上平行程式的效能問題?(不用浪費時間找了,你在台灣找不到幾個的。)
Q. 那麼老師你懂這麼多東西嗎?怎麼學的?
A. 我這37年來,從高中開始,只要有機會就學,最好是跟大師學,學了東西就找機會用,最好是用於解決重要的實務問題,不斷學習和運用所學,自然就會學到不少東西。
雖然我不會什麼領域都專精,但是我往往可以跟領域專家溝通合作。「溝通合作」是架構師最重要的能力之一。
Q. 為什麼要學這麼多東西呢?
A. 傻孩子,為了做別人不會做的事,賺別人賺不了的錢啊!厲害的架構師,薪水可能比某些做一輩子的前端工程師高十倍還不止。
不過對我來說,最重要的是興趣。我喜歡學習和研究,所以我願意放棄業界高薪來做學校當教授,但這不表示我不關心業界做的事情,更不代表我要把自己關在象牙塔裡只發表學術論文就好。
我之所以學很多的東西,是希望用來幫助這個世界。沒有實際能力的話,只靠逢迎拍馬上去的那些政客和官員,以及那些靠運氣和苦力致富的老闆,對國家社會的發展是阻力還是助力呢?當你們這個世代在罵那些霸佔權位資源老人的時候,你們有足夠的能力當家做主、做得更好嗎?
當然你如果要說不擇手段趕快拿學位去卡位才是時下的王道,我也不想反駁你,因為這或許是在這個生病的社會中保全自己和家人的生存法則,而且我也曾是受害者。但我只能說,台大有個校訓:「敦品、勵學、愛國、愛人」,我還是要讓你知道有這件事情,你也許做得到。
Q. 要怎麼入門學習呢?
A. 如果努力上進的話,我們會好好帶你入門,給你環境和支持,不過我提供的是指導,修行得靠你自己去修課、找資料、實作、和同學討論、解決問題。我們也會有業界的協助,資源多得很。
Q. 我有興趣,但我不知道做不做得來?
A. 同學,你考上台大研究所,很不容易,怎麼還這麼沒有自信?要知道「缺乏自信」是求職的大忌,而且我都已經要給你機會和幫助你了,難道要我保證你多久之內畢業嗎?
謝謝你來談,我們再聯絡,有自信再說。
從2010.03寫到現在,我只是想寫 -- 把我對社會、人文、科技、產業、教育的觀察和感想寫出來。每次寫出當下所思所想,似乎腦袋可以清淨一點、心靈可以輕爽些。文章大多先在臉書上與臉友分享,隨後再轉到這裡。臉書網址為:https://www.facebook.com/shihhaohung
2019年3月17日 星期日
大學生的專業技能學習
幾天前跟一位我的大學部專題生聊到他的近況,有些聊到的東西可以拿出來鼓勵同學們致力於學專業技能,而非盲目地讀書、考試、拿學位之後才發現世界根本不是自己想的那樣。
他並非資訊、電機本科生,大學成績也不怎麼樣,但是推甄上某頂尖大學的資工研究所,原因之一應該是他在大學幾年到過多家公司實習所累積的程式設計的實務經驗與能力;原因之二大概與他常於開源社群貢獻以及在個人部落格上分享心得有關。
他前一陣子到某家科技公司從事近乎全職的實習工作,薪資六字頭,只比全職工程師略少些。公司高層主管欣賞他,願意栽培他。所以他覺得好像不必去唸研究所,在公司也可以學到很多。
其實他走的是技職體系的路線,只是現在台灣絕大多數的學生都去唸大學,甚至覺得要拿到碩士學位才有好工作,所以反倒忽略了「工藝技術」的專業能力。多年前有很多一流學生讀台北工專,對業界有頗大的貢獻,但後來教育部把技職學校「升級」成大學,限縮了這條路。
剛好我上週才談過美國的狀況,許多資訊科技公司和情治單位都到高中和大學去招募資質極佳的人才,及早進到公司後自己來培育。據說Google台灣分公司也招募了不少大學生,做類似的事情。不過,這些人為了要有更好的發展,都會不斷學新東西。
其實在現代的軟體應用開發環境中,程式設計的工作有很大的部份是熟能生巧的「工藝技術」。站在巨人的肩膀上,利用最新的程式語言、程式庫、程式工具,發展出有產業價值的軟體,這種機會太多了。
反觀大學和研究所教的東西,很多是告訴學生「巨人」的運作原理、內部構造,以及如何讓巨人更大更強,所以有演算法、作業系統、計算結構等課程,原意是厚植學生的基礎,讓他們不只知其然,還要能知其所以然。
頂尖研究型大學資訊系的目標之一,是培育擁有紮實的學術基礎和足夠的實習經驗的學生,讓他們有能力做尖端的技術研發,幫業界改良或發展新型的巨人、提高業界的研發水準。具備這種專業能力的人,身價非常高。
可是一大堆教授為了升等,學生為了考試和學位,成天在這些知識中打轉了好幾年卻還是爬不到巨人的肩膀上,因為誤以為通過考試、拿到學位就行,所以反而困在巨人的肚子裡面!
我們都知道,醫學系的課程,除了講授知識之外,經常要實際操作、臨床考試,還要幾年的實習之後才能執業,並不是會讀書就好。厲害的醫生,時常還要吸收新知,才能站在巨人的肩膀上為人治病,道理也是相同。
所以,我給一些有才能也有心致力於培養專業能力的學生們的建議是:
1. 資訊系的學生,最好是學術和實務能力兼備,思考如何深化專業能力和嘗試做一些非資訊本科生不會做的高價值工作。
2. 非資訊本科的學生,如果對程式設計很有天份和興趣,可以透過各種自學、社群、實習的管道,學得某些業界需要的高價值軟體實務開發專長,也未嘗不可。
3. 無論本科與否,如果我們想說「學位不重要」這句話,就必須有辦法呈現出技能的水準出來,否則別人如何賞識和重用你呢?
4. 即便已經有了不錯的開始,還是要設法持續學習,因為新的東西不斷出現,舊的東西可能越來越不值錢。時常問自己,要學習研究什麼東西,讓自己得以呈現更專業、更出色的技能呢?
他並非資訊、電機本科生,大學成績也不怎麼樣,但是推甄上某頂尖大學的資工研究所,原因之一應該是他在大學幾年到過多家公司實習所累積的程式設計的實務經驗與能力;原因之二大概與他常於開源社群貢獻以及在個人部落格上分享心得有關。
他前一陣子到某家科技公司從事近乎全職的實習工作,薪資六字頭,只比全職工程師略少些。公司高層主管欣賞他,願意栽培他。所以他覺得好像不必去唸研究所,在公司也可以學到很多。
其實他走的是技職體系的路線,只是現在台灣絕大多數的學生都去唸大學,甚至覺得要拿到碩士學位才有好工作,所以反倒忽略了「工藝技術」的專業能力。多年前有很多一流學生讀台北工專,對業界有頗大的貢獻,但後來教育部把技職學校「升級」成大學,限縮了這條路。
剛好我上週才談過美國的狀況,許多資訊科技公司和情治單位都到高中和大學去招募資質極佳的人才,及早進到公司後自己來培育。據說Google台灣分公司也招募了不少大學生,做類似的事情。不過,這些人為了要有更好的發展,都會不斷學新東西。
其實在現代的軟體應用開發環境中,程式設計的工作有很大的部份是熟能生巧的「工藝技術」。站在巨人的肩膀上,利用最新的程式語言、程式庫、程式工具,發展出有產業價值的軟體,這種機會太多了。
反觀大學和研究所教的東西,很多是告訴學生「巨人」的運作原理、內部構造,以及如何讓巨人更大更強,所以有演算法、作業系統、計算結構等課程,原意是厚植學生的基礎,讓他們不只知其然,還要能知其所以然。
頂尖研究型大學資訊系的目標之一,是培育擁有紮實的學術基礎和足夠的實習經驗的學生,讓他們有能力做尖端的技術研發,幫業界改良或發展新型的巨人、提高業界的研發水準。具備這種專業能力的人,身價非常高。
可是一大堆教授為了升等,學生為了考試和學位,成天在這些知識中打轉了好幾年卻還是爬不到巨人的肩膀上,因為誤以為通過考試、拿到學位就行,所以反而困在巨人的肚子裡面!
我們都知道,醫學系的課程,除了講授知識之外,經常要實際操作、臨床考試,還要幾年的實習之後才能執業,並不是會讀書就好。厲害的醫生,時常還要吸收新知,才能站在巨人的肩膀上為人治病,道理也是相同。
所以,我給一些有才能也有心致力於培養專業能力的學生們的建議是:
1. 資訊系的學生,最好是學術和實務能力兼備,思考如何深化專業能力和嘗試做一些非資訊本科生不會做的高價值工作。
2. 非資訊本科的學生,如果對程式設計很有天份和興趣,可以透過各種自學、社群、實習的管道,學得某些業界需要的高價值軟體實務開發專長,也未嘗不可。
3. 無論本科與否,如果我們想說「學位不重要」這句話,就必須有辦法呈現出技能的水準出來,否則別人如何賞識和重用你呢?
4. 即便已經有了不錯的開始,還是要設法持續學習,因為新的東西不斷出現,舊的東西可能越來越不值錢。時常問自己,要學習研究什麼東西,讓自己得以呈現更專業、更出色的技能呢?
2018年4月1日 星期日
眾說紛紜的AI
昨天(3/31)參加一整天的AI論壇,遇到很多內行人和外行人。主辦單位的目的在於橋接業界和學術界,連哄帶騙把許多AI專家,以及業界與政府的重量人士找來,可謂用心良苦,不過在裡頭坐上一整天也真是辛苦,好像一個人去參加一場長達一天的婚宴,必須一邊跟同桌人士哈拉,一邊「欣賞」舞台上的表演...
我因為前晚熬夜寫報告,昨天在會場頭痛了一整天,一直抽空閉目養神,不是偷懶,是頭痛到不行。不過還是得完成主辦單位交付的任務:花費二個多小時跟15位希望引進(或是正在從事)AI的業界/政府人士談話,瞭解他們的問題,個別給出一些建議,最後還要上台給三分鐘的心得報告。
就當作是做功德吧?因為AI紅透半邊天,迫不及待想引進AI的人太多,平常都有一些個案來找我談,但多半是想找一些有即戰力的技術或計畫,在最短時間可以幫到忙,而真的願意花大手筆做研發的倒是少之又少,大部份在談完之後,摸摸鼻子走了。昨天在最短時間內一次談了15位,也很不錯,只希望對方不要覺得這傢伙沒什麼真功夫,幫不了忙。
昨天最後上台報告時,我說我只是配角中的配角,各位如果開始建置AI系統,就會發現系統端的疑難雜症多得不得了,解決這些系統性問題的辛苦可能遠多於機器學習的部份,這時候才可能會需要我這種配角上場救援。
我沒有大聲說的是,反之,如果對AI沒有起碼的瞭解,分不清楚專家系統、機器學習、類神經網路的差異,可能不要貿然找那些做AI研究的大師,除非這些大師很喜歡做功德,像孔祥重院士偕同陳昇瑋博士那樣願意帶著一群學生「下海」,進到製造業的場域去動手做。不過,孔陳兩位大師現在也不可能親自去幫您的忙,想多認識AI的業界人士,可以繳學費去參加他們辦的人工智慧學校。
我希望人工智慧學校能補足業界的一些人才缺口。好比當年個人電腦出現後,很多中小企業開始導入試算表、文書處理,或是寫一些簡單的程式來做自動控制,需要很多人力來做,而我們當年念高中、大學時靠著自學就可以去做這些事,不一定要念資訊系,這也是目前產業AI化的重要途徑。
但是在AI產業化的方面,需要較長遠的規劃和耕耘。如果要在新興的AI產業上有足夠的競爭力,應該不是膚淺的作為就能做到,因此我認為AI產業化與產業AI化兩大方向雖然相關,但應該劃分和解釋清楚,不宜混雜在一起談,否則容易失焦,浪費彼此時間。
不過我還是跟AI的專家朋友說,昨天這場就算是您在做功德,有些參與的人士很少有機會跟AI大師們對談,有些以為AI很好做,各位大師親自出馬釐清真相,也是莫大功德。
例如我這邊在頭痛的情況下勉力為之,應該算是盡到公民的責任,與業界人士大致交流如下:
總之,千萬不要一窩蜂,無論各位要走產業AI化還是AI產業化的道路,最好先搞清楚狀況,走適合自己的道路。
學生也是,資訊系學生可以去幫產業AI化,但是必須願意跨足產業,例如農業、醫療、製造業,不是宅在房間裡就行的,其他科系的學生也可以修一些AI的課,嘗試走這條路;資訊系學生想走AI產業化的道路,要知道AI系統錯綜複雜,要在此產業競爭,往往不是只懂機器學習的一招半式就行的。
我因為前晚熬夜寫報告,昨天在會場頭痛了一整天,一直抽空閉目養神,不是偷懶,是頭痛到不行。不過還是得完成主辦單位交付的任務:花費二個多小時跟15位希望引進(或是正在從事)AI的業界/政府人士談話,瞭解他們的問題,個別給出一些建議,最後還要上台給三分鐘的心得報告。
就當作是做功德吧?因為AI紅透半邊天,迫不及待想引進AI的人太多,平常都有一些個案來找我談,但多半是想找一些有即戰力的技術或計畫,在最短時間可以幫到忙,而真的願意花大手筆做研發的倒是少之又少,大部份在談完之後,摸摸鼻子走了。昨天在最短時間內一次談了15位,也很不錯,只希望對方不要覺得這傢伙沒什麼真功夫,幫不了忙。
昨天最後上台報告時,我說我只是配角中的配角,各位如果開始建置AI系統,就會發現系統端的疑難雜症多得不得了,解決這些系統性問題的辛苦可能遠多於機器學習的部份,這時候才可能會需要我這種配角上場救援。
我沒有大聲說的是,反之,如果對AI沒有起碼的瞭解,分不清楚專家系統、機器學習、類神經網路的差異,可能不要貿然找那些做AI研究的大師,除非這些大師很喜歡做功德,像孔祥重院士偕同陳昇瑋博士那樣願意帶著一群學生「下海」,進到製造業的場域去動手做。不過,孔陳兩位大師現在也不可能親自去幫您的忙,想多認識AI的業界人士,可以繳學費去參加他們辦的人工智慧學校。
我希望人工智慧學校能補足業界的一些人才缺口。好比當年個人電腦出現後,很多中小企業開始導入試算表、文書處理,或是寫一些簡單的程式來做自動控制,需要很多人力來做,而我們當年念高中、大學時靠著自學就可以去做這些事,不一定要念資訊系,這也是目前產業AI化的重要途徑。
但是在AI產業化的方面,需要較長遠的規劃和耕耘。如果要在新興的AI產業上有足夠的競爭力,應該不是膚淺的作為就能做到,因此我認為AI產業化與產業AI化兩大方向雖然相關,但應該劃分和解釋清楚,不宜混雜在一起談,否則容易失焦,浪費彼此時間。
不過我還是跟AI的專家朋友說,昨天這場就算是您在做功德,有些參與的人士很少有機會跟AI大師們對談,有些以為AI很好做,各位大師親自出馬釐清真相,也是莫大功德。
例如我這邊在頭痛的情況下勉力為之,應該算是盡到公民的責任,與業界人士大致交流如下:
- 遇到一群在政府做水利規劃的研究員與顧問公司,一起思考如何運用AI技術,或許他們更了解AI後,挑戰一些可行的目標,不要太好高鶩遠,可以少浪費一些民脂民膏;
- 遇到一群醫院主管,和我先前遇過的醫界人士一樣,已經開始導入AI,面對的標籤化資料蒐集困難的關卡,但其實國內醫療界素質頗高,有機會結合AI做出新產業,但是要拿得出足夠資源;
- 遇到立法委員,跟她談我常講的教育界的問題,也希望她幫忙看緊人民的荷包,不讓政府以導入AI為名胡亂撒錢買設備;
- 遇到不恥下問技術問題的電子業大廠董事長,有點意外,還是想辦法用自然語言釋疑;
- 遇到急於引進AI的製造業小廠,建議要找上下游業者合縱連橫打群架,不一定要自己做;
- 遇到想引進AI幫忙自動產出精華影片的媒體,建議這種國外強到不行的應用,不要貿然自己研發,因為這類軟體遲早會普及,除非你有國外沒有的利基,否則不容易做出比人家好的東西。
總之,千萬不要一窩蜂,無論各位要走產業AI化還是AI產業化的道路,最好先搞清楚狀況,走適合自己的道路。
學生也是,資訊系學生可以去幫產業AI化,但是必須願意跨足產業,例如農業、醫療、製造業,不是宅在房間裡就行的,其他科系的學生也可以修一些AI的課,嘗試走這條路;資訊系學生想走AI產業化的道路,要知道AI系統錯綜複雜,要在此產業競爭,往往不是只懂機器學習的一招半式就行的。
2018年3月28日 星期三
以優化Tensorflow作為系統研究的教案
前天在課上用TensorFlow Performance Guide [1]為案例,解說「人工智慧」與「系統研究」的關係,嘗試啟發學生的視野。
很多人會用TensorFlow開發深度學習應用,但我不知道有多少人真正在意TensorFlow應用的優化。如果只是分析「小的大數據」,或是不在乎多等幾天,那麼就不用看接下來的長篇大論了。
“This guide contains a collection of best practices for optimizing TensorFlow code.”
首先要知道什麼是best practices? 根據網路字典,best practices是"commercial or professional procedures that are accepted or prescribed as being correct or most effective”,換句話說,在各種商業或專業考量下,最為眾人所接受的,能夠最有效解決實際問題的招數。
可是,要看懂這裡所提到的best practices,恐怕沒那麼簡單,需要懂得系統軟體與計算機結構的實務。不,資工系的同學們,請不要高興得太早,我講的是「實務」,不是應付考試的那種功夫。
業界在談論best practices的時候,通常是搔到癢處、點到為止,提出大原則,但不解說幕後的學理依據和細節,也不提供完整的實驗數據。其目的在告訴大眾(潛在客戶): 我們有能力做這些別人不大會做的工作,看得懂最好,知道我們很厲害;看不懂也沒關係,反正找我們就對了,只要付了錢我們就幫你 :)
好吧,我們就來看看,為了協助TensorFlow使用者優化應用, Google官網建議了哪些best practices呢?
洋洋灑灑寫了很多,分了三大類:
剛好前一陣子幫業界朋友分析他們手頭上TensorFlow系統效能問題,瓶頸就出在前端的Input pipeline。各位不要笑,如果您的手頭上有一台裝有16張NVIDIA V100 GPU卡的HGX-1高效能伺服器,前處理的難度會高出許多... 如何將影像檔案有效率地從高速網路或高速磁碟陣列所構成的儲存系統中預先提出來放置在記憶體中?如何有效率地用兩顆CPU晶片上的40個處理機核心來做前處理? 如何有效率地用將CPU處理後的Tensors送到16張GPU卡的記憶體上?
一般缺乏軟硬兼備素養的工程師,往往毫無頭緒。我在當時給了一些best practices的建議,請工程師做一個實驗,把資料送進一個超簡單、超快的model,看看速度會不會變快?如果不變快的話,就表示資料取得和前處理可能是瓶頸。一周之後,工程師回報說只變快一點點,我請他做進一步的測試和估算,跟這個Performance Guide講的幾乎相同:
Determining if the input pipeline is the bottleneck can be complicated. One of the most straightforward methods is to reduce the model to a single operation (trivial model) after the input pipeline and measure the examples per second. If the difference in examples per second for the full model and the trivial model is minimal then the input pipeline is likely a bottleneck.
接下來我又花了一個多小時解說後面列舉的一些招數,其實都只是將我們(系統研究老鳥們)司空見慣的老招數應用在TensorFlow上,看起來沒什麼了不起,但是菜鳥們就是不會。做理論研究的學者可能覺得這些沒學問、沒創新,但要做深度的系統研究,不能沒有這些功夫。
接下來,就是要學生做Lab,練習解決一些小問題。動手做很重要,可以幫助學生把看來得知識內化成經驗和學問。動手做的過程中,不是按表操作,最好是不斷思考為何如此,如果能發現新新問題和發明新招數,那就更好了。
我想再次強調,培育系統架構師並不容易,一流的系統架構師需要會做系統研究,往往具備Ph.D.等級的研究能力,對於前瞻系統研發扮演舉足輕重的角色,不過台灣很少有這樣的人才,因為多數代工產業注重按表操作,給工程師發揮的空間不大。如果想公司想轉型,提升其系統軟硬整合的能力,最好是找到夠格的系統架構師。
這堂課以及後續課程希望讓學生們能體會以下概念:
[1] Performance Guide | TensorFlow. https://www.tensorflow.org/performance/performance_guide
很多人會用TensorFlow開發深度學習應用,但我不知道有多少人真正在意TensorFlow應用的優化。如果只是分析「小的大數據」,或是不在乎多等幾天,那麼就不用看接下來的長篇大論了。
“This guide contains a collection of best practices for optimizing TensorFlow code.”
首先要知道什麼是best practices? 根據網路字典,best practices是"commercial or professional procedures that are accepted or prescribed as being correct or most effective”,換句話說,在各種商業或專業考量下,最為眾人所接受的,能夠最有效解決實際問題的招數。
可是,要看懂這裡所提到的best practices,恐怕沒那麼簡單,需要懂得系統軟體與計算機結構的實務。不,資工系的同學們,請不要高興得太早,我講的是「實務」,不是應付考試的那種功夫。
業界在談論best practices的時候,通常是搔到癢處、點到為止,提出大原則,但不解說幕後的學理依據和細節,也不提供完整的實驗數據。其目的在告訴大眾(潛在客戶): 我們有能力做這些別人不大會做的工作,看得懂最好,知道我們很厲害;看不懂也沒關係,反正找我們就對了,只要付了錢我們就幫你 :)
好吧,我們就來看看,為了協助TensorFlow使用者優化應用, Google官網建議了哪些best practices呢?
洋洋灑灑寫了很多,分了三大類:
- General best practices covers topics that are common across a variety of model types and hardware. (泛用招數)
- Optimizing for GPU details tips specifically relevant to GPUs. (GPU專屬招數)
- Optimizing for CPU details CPU specific information.(CPU限定招數)
- Input pipeline optimizations(解決資料取得與前處理管線的瓶頸)
- Data formats(降低資料格式轉換的時間)
- Common fused Ops(使用融合運算節省運算成本)
- RNN Performance(RNN專屬的效能因素)
- Building and installing from source(編譯與安裝的效能選項)
剛好前一陣子幫業界朋友分析他們手頭上TensorFlow系統效能問題,瓶頸就出在前端的Input pipeline。各位不要笑,如果您的手頭上有一台裝有16張NVIDIA V100 GPU卡的HGX-1高效能伺服器,前處理的難度會高出許多... 如何將影像檔案有效率地從高速網路或高速磁碟陣列所構成的儲存系統中預先提出來放置在記憶體中?如何有效率地用兩顆CPU晶片上的40個處理機核心來做前處理? 如何有效率地用將CPU處理後的Tensors送到16張GPU卡的記憶體上?
一般缺乏軟硬兼備素養的工程師,往往毫無頭緒。我在當時給了一些best practices的建議,請工程師做一個實驗,把資料送進一個超簡單、超快的model,看看速度會不會變快?如果不變快的話,就表示資料取得和前處理可能是瓶頸。一周之後,工程師回報說只變快一點點,我請他做進一步的測試和估算,跟這個Performance Guide講的幾乎相同:
Determining if the input pipeline is the bottleneck can be complicated. One of the most straightforward methods is to reduce the model to a single operation (trivial model) after the input pipeline and measure the examples per second. If the difference in examples per second for the full model and the trivial model is minimal then the input pipeline is likely a bottleneck.
- Check if a GPU is underutilized by running nvidia-smi -l 2. If GPU utilization is not approaching 80-100%, then the input pipeline may be the bottleneck. (使用效能監測工具確定GPU忙還是不忙?)
- Generate a timeline and look for large blocks of white space (waiting). An example of generating a timeline exists as part of the XLA JIT tutorial.(使用工具畫出事件在時間軸上的分佈圖,是否有空窗期?)
- Check CPU usage. It is possible to have an optimized input pipeline and lack the CPU cycles to process the pipeline.(確定CPU忙還是不忙?)
- Estimate the throughput needed and verify the disk used is capable of that level of throughput. Some cloud solutions have network attached disks that start as low as 50 MB/sec, which is slower than spinning disks (150 MB/sec), SATA SSDs (500 MB/sec), and PCIe SSDs (2,000+ MB/sec). (算算網路或磁碟夠不夠快?)
接下來我又花了一個多小時解說後面列舉的一些招數,其實都只是將我們(系統研究老鳥們)司空見慣的老招數應用在TensorFlow上,看起來沒什麼了不起,但是菜鳥們就是不會。做理論研究的學者可能覺得這些沒學問、沒創新,但要做深度的系統研究,不能沒有這些功夫。
接下來,就是要學生做Lab,練習解決一些小問題。動手做很重要,可以幫助學生把看來得知識內化成經驗和學問。動手做的過程中,不是按表操作,最好是不斷思考為何如此,如果能發現新新問題和發明新招數,那就更好了。
我想再次強調,培育系統架構師並不容易,一流的系統架構師需要會做系統研究,往往具備Ph.D.等級的研究能力,對於前瞻系統研發扮演舉足輕重的角色,不過台灣很少有這樣的人才,因為多數代工產業注重按表操作,給工程師發揮的空間不大。如果想公司想轉型,提升其系統軟硬整合的能力,最好是找到夠格的系統架構師。
這堂課以及後續課程希望讓學生們能體會以下概念:
- 如何從「系統研究」的角度改善「人工智慧」效能
- 做實務性的系統研究,需要解決的議題很多,需要好方法
- Best practices是前人解題的心得,多看會有幫助
- 學這些招數,要知其然,更要知其所以然才好
- 動手做是知識內化成經驗和學問的方法之一
- 寫報告(論文)是進一步整理心得、發想創意的好方法
- 要博聞,但不要強記招數,要會活用
- 搞懂之後就把招數忘了吧,就像金庸小說中的「獨孤九劍」和「太極劍」,達到無招勝有招的境界。(其實是我記憶力不好,不得不如此做 :))
- 不斷挑戰新的問題,看看是否能夠練到「乾坤大挪移」的境界: 看到人家的招術,就能夠瞬間理解,收為己用。(其實是電腦科技日新月異,不得不如此做 :))
[1] Performance Guide | TensorFlow. https://www.tensorflow.org/performance/performance_guide
2017年12月9日 星期六
排球與體育改革
前天幾位熱愛排球的年輕人找上我,希望我出來參選排球協會的理事,談了兩小時,我被他們的熱情說動了,或許這就是所謂「義不容辭」吧?
我這輩子很少跟人家爭,在現實生活上對權力遊戲沒什麼興趣,比較想自己喜歡做的事情。寫臉書和部落格,只是抒發個人的想法,沒想當什麼意見領袖。因此,當他們希望我參選的時候,我心裡面頗為排拒,非常想推掉。
可是,排球正好是我最喜歡的運動項目,聽到這些年輕朋友對我述說許多排球界的陋習,以及他們正在積極從事的改革工作,我狠不下心腸置身事外。如果我的棉薄之力,可以幫助改善台灣的排球環境,看到更多排球場上的笑容,實在沒有理由不站出來。
對於台灣的排球界來說,我只是一個無名小卒、業餘的愛好者。我讀台大電機系的那四年,是每天傍晚到排球場報到的「球棍」,全年無休,遇到假日更是要提早到場。我沒有打校隊,沒有教練教我逼我練球,但是興趣使然,我花了很多時間研究如何打好排球。
有多少傻子,會在床角上鋪上棉被和枕頭,在房間裡反覆練習扣球的動作,希望能打出漂亮的弧線? 有幾個怪咖,會在晚上十點到公園去練彈跳? 在美國念博士的幾年,誰有那個美國時間一個人在體育館架起排球網練習扣球?
我想世界上就是有一群如此熱愛排球的傻子、怪咖、無聊人士,不是因為參加了校隊,不是因為打國家隊,也不是因為靠排球營生,只是單純的興趣使然。這樣的人種,在乎的是如何增進自己的球技,在球場上盡力拚搏、以球會友,到處欣賞排球美技。
我在美國這個排球的發源地待了13年,除了到體育館打排球之外,也打隨處可見沙灘排球,甚至打過草地排球。偶爾和友人組隊參加業餘季賽,認識了各國的朋友,從高中生到70歲的大學教授,都樂在其中,見識到勝不驕、敗不餒的全民運動精神。
12年前我回台大教書,其中有個不足為人道的原因,就是希望能像早年一樣,天天到球場打球。可惜在台大教書的日子不如當學生輕鬆,沒辦法重溫舊夢。前幾年還跟著系隊去比賽,拿到台大盃冠軍,後來工作忙到不可開交,只能周末抽空跟一些老球友打打球。
說起來,國內的排球場地實在不怎麼樣。對我們這群業餘愛好者來說,有個架著網的水泥場地可打,就得偷笑了,想要租到木頭地板而且屋頂高度符合標準的場地,除非有關係,否則要好好燒香拜拜,才能抽到好籤。在硬地板上打球,容易受傷,一堆老球友紛紛因傷退場,至為可惜。
各單項體育協會的黑暗面,大家可能略有耳聞,但我並非親眼所見,所以不在此多談。我如果有幸擔任理事,會和這群熱愛排球的朋友們一起努力去改善台灣的排球環境,盡力讓黑暗面消逝。
我這輩子很少跟人家爭,在現實生活上對權力遊戲沒什麼興趣,比較想自己喜歡做的事情。寫臉書和部落格,只是抒發個人的想法,沒想當什麼意見領袖。因此,當他們希望我參選的時候,我心裡面頗為排拒,非常想推掉。
可是,排球正好是我最喜歡的運動項目,聽到這些年輕朋友對我述說許多排球界的陋習,以及他們正在積極從事的改革工作,我狠不下心腸置身事外。如果我的棉薄之力,可以幫助改善台灣的排球環境,看到更多排球場上的笑容,實在沒有理由不站出來。
對於台灣的排球界來說,我只是一個無名小卒、業餘的愛好者。我讀台大電機系的那四年,是每天傍晚到排球場報到的「球棍」,全年無休,遇到假日更是要提早到場。我沒有打校隊,沒有教練教我逼我練球,但是興趣使然,我花了很多時間研究如何打好排球。
有多少傻子,會在床角上鋪上棉被和枕頭,在房間裡反覆練習扣球的動作,希望能打出漂亮的弧線? 有幾個怪咖,會在晚上十點到公園去練彈跳? 在美國念博士的幾年,誰有那個美國時間一個人在體育館架起排球網練習扣球?
我想世界上就是有一群如此熱愛排球的傻子、怪咖、無聊人士,不是因為參加了校隊,不是因為打國家隊,也不是因為靠排球營生,只是單純的興趣使然。這樣的人種,在乎的是如何增進自己的球技,在球場上盡力拚搏、以球會友,到處欣賞排球美技。
我在美國這個排球的發源地待了13年,除了到體育館打排球之外,也打隨處可見沙灘排球,甚至打過草地排球。偶爾和友人組隊參加業餘季賽,認識了各國的朋友,從高中生到70歲的大學教授,都樂在其中,見識到勝不驕、敗不餒的全民運動精神。
![]() |
| 至今還保留在我研究室,當年在美國買的、用過多年的百年排球紀念球 (註: 排球是1895年發明的) |
12年前我回台大教書,其中有個不足為人道的原因,就是希望能像早年一樣,天天到球場打球。可惜在台大教書的日子不如當學生輕鬆,沒辦法重溫舊夢。前幾年還跟著系隊去比賽,拿到台大盃冠軍,後來工作忙到不可開交,只能周末抽空跟一些老球友打打球。
說起來,國內的排球場地實在不怎麼樣。對我們這群業餘愛好者來說,有個架著網的水泥場地可打,就得偷笑了,想要租到木頭地板而且屋頂高度符合標準的場地,除非有關係,否則要好好燒香拜拜,才能抽到好籤。在硬地板上打球,容易受傷,一堆老球友紛紛因傷退場,至為可惜。
各單項體育協會的黑暗面,大家可能略有耳聞,但我並非親眼所見,所以不在此多談。我如果有幸擔任理事,會和這群熱愛排球的朋友們一起努力去改善台灣的排球環境,盡力讓黑暗面消逝。
如果朋友們有興趣關切這次台灣排球史上第一次全民參與的改選,請參考以下這個網頁:
http://votionary.com/jumptotw/
2017年11月29日 星期三
台灣學界的哥倫布、愛因斯坦
科技部正在推的「哥倫布」「愛因斯坦」計畫[1],注重培育年輕學者固然是件好事,但有點頭痛醫頭、操之過急、規劃不周延。
這讓我想起一些往事。
即使時光倒回至我2005年回台灣教書的12年前,這些「哥倫布」「愛因斯坦」計畫都與我無緣,因為我取得博士學位後在美國工作7年,民國55年次的我,到台大任教時已經快40歲了。
當時台灣各界普遍缺乏危機意識,恣意揮霍著先前多年所謂台灣經濟奇蹟所累積的資產,就算有人呼籲也是紋風不動,學界務虛浮華,產業層次停滯不前,政治社會更是不遑多讓,各種光怪陸離的現象不斷湧現。
我剛回到台大時,是個nobody(現在也還是)。大學念電機系的我,在資訊系沒有人脈;看到學界務虛的現象嚴重,大老們似乎只知道用數期刊論文點數來掌控教授升等的方式,打造出所謂的卓越大學。身為助理教授,只有認真寫論文拼升等的本份,菜鳥的呼籲如同狗吠火車,過去的業界經驗不受大老重視,產學合作被長官認為是搞外務。
這些年來,好幾位同事離職了,一方面是因為有更好的去處,另一方面是因為在台大不僅有志難伸,還必須面對諸多的不合理。
有些人可能可以用平常心看待這些不合理,反正一路讀書考試的成功經驗告訴他們,不要管他合不合理,只要根據遊戲規則力爭上游即可。等到媳婦熬成婆,才能和長官大老平起平坐,分享權力和利益;在熬成婆之前,與遊戲規則無關的事情,不需太在意。
這些人是非常務實看待自己的利益,但對於社會而言,往往就不是那麼務實了。當然,我還是要幫這些教授朋友們說些話,不這樣做,又能如何呢?除了離開教職之外,還有什麼選項呢?
比起某些上市公司的主管,為了個人利益,刻意掏空公司,乃至於政客掏空國庫,許多的教授朋友做了遠超過所得薪水的教學服務工作,還要被逼著熬夜寫論文,學界務虛的問題,不能怪他們。
像我這種拒絕寫期刊論文而評鑑不過,在2010年被通知「留校察看,兩年後檢討是否續聘,評鑑通過前不晉升薪級」的個案,在台大電機資訊學院中如果不是唯一,大概也是極少數的「敗類」。
我想,大多數正常人應該不會選擇走我這種「偏激」的路線來面對制度和文化上的不合理。或許這就是所謂「平庸的邪惡」,不然優秀的日耳曼人民,當年怎會跟隨著希特勒做出自私自利卻傷天害理的事?
但是話說回來,哥倫布、愛因斯坦,哪個是正常人?我們的社會中,有多少奇才異士,被打壓是怪胎異端,受規訓而平凡化?
還好,寫論文並非難事,我在留校察看期間迅速發表先前累積下來的研究成果,在2012升等副教授,接著在四年後的2016年升等正教授,至少證明這樣異端的路線是行得通的,產學可兼顧,與產業相關的研究是可以發表,只是需要與眾不同的經營方式和理念。
相對於哥倫布、愛因斯坦,我選擇走的路和研究成果渺小之極,但也算是走過那麼一遭,這些年做我認為應做的事,說我該說的話,似乎沒有什麼大遺憾。
[1] 【申請人數沒過半】科技部砸50億重金攬才 年齡門檻太高卡死一堆學者
http://www.upmedia.mg/news_info.php?SerialNo=29890%3F
這讓我想起一些往事。
即使時光倒回至我2005年回台灣教書的12年前,這些「哥倫布」「愛因斯坦」計畫都與我無緣,因為我取得博士學位後在美國工作7年,民國55年次的我,到台大任教時已經快40歲了。
當時台灣各界普遍缺乏危機意識,恣意揮霍著先前多年所謂台灣經濟奇蹟所累積的資產,就算有人呼籲也是紋風不動,學界務虛浮華,產業層次停滯不前,政治社會更是不遑多讓,各種光怪陸離的現象不斷湧現。
我剛回到台大時,是個nobody(現在也還是)。大學念電機系的我,在資訊系沒有人脈;看到學界務虛的現象嚴重,大老們似乎只知道用數期刊論文點數來掌控教授升等的方式,打造出所謂的卓越大學。身為助理教授,只有認真寫論文拼升等的本份,菜鳥的呼籲如同狗吠火車,過去的業界經驗不受大老重視,產學合作被長官認為是搞外務。
這些年來,好幾位同事離職了,一方面是因為有更好的去處,另一方面是因為在台大不僅有志難伸,還必須面對諸多的不合理。
有些人可能可以用平常心看待這些不合理,反正一路讀書考試的成功經驗告訴他們,不要管他合不合理,只要根據遊戲規則力爭上游即可。等到媳婦熬成婆,才能和長官大老平起平坐,分享權力和利益;在熬成婆之前,與遊戲規則無關的事情,不需太在意。
這些人是非常務實看待自己的利益,但對於社會而言,往往就不是那麼務實了。當然,我還是要幫這些教授朋友們說些話,不這樣做,又能如何呢?除了離開教職之外,還有什麼選項呢?
比起某些上市公司的主管,為了個人利益,刻意掏空公司,乃至於政客掏空國庫,許多的教授朋友做了遠超過所得薪水的教學服務工作,還要被逼著熬夜寫論文,學界務虛的問題,不能怪他們。
像我這種拒絕寫期刊論文而評鑑不過,在2010年被通知「留校察看,兩年後檢討是否續聘,評鑑通過前不晉升薪級」的個案,在台大電機資訊學院中如果不是唯一,大概也是極少數的「敗類」。
我想,大多數正常人應該不會選擇走我這種「偏激」的路線來面對制度和文化上的不合理。或許這就是所謂「平庸的邪惡」,不然優秀的日耳曼人民,當年怎會跟隨著希特勒做出自私自利卻傷天害理的事?
但是話說回來,哥倫布、愛因斯坦,哪個是正常人?我們的社會中,有多少奇才異士,被打壓是怪胎異端,受規訓而平凡化?
還好,寫論文並非難事,我在留校察看期間迅速發表先前累積下來的研究成果,在2012升等副教授,接著在四年後的2016年升等正教授,至少證明這樣異端的路線是行得通的,產學可兼顧,與產業相關的研究是可以發表,只是需要與眾不同的經營方式和理念。
相對於哥倫布、愛因斯坦,我選擇走的路和研究成果渺小之極,但也算是走過那麼一遭,這些年做我認為應做的事,說我該說的話,似乎沒有什麼大遺憾。
[1] 【申請人數沒過半】科技部砸50億重金攬才 年齡門檻太高卡死一堆學者
http://www.upmedia.mg/news_info.php?SerialNo=29890%3F
2017年11月25日 星期六
停止製造無動力世代
看到丙成兄呼籲各界停止製造無動力世代[1],我也想來談談我的看法。
學生無動力的原因很多,檢討教育體制是重要的,但這麼多年教改,各方都有自己的道理,不斷在檢討對方,翻來覆去,難有共識;前進三步退兩步,難有大作為。
我認為根源在於經濟。無論教育如何改,如果經濟不振,能安居樂業的工作機會大幅減少,此時對於大多數學生和家長而言,為了卡位生存,似乎只有奮力擠進一般人認為的人生勝利組保證班(頂尖大學),進不了保證班的學生,必須加倍努力證明自己的才能,不然可能被貼上魯蛇的標籤。
那麼,一個政治經濟發展良好的社會,能夠提供許多能讓一般民眾安居樂業的工作機會,要憑藉什麼呢?當然不能靠那些虛耗社會資源的政治口水和幹話,必須靠健全且優質的產業。
一個健全的產業,需要社會各種行業的支持。經商的、辦教育的、搞文史哲學的、研究科學的,對於產業的發展,都能有其貢獻,但如果某行業的作為與產業脫節,就造成虛耗人力、腐蝕人心的現象。
台灣的教育內容和學術研究,與產業脫節的狀況很嚴重。這個跟傳統的文憑主義有很大的關係,早年我們說大學(University )的英語諧音是「由你玩四年」,而且我們真的很多同學時常翹課、混社團,並沒有比現在的學生用功,但當年台灣的產業發展得不錯,成績不佳的同學成為科技新貴、當老闆的比比皆是,為什麼呢?
因為當年台灣產業所需的技術能力遠遠低於先進國家。不需要念大學、研究所,也能夠幫人家修電腦、裝軟體、開工廠。絕大多數的技術來自於國外,只要學會如何應用即可,不必深究其原理,也不一定要搞創新。
也就是說,當年台灣的教育內容和升學體制並沒有比現在好,大學生也沒有學到什麼實用的東西,台灣的經濟奇蹟並非歸功於高等教育,政府和產業沒有真的把人才培育寄託於大學,大學教授樂於做自己感興趣卻和產業脫節的教學研究,大學生開心玩四年,家長也不很擔心,反正到處都有工作機會。
但是在這二十多年來快速全球化的趨勢下,台灣社會的成長速度太慢。既有的產業不願冒風險砸重本嘗試轉型升級,很多教育機構跟過去一樣教的還是那些與產業脫節的內容,學生還是跟我們當年一樣忙於為考試而讀書,倒是多出許多讓人心惶惶的政治鬥爭和媒體亂象。
我想講的是,如果大家願意在各自的崗位上嘗試與產業鏈接,多幾分努力設法提升產業、創造更多優質的工作機會的話,台灣的經濟才會健全發展。光是在國內爭權奪利,彼此酸來嗆去,就算政黨再多輪替幾次,教改翻來覆去,還是無濟於事。
可以做的事情很多,政治上應設法停止務虛、創造價值,產業應設法精進技術、提升全球競爭力,教育應重視多元且務實的人才培育和專業發展,社會應善用開創性人才、同時照顧弱勢。
能朝這些方向做點事情,即是功德。這是我所理解的法華經名句「一切世間治生產業,皆與實相不相違背」所蘊藏的深意。
[1] https://udn.com/news/story/7340/2830016
學生無動力的原因很多,檢討教育體制是重要的,但這麼多年教改,各方都有自己的道理,不斷在檢討對方,翻來覆去,難有共識;前進三步退兩步,難有大作為。
我認為根源在於經濟。無論教育如何改,如果經濟不振,能安居樂業的工作機會大幅減少,此時對於大多數學生和家長而言,為了卡位生存,似乎只有奮力擠進一般人認為的人生勝利組保證班(頂尖大學),進不了保證班的學生,必須加倍努力證明自己的才能,不然可能被貼上魯蛇的標籤。
那麼,一個政治經濟發展良好的社會,能夠提供許多能讓一般民眾安居樂業的工作機會,要憑藉什麼呢?當然不能靠那些虛耗社會資源的政治口水和幹話,必須靠健全且優質的產業。
一個健全的產業,需要社會各種行業的支持。經商的、辦教育的、搞文史哲學的、研究科學的,對於產業的發展,都能有其貢獻,但如果某行業的作為與產業脫節,就造成虛耗人力、腐蝕人心的現象。
台灣的教育內容和學術研究,與產業脫節的狀況很嚴重。這個跟傳統的文憑主義有很大的關係,早年我們說大學(University )的英語諧音是「由你玩四年」,而且我們真的很多同學時常翹課、混社團,並沒有比現在的學生用功,但當年台灣的產業發展得不錯,成績不佳的同學成為科技新貴、當老闆的比比皆是,為什麼呢?
因為當年台灣產業所需的技術能力遠遠低於先進國家。不需要念大學、研究所,也能夠幫人家修電腦、裝軟體、開工廠。絕大多數的技術來自於國外,只要學會如何應用即可,不必深究其原理,也不一定要搞創新。
也就是說,當年台灣的教育內容和升學體制並沒有比現在好,大學生也沒有學到什麼實用的東西,台灣的經濟奇蹟並非歸功於高等教育,政府和產業沒有真的把人才培育寄託於大學,大學教授樂於做自己感興趣卻和產業脫節的教學研究,大學生開心玩四年,家長也不很擔心,反正到處都有工作機會。
但是在這二十多年來快速全球化的趨勢下,台灣社會的成長速度太慢。既有的產業不願冒風險砸重本嘗試轉型升級,很多教育機構跟過去一樣教的還是那些與產業脫節的內容,學生還是跟我們當年一樣忙於為考試而讀書,倒是多出許多讓人心惶惶的政治鬥爭和媒體亂象。
我想講的是,如果大家願意在各自的崗位上嘗試與產業鏈接,多幾分努力設法提升產業、創造更多優質的工作機會的話,台灣的經濟才會健全發展。光是在國內爭權奪利,彼此酸來嗆去,就算政黨再多輪替幾次,教改翻來覆去,還是無濟於事。
可以做的事情很多,政治上應設法停止務虛、創造價值,產業應設法精進技術、提升全球競爭力,教育應重視多元且務實的人才培育和專業發展,社會應善用開創性人才、同時照顧弱勢。
能朝這些方向做點事情,即是功德。這是我所理解的法華經名句「一切世間治生產業,皆與實相不相違背」所蘊藏的深意。
[1] https://udn.com/news/story/7340/2830016
2017年11月22日 星期三
大學的獎助學金與學費
今天上午花了三小時作為電資學院代表在行政大樓審查「希望助學金」。
台大每年從收到的學雜費中提出上千萬元經費,提供三百多份希望獎學金給來自弱勢家庭的學生。其實,除了助學金之外,學生還可獲得學雜費和住宿費的減免。

基本上,這幾年申請希望獎助學金的人數都低於400人的上限,今年申請的人數較去年為低,所以校方盡可能從優認定補助等級,也希望符合資格的學生都來申請。
從這個助學金申請的狀況,或許可以看出,能進到台大的弱勢學生並不多,而且人數逐年減少中,似乎印證了弱勢家庭難以將學生送進台大的困境。
如果說「弱勢家庭難以將學生送進台大」是個需要解決的問題,那麼這個問題的根源為何?是大學的入學制度,還是弱勢學生所接受的中小學教育?是弱勢家庭付不起補習班學費,還是說弱勢家庭不大重視教育,希望子女早點去工作?
我覺得以上的原因都有其影響,問題其實很複雜的。大學端和入學制度皆是其中一環,如果只著眼於這幾環,還是不能完全解決問題。
作為一個研究型大學,台大的目標原本是很單純的,希望收到一流的學生,培育出一流的人才。至於學生的家庭背景,通常不是台大收學生時所關切的因素,因為台大目前在經營上並不靠收學費或是學生家長的捐款,只要是優秀且用功的學生,台大很樂意提供獎助學金和減免學雜費等優惠。
如果專為弱勢生開一道門,降低錄取標準,看起來對於台大追求卓越的目標是不利的,但是我覺得值得嘗試。當年我唸台大時,有很多僑生,進來時程度不佳,但後來表現不錯,所以我認為可以適度放寬,多收一些弱勢學生。
另一方面,如果台大提高學雜費,影響最大的並不是上述的弱勢學生,而是家境勉強還過得去、不符合弱勢資格的學生。不過,除了弱勢獎學金之外,學生還有其他的獎助學金和助學貸款的管道。
我傾向於相信所謂的「天助自助者」,重點在於提供弱勢者某種的機會和協助,但弱勢者本身也要把握機會、善用協助。
我們當年很多同學出國留學,很少人拿得到獎學金,必須負擔高額的學雜費和生活費,因此大家努力拼獎學金,或者超修學分趕快拿到學位。當年在一學分一千美元的情況下,算出一小時課約折合2000台幣,才知道高等教育如此昂貴。幸好在努力一學期之後拿到獎學金和減免學雜費,大大減輕了父母的負擔。
獎助學金應該是很重要的議題,但國內並不大重視,一般的學生不珍惜教學資源,缺錢的學生去打工的現象層出不窮,在私立大學特別嚴重,也嚴重影響了教學品質。
台大每年從收到的學雜費中提出上千萬元經費,提供三百多份希望獎學金給來自弱勢家庭的學生。其實,除了助學金之外,學生還可獲得學雜費和住宿費的減免。

基本上,這幾年申請希望獎助學金的人數都低於400人的上限,今年申請的人數較去年為低,所以校方盡可能從優認定補助等級,也希望符合資格的學生都來申請。
從這個助學金申請的狀況,或許可以看出,能進到台大的弱勢學生並不多,而且人數逐年減少中,似乎印證了弱勢家庭難以將學生送進台大的困境。
如果說「弱勢家庭難以將學生送進台大」是個需要解決的問題,那麼這個問題的根源為何?是大學的入學制度,還是弱勢學生所接受的中小學教育?是弱勢家庭付不起補習班學費,還是說弱勢家庭不大重視教育,希望子女早點去工作?
我覺得以上的原因都有其影響,問題其實很複雜的。大學端和入學制度皆是其中一環,如果只著眼於這幾環,還是不能完全解決問題。
作為一個研究型大學,台大的目標原本是很單純的,希望收到一流的學生,培育出一流的人才。至於學生的家庭背景,通常不是台大收學生時所關切的因素,因為台大目前在經營上並不靠收學費或是學生家長的捐款,只要是優秀且用功的學生,台大很樂意提供獎助學金和減免學雜費等優惠。
如果專為弱勢生開一道門,降低錄取標準,看起來對於台大追求卓越的目標是不利的,但是我覺得值得嘗試。當年我唸台大時,有很多僑生,進來時程度不佳,但後來表現不錯,所以我認為可以適度放寬,多收一些弱勢學生。
另一方面,如果台大提高學雜費,影響最大的並不是上述的弱勢學生,而是家境勉強還過得去、不符合弱勢資格的學生。不過,除了弱勢獎學金之外,學生還有其他的獎助學金和助學貸款的管道。
我傾向於相信所謂的「天助自助者」,重點在於提供弱勢者某種的機會和協助,但弱勢者本身也要把握機會、善用協助。
我們當年很多同學出國留學,很少人拿得到獎學金,必須負擔高額的學雜費和生活費,因此大家努力拼獎學金,或者超修學分趕快拿到學位。當年在一學分一千美元的情況下,算出一小時課約折合2000台幣,才知道高等教育如此昂貴。幸好在努力一學期之後拿到獎學金和減免學雜費,大大減輕了父母的負擔。
獎助學金應該是很重要的議題,但國內並不大重視,一般的學生不珍惜教學資源,缺錢的學生去打工的現象層出不窮,在私立大學特別嚴重,也嚴重影響了教學品質。
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月11日 星期一
從資訊教育出發 創新高中教學
我在逢甲大學舉辦的「高中課程創新教育論壇」(2016/07/07)擔任與談人,當場以此為題對現場的高中主管們做10分鐘的意見分享。
首先我發表免責聲明:
我可能稍微另類一點... 雖然另類的程度遠遠不及葉丙成教授,頭髮也沒有他長,但我們以各自的方式對國民教育提出一些建言。我個人覺得台大對國民教育不能置身事外,因為國教的品質與大學教育息息相關,有些教授抱怨大學生素質每況愈下,或許可以出來為中學教育做點事情。
其實我覺得台大教授雖然不甚瞭解高中教育現場,但應該可以在創新方面注入一些能量。不是教育科班出身的好處是,我們的著眼點和思考比較不會被現有的教育框架所限制住,對於如何翻轉和創新中學教育這件事,或許可以較為天馬行空地做腦力激盪,或許可以因此激盪出一些火花。
如我在免責聲明所說的,各位不要把我們當成教育專家,而我們談創新中學教育,真正需要的是激發在座每一位教育專家的創意和創新的企圖心,才能有自發的改革和創新,而不是一直處於保守的上行下效的框架裡。
有人可能會問,保守有甚麼錯?
現在的教育體制,源於西方工業革命之後對於大量專業人力的需求,因此開辦學校,制定標準教材,舉辦學位或技能檢定考試,讓業界得以有效率的雇用人力。然而,業界已經進化到高度自動化的工業4.0,以及所謂人工智慧的時代,而教育的形式也受到資訊網路和線上學習的影響,許多國家已經在重新檢視標準化教育的意義性。
各位為人師長的,是否知道這社會十年後職場上所需要的能力?很會背書、記公式、考高分的學生,是否能適應未來的社會? 從我教大學生以及與業界合作的經驗,好學生未必懂得自學、團隊合作、求新求變,而這些能力到了大學再練習是否太晚?
很抱歉,各位先進從過去照本宣科、數十年如一日的教學生涯,轉為現在這種需要翻轉和創新的日子,罪魁禍首是我們這些搞資訊科技的,但我們自己也得在這個的潮流中日新又新,而且潮流影響所及,各行各業也都從數位化、網路化,進到自動化、智慧化,不斷有新的挑戰,也不斷有新的機會。
因此,資訊科技和資訊教育實在太重要了,但千頭萬緒,在有限的時間內,我想摘要幾個我所認為的重點與各位分享:
教育如何善用資訊科技?
如何以資訊教育啟發學生新時代所需的能力?
資訊科技是提升數理人文各領域的利器!
首先,教育如何善用資訊科技? 方式很多,以下只是幾個例子:
其次,如何以資訊教育啟發學生新時代所需的能力?
資訊教育不是教工具的使用,不是教用電腦做簡報、也不是教用電腦畫圖…而是讓學生在資訊科技改變人類生活的時刻,理解其幕後的原理和現象,可以巨觀和微觀去看待資訊科技與人類的互動,這是所謂的計算思維。
由寫程式入門去了解計算思維,是一種方法,但不是唯一的方法。好比我們教數學,如果不會列方程式,如何學習用數學解應用問題? 但光會解方程式,並不是學數學的目的,但我們因為要應付考試,往往過度強調解題技巧;同樣的道理,在中學教育中,學習寫程式只是敲門磚,如果我們過度強調程式寫作,也會迷失了焦點。
中學資訊教育絕對不是為了培養資訊專業人才,重點在於具體訓練「語言理解與表達能力」「抽象思考」「解決問題」等能力。我們不要重蹈覆轍,像某些科系以自我本位的想法把過多的材料塞進中學教育裡面,造成學生貪多嚼不爛、因噎廢食的結果。
新時代所需的能力有很多,包括:
幾年前,我到台大理學院、到教育部的課綱委員會談中學資訊教育,必須花力氣向與會人士解釋推動中學資訊教育不是資訊系的私心,還好這幾年進步了,我不用多說大家也懂了。剛才有先進提到考招聯動,我想將來不少科系可能採計資訊課程,不會只是資訊系。
舉個現成的例子,來台中的路上,我看到網路上有一則用機器學習技術分析紅樓夢八十回前後的差異的文章。這個例子告訴我們,文學的研究也可以有創新的做法,而使用資訊科技做跨領域研究可以產生很多創新和突破,這也是為何我說資訊科技可以幫助老師和學生在中學階段進行跨領域的教學研究。
最後,我想再次強調,中學資訊課程不是為培養資訊人才而設,不是幫資訊科老師搶飯碗,應該是學校主管和所有科目的老師都需要關心的事。資訊課程的重要性與日俱增,我們在教學場域中,看的應該不僅是現在的需求,我們必須看遠、創新,研究如何為了學生的未來而教。
首先我發表免責聲明:
- 大學教授未必充分理解高中教育現場,我所提出的想法或建議列入參考就好,各位需要做進一步思辨。就算是中研院院士的話,也不是聖人之言,不要緊抓著不放。
- 台大是研究型大學,而且沒有教育學院,對於高中教育的貢獻是有限的。坦白說,台大只想要最好的學生,而台灣大部分最好的學生都會到台大,所以請不要期待大多數的台大教授會致力於普及教育,他們有很多自身的教學研究工作要忙。
我可能稍微另類一點... 雖然另類的程度遠遠不及葉丙成教授,頭髮也沒有他長,但我們以各自的方式對國民教育提出一些建言。我個人覺得台大對國民教育不能置身事外,因為國教的品質與大學教育息息相關,有些教授抱怨大學生素質每況愈下,或許可以出來為中學教育做點事情。
其實我覺得台大教授雖然不甚瞭解高中教育現場,但應該可以在創新方面注入一些能量。不是教育科班出身的好處是,我們的著眼點和思考比較不會被現有的教育框架所限制住,對於如何翻轉和創新中學教育這件事,或許可以較為天馬行空地做腦力激盪,或許可以因此激盪出一些火花。
如我在免責聲明所說的,各位不要把我們當成教育專家,而我們談創新中學教育,真正需要的是激發在座每一位教育專家的創意和創新的企圖心,才能有自發的改革和創新,而不是一直處於保守的上行下效的框架裡。
有人可能會問,保守有甚麼錯?
現在的教育體制,源於西方工業革命之後對於大量專業人力的需求,因此開辦學校,制定標準教材,舉辦學位或技能檢定考試,讓業界得以有效率的雇用人力。然而,業界已經進化到高度自動化的工業4.0,以及所謂人工智慧的時代,而教育的形式也受到資訊網路和線上學習的影響,許多國家已經在重新檢視標準化教育的意義性。
各位為人師長的,是否知道這社會十年後職場上所需要的能力?很會背書、記公式、考高分的學生,是否能適應未來的社會? 從我教大學生以及與業界合作的經驗,好學生未必懂得自學、團隊合作、求新求變,而這些能力到了大學再練習是否太晚?
很抱歉,各位先進從過去照本宣科、數十年如一日的教學生涯,轉為現在這種需要翻轉和創新的日子,罪魁禍首是我們這些搞資訊科技的,但我們自己也得在這個的潮流中日新又新,而且潮流影響所及,各行各業也都從數位化、網路化,進到自動化、智慧化,不斷有新的挑戰,也不斷有新的機會。
因此,資訊科技和資訊教育實在太重要了,但千頭萬緒,在有限的時間內,我想摘要幾個我所認為的重點與各位分享:
教育如何善用資訊科技?
如何以資訊教育啟發學生新時代所需的能力?
資訊科技是提升數理人文各領域的利器!
首先,教育如何善用資訊科技? 方式很多,以下只是幾個例子:
- 翻轉教學、線上學習: 老師不需要重複教同樣的課,學生可以按自己的進度學習,透過網路與世界接軌。
- 蒐集資訊、分析資料、跨領域學習: 各個學門都可以結合資訊科技做資料的蒐集與分析,進行專題研究。
- 數位校園、個人化學習: 根據每位學生的學習狀況,提供適合的課程與進度。
其次,如何以資訊教育啟發學生新時代所需的能力?
資訊教育不是教工具的使用,不是教用電腦做簡報、也不是教用電腦畫圖…而是讓學生在資訊科技改變人類生活的時刻,理解其幕後的原理和現象,可以巨觀和微觀去看待資訊科技與人類的互動,這是所謂的計算思維。
由寫程式入門去了解計算思維,是一種方法,但不是唯一的方法。好比我們教數學,如果不會列方程式,如何學習用數學解應用問題? 但光會解方程式,並不是學數學的目的,但我們因為要應付考試,往往過度強調解題技巧;同樣的道理,在中學教育中,學習寫程式只是敲門磚,如果我們過度強調程式寫作,也會迷失了焦點。
中學資訊教育絕對不是為了培養資訊專業人才,重點在於具體訓練「語言理解與表達能力」「抽象思考」「解決問題」等能力。我們不要重蹈覆轍,像某些科系以自我本位的想法把過多的材料塞進中學教育裡面,造成學生貪多嚼不爛、因噎廢食的結果。
新時代所需的能力有很多,包括:
- 自學的能力
- 跨學門解決問題的能力
- 在開放原始碼的時代同中求異的能力
- 在人工智慧時代尋找出路的能力
幾年前,我到台大理學院、到教育部的課綱委員會談中學資訊教育,必須花力氣向與會人士解釋推動中學資訊教育不是資訊系的私心,還好這幾年進步了,我不用多說大家也懂了。剛才有先進提到考招聯動,我想將來不少科系可能採計資訊課程,不會只是資訊系。
舉個現成的例子,來台中的路上,我看到網路上有一則用機器學習技術分析紅樓夢八十回前後的差異的文章。這個例子告訴我們,文學的研究也可以有創新的做法,而使用資訊科技做跨領域研究可以產生很多創新和突破,這也是為何我說資訊科技可以幫助老師和學生在中學階段進行跨領域的教學研究。
最後,我想再次強調,中學資訊課程不是為培養資訊人才而設,不是幫資訊科老師搶飯碗,應該是學校主管和所有科目的老師都需要關心的事。資訊課程的重要性與日俱增,我們在教學場域中,看的應該不僅是現在的需求,我們必須看遠、創新,研究如何為了學生的未來而教。
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⋯⋯
丙成兄剛寫了一篇「我眼中的台大同事們」(註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日 星期二
寫程式之外,傑出軟體工程師所需的六項能力
這篇【會寫程式還不夠,矽谷傑出軟體工程師都有的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/洪�⋯⋯
一、不害怕探索陌生程式語言
二、精通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⋯⋯
要做好論文,要先懂得蒐集資料,看懂別人的論述,吸收消化、綜合分析後才開始做論文。如果從中學開始,我們的國民就有這樣蒐集資料、思辯論述的素養,那麼大家應該就不大會去相信那些偏頗不實的言論,也就不會去看那些所謂亂源的媒體和腦殘的文章。
抱歉,我忘了大家在中學時忙著背書、解考古題、衝高學業成績,哪有那個美國時間做這種事呢?考試的作文又不需要這麼費功夫,只要把那些嘉言絕句背出來、套用一些陳腔濫調的公式,讓閱卷的國文老師認可就行了,而社會科的申論題都是有標準答案的,絕對不能有個人的意見,論甚麼論?把標準答案背出來就是了。
我說過台灣還未擺脫科舉封建和專制的陰影,因為我們上一代和這代人就是在那樣的文化中長大的。混得還不錯的,就覺得聯考那樣的遊戲規則太公平了,學而優則仕才對勁,要有房產巴結權勢才有搞頭,搞到不少人發覺大半輩子都是活在陰影下,為時已晚,但都是別人的錯和大環境的問題。
談到出路,人文社會學科其實有很多有用的東西,為什麼會沒有出路?我覺得和台灣科技業所面臨的問題類似的地方是,我們並沒有讓各領域的文化昇華,所以淺池容不下大魚。很多人提起當年的刻苦耐勞,覺得只要肯努力就有出路,以此質疑現在的年輕人不努力。但我看到的是,要再目前這個全球化的時代中出頭,要學的東西太多,要有新的方法和具有競爭力的環境,就不要再緬懷「紅葉少棒」那種事了,還有能力和資源的話,就帶領子弟兵或是贊助他們去提升專業領域的層次,就不要只出一張嘴說當年勇來教訓子弟。
回歸到系統設計的人才的議題,關鍵也就是在文化上,在系統和晶片廠最賺錢的時候,許多人一窩蜂跳進去,削價競爭,把市場做到爛。當時進到這個產業的人,不知道有沒有意識到,這是一個高科技、高風險的產業,如果沒有持續精進,是沒有辦法維持榮景的。老闆和股東可以不做研發,集體壓低員工薪水,一路賺到公司賠本為止,但員工如果為了本身長遠的出路著想,值不值得為了短期利益願意陪這些老闆這樣玩呢?
或許,說「系統設計的人才在台灣是否出路越來越少」這句話的人所指的是,那個學點技術就能夠進系統或晶片設計代工廠做幾年、靠股票分紅成為科技新貴的時代已經過去了,這點我同意,因為台灣過去靠廉價人力紅透半邊天的傳統系統產業正在萎縮中,原本在裡面的人都要想辦法轉型了,還會找新來的人去進去做老掉牙的東西嗎?
然而系統設計的領域大得很,很多人只注意到消費性電子產業,那些系統廠多半以大資本(政府補助)買現成技術薄利多銷的策略為主,卻不知道還有很多技術門檻較高的產業,總產值雖不高,但利潤高,其實頗適合台灣發展。
有不少做較高端系統產品的業界人士可能會告訴你,他們積極在搶真的懂系統軟體的人才,從國外找人才來做研發,還非常需要系統架構師來帶領研發,甚至砸大錢從大學挖學理兼備的教授和博士生來做研發。而我們實驗室有接不完的業界委託研究計畫,做高階系統研發和雲端服務的公司一直向我要人,教育部長官這兩年來不斷要我們想辦法培育更多的高階系統軟體人才和系統架構師。
這些高利潤、高技術門檻的產業,以往較乏人問津,可能是因為國人總喜歡炒短線、學生一窩蜂去大公司,想要馬上賺錢的觀念。我們看到很多值得投資研發的中長期項目,業界不甩,學生也沒有興趣。現在鼓吹年輕人搞新創,我很支持,但前提是不要短視近利,可能的話,以「以技術立身」。
高階系統人才,需要不斷學習來跟上系統的快速演進,而厲害的系統架構師往往需要多年累積的經驗來造就,這就是以技術立身。我之前在矽谷共事五年的團隊,就是一個實際的例子 [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/⋯⋯
資訊通識教育以及計算思維怎麼教呢?我很擔心有人把程式設計課本的每個章節拿出來,簡化一番就拿出來教了。現在的程式設計課,很多大學生都學不好,我想如果把簡化版拿去教中小學,恐怕也是問題重重。
國外在這方面進步得很快,我們不妨來參考一下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⋯⋯
我這些年一直批判高等教育學用落差的問題,也一直提倡產學合作來降低學用落差,因此我樂見社會大眾關心這個問題,但並非隨意引用數據來踐踏專業。
不只聯合報,「關鍵評論網」這篇【所學無法致用 碩博士失業率比專科生還高】(註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⋯⋯
以下我借用羅賓森的話,以問答的方式,討論一些關心教改者可能會問的問題:
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年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⋯⋯
早期,很多台灣的學生和工程師學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還在唸博士班,讓我們來看看他的技術創業故事,也試著看看那些地方用得到上述的技能:
理想上,上述的技能,當然是越早適性開發越好,但我們常常批評在台灣長大的人,只會念書考試,我想中國也不遑多讓。我想HaoYuan Li本身的資質應該是頗優秀的,不過在這個例子裡,可以看到UC Berkeley研究所提供了發展和應用技能的環境和機會。這樣的研究所環境,台灣有沒有呢? 以前的學術界的問題已經談過很多,在此就不說了,現在學校比較重視新創和產學,所以建議諸位對新創有興趣的同學和業界朋友,可以設法找到這樣的環境,善加利用。
(註1) http://www.alluxio.com/2016/02/allu⋯⋯

我先談與新創最有關係的前三項,之後有空再慢慢補充其他項目:
第一是解決複雜問題的能力(Complex Problem Solving),但是要如何才能訓練出這種能力呢?我們做系統研究,就是研究複雜系統裡面組件之間各種互動模式中可能產生的問題,這需要蒐集資料、細心觀察、分析問題根源、提出解決方案、實際驗證效果。這不是在學校裡做那些可預見結果的實驗,也不是去業界做那些受幾個月訓練就能上手的工作所能培養的能力。
第二是批判式的思考(Critical Thinking),更是那些乖乖聽話讀書的人所欠缺的訓練。我們的社會,一向不大鼓勵批判傳統主流想法,甚至把批判和特立獨行看成是叛逆。但是批判式的思考,並不是網民打口水戰、為反對而反對嗆聲,要有足夠深刻的思想,才能脫離膚淺的批判。
第三是創新的能力(Creativity)。在這個資訊爆炸的時代,已經有ㄧ輩子讀不完的好書和電影、電視,還有數位教育課程,甚至還有會解決已知問題、精準完成任務的人工智慧和機器人,如果不創新的話,那要做什麼事來呈現個人的價值呢?但要如何訓練創新的能力呢?除了天才和天份之外,我覺得上述第一和第二項能力也是創新的關鍵,如果懂得解析複雜問題、批判既有作法,那創新的機會可能提高不少。
此外,對於研究人才來說,排在五和第七位的Coordinating with Others和Judgement and Decision Making,也是很重要的技能。
但這些聽起來還是很抽象,要如何發展和應用這些技能呢? 要講清楚並不容易,剛好今天晚上在探索開源系統軟體時,看到一個技術創業的故事,剛好可以拿來對比以上所提到的技能。
話說我對Tachyon這個開源系統軟體很感興趣,原因可能是因為我也早有類似的構想,只是沒有找到有能力而且願意做的博士班學生。今晚突然想關心一下Tachyon的時候,發現他變成了1.0版,而且名字換成了Alluxio (註1)。想多了解一下為什麼換名字,就讀了作者的部落格。

Tachyon/Alluxio的作者HaoYuan Li還在唸博士班,讓我們來看看他的技術創業故事,也試著看看那些地方用得到上述的技能:
- HaoYuan Li是2008年北京大學畢業的學生,先到美國Cornell大學念碩士,2011年開始在UC Berkeley攻讀博士。他在北大時,在2005-2008年就到Google實習;2010年拿到Cornell碩士後,到Conviva這家2006年成立的新創公司做了一年,才到Berkeley念博士。所以在念博士班之前,就具備了相當的業界經驗。
- 他看到AMPLAB實驗室出品的Spark和Mesos這兩個軟體紅起來,卻同時也看到這幾個軟體的不足之處 ,這應該就是所謂的Critical Thinking。
- 於是在2012年底產生了Tachyon技術來補充不足之處的想法,這是所謂的Creativity。
- 評估之後,決定這是值得研究的題目,馬上開始做,花了幾個月做出了Tachyon的雛型,這是Judgement and Decision Making。
- 在2013/04開放原始碼,以與社群合作的方式繼續研發,這需要Coordinating with Others的技能。
- 再花了兩年的時間不斷去改進Tachyon ,這就是博士班最強調的Complex Problem Solving 。
- 在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⋯⋯
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⋯⋯
訂閱:
文章 (Atom)

