圖片來源:David Martyn Hunt ,CC Licensed
這篇【會寫程式還不夠,矽谷傑出軟體工程師都有的5種能力 】說得不錯,值得想深耕軟體技術領域、以技術立身的人一讀。這也是我在矽谷工作時的切身經驗,因此我一直希望訓練學生這些高生產力的傑出軟體工程師所具備的能力:
● 不害怕探索陌生程式語言
● 精通Debug
● 開發節省時間的工具
● 優化重複性工作的速度
● 發展系統性思考模式
我十一年前從矽谷回到台灣教書,原本想把這些工程研發能力的重要性傳達給學生,卻發現號稱電腦王國的台灣,在軟體工程的領域的研發文化竟是意想不到的淺碟。明明是國外重視的工程技術,國內卻乏人問津。學界標榜要世界一流,只好抄捷徑,從理論著手;業界要快速賺錢,沒時間研發,要的是現成的解決方案,所以在軟體界,產學的落差很大。
要知道,產學落差影響最大的是學生和工程師。講難聽點,教授可以一輩子在學術的象牙塔裡優遊自在,不用太在意學生的出路;老闆和主管把握時機賺飽了錢,之後可以把產業當投資遊戲來玩。但如果在學校沒有受到足夠的工程訓練,成為工程師之後又沒有機會做深入的研發案,可能一輩子只能「逐水草而居」,接些門檻不高的專案,難以成為傑出的軟體工程師和系統架構師,結果就是一直為人代工、為人作嫁。
礙於視野,一般學生常常以為解決困難的理論問題、寫出酷炫的應用才了不起,程式設計競賽得獎的是神人,不大明白軟體和系統工程的概念,不大知道高生產力的意義性。如果一直做為人代工、為人作嫁的工程師,或是成為主管、老闆、理論型學者,是您想要過的日子,那麼您大可不必繼續看下去了。以下是我的個人經驗談,分別對應到以上的五項能力:
一、不害怕探索陌生程式語言
我很早就建立起程式設計能力,在高中時自己學了約十種程式語言,學到後來覺得學新的程式語言沒什麼了不起,只是很有趣、很簡單、很有用。所以只要有空、有需要、有機會,就很自然地會學到新的語言。尤其在平行處理、分散式系統和異質計算一直有新的語言出現,需要有不害怕探索陌生程式語言的能力。
二、精通Debug
然而我必須說我從來就不是很擅長特定的程式語言,也不是很精通程式設計,我很少設計新的演算法,但我看很多人寫的程式碼,而且擅長Debug,這是設計師和工程師的重要差別之一。在解決平行處理和系統效能優化的工程問題時,會遇到很多一般程式所沒有的Bug,而且很難抓,尤其是所謂的Performance Bug,更是需要傷腦筋,有時候還需要一些方法論和工具才行。
三、開發節省時間的工具
因為平行程式的Bug很難抓,複雜系統Performance不好分析,所以需要開發出能幫開發者節省時間的工具。我的博士論文裡面敘述如何以工具蒐集程式的靜態與動態資訊,以工具進行分析和優化,甚至設計工具去將程式和系統建成模型(model)後做進一步的模擬。我在矽谷Sun公司做系統優化工作時,用了非常多的效能分析工具;現在帶領學生開發從晶片設計到超級電腦的輔助工具,都覺得工具特別重要。
四、優化重複性工作的速度
除了工具之外,要進一步省下大部分時間(所以日子可以輕鬆點),必須觀察或預判工作中大量重複的部分,設法將之優化。好比優化程式的效能。就是找到關鍵的迴圈,再以各種手段(編譯器選項、改寫程式碼、平行化、GPU、硬體加速器等等)去加速它。同樣的想法也可應用在工作和生活上,要重複同一工作很多次,可不可以寫一個小程式(Script)去自動化工作的執行和結果的分析?如果每天重複做某些事,能否換個方式讓這些工作變得有效率?
五、發展系統性思考模式
即便是簡單的系統,也有「牽一髮動全身」的問題。很多時候,做了一件所謂優化的工作,未必會得到好處,搞不好先看到壞處。複雜的系統就像人體和社會,出了問題要吃藥、要修法,但藥不能亂吃,法不能亂修,需要有「系統性思考模式」: 了解每個變因可能造成的正面和負面的結果,乃至於變因之間、變因與系統之間的交互影響。對複雜系統來說,做這件事的難度很高,所以我才會一直想研究方法論和發展工具,來提高生產力。
容我再補充第六點:
六、化繁為簡、有條不紊與人溝通
很多工程師很難與人溝通,有些滿嘴都是一般人或老闆聽不懂的術語,有些則是會做不會講。各位到矽谷看,大部分的高級工程師都能言善道,能夠把艱澀難懂的技術,依據對方的程度,用對方能聽懂的語言表達。如果不能表達清楚的話,再怎麼厲害,作為工程師的成就也有限。
擁有高度生產力的工程師,是國家真正的技術力和國際的競爭力,這是瑞士、荷蘭、以色列、芬蘭這些國家走的路線,而不是靠低工資和加班工作。我發現台灣過去的薄利多銷的路線已經不單只是衍生出業界現在必須面對的問題,經濟壓力和普遍過勞的現象也造成不少社會文化的問題,影響健康、降低生活品質、讓文化層次停滯不前。
在我個人能力範圍所能做的,是設法提高我學生的工程素養,有機會就協助某些有志提昇技術能力的業界人士。但大家可能要先有個認識,這些能力往往都不是一般人到研究所和業界學個一年兩年能夠出師的。以我個人的駑鈍之才,到了國外念博班和工作時有緣遇到艱難的工程問題,才得以略窺門徑,然而在台灣要如何才學到這些技能呢?
我沒有簡單的答案,這也不是容易的事,我之前談過多次。我只是相信,以目前台灣的環境來說,這是一條值得鼓勵嘗試的路,如果在學校和業界有機會面對艱難、前瞻的工程問題,才有機會練到功夫。網路上很多明師,不一定要拜師才能學藝。
反過來說,如果只在乎速成,在學校不願挑戰艱難的工程問題,到了業界又沒有機會遇到前瞻的工程問題,我想就很難發展上述的能力,這也是當前台灣業界非常缺乏系統架構師、軟體架構師的原因。
但這些原因都不是真正足以阻擋一個能欣賞工程技藝的、願意認真學東西的人,有機會花幾年時間深入做系統研究,自然會學到上述能力。如果具備上述能力,還需要擔心工作的問題嗎?如果業界有很多高生產力的人才,還需要這麼擔心競爭力的問題嗎?
※本文內容授權自《洪士灝》,未經授權不得轉載。
更多《研發製程》工作機會來了~
在洪士灝目前擔任國立台灣大學Associate professor和NTU PAS Lab擔任CEO & Founder。提倡理念,當老闆的不要覺得自己高人一等,當伙計的不要在心態上矮人一截,但平等不等同於放肆沒規矩,就事論事時,不以人廢言。批判不等同於鬥爭。許多人為鬥爭(爭權奪利或是報復)而著文發言批判,是個人所不樂見。多元價值的社會,需要平等包容來降低動盪。
最大的敵人,不是別人,而是自己。轉職,第一個要過的關不是面試官,而是自己心理這一關。
我在台灣是資深老妹,到了韓國新創公司,成為菜鳥老妹。面對這些小我 10 多歲的前輩,顛覆了我的舊思維。
到了畢業季,許多剛學校畢業的學生也開始進入職場,進入職場後,很多事情可能與原本想像不同,沒有人有把握一開始就百分之能掌握工作的全部項目,軟體工程師這行業也是如此,與上個世代相比,軟體撰寫這個行業也經過
劉晉仁/核稿編輯 〔即時新聞/綜合報導〕許多公司都會訂下規定,培養員工工作紀律,但有女網友分享,她剛入職一家公司,但在翻閱員工手冊後發現不太對勁,因為手冊上寫「打卡後
■魏錫賓 日本失落30年曾搬演出停滯的可怕:物價不漲、薪資不動,經濟有如一潭死水。雖然基本工資調高將增加企業的營運成本,但若是薪資
〔健康頻道/綜合報導〕不知不覺越來越冷,很多人到冬天都會發現,自己好像心情特別不好,或是情緒特別容易低落?台北市童伴心理治療所所長蔡百祥在臉書專頁「蔡百祥臨床心理師」發文表示,要小心這可能是季節性情緒
生活好書福市集本週六(廿三日)在北屯四張犁農村公園登場,今年第七屆主題推出「戶外閱讀」,現場設置帳篷與懶骨頭,準備卅個主題盲書袋,各放五本適合閤家閱讀書籍,讓民眾透過挑盲袋方式選書,鼓勵與親友一起來野
〔記者李容萍/桃園報導〕勞動部鼓勵中高齡退休族群重返職場,自今年2月實施「壯世代就業獎勵」,只要符合資格的退休族,重返職場滿一定時間,每人最高可領6萬元獎勵金,截至今年9月,成功協助10萬5561位中
「二○二四桃園仙草嘉年華」本月廿三日起至十二月一日在楊梅休閒農業區、楊梅警分局上湖派出所旁花田登場,現場約四公頃原本綠油油的仙草田,隨著濕冷天氣報到,紫色仙草已開花近三成,有「台版普羅旺斯」之稱。市府
〔記者楊雅民/台北報導〕2024世界棒球12強賽(2024 WBSC Premier 12)B組賽事,中華隊今天以2比1擊敗多明尼加,萊爾富即日起至11月15日23:59分推出Hi café 特大杯全
〔財經頻道/綜合報導〕許多求職者都想知道,在面試中要如何讓面試官留下深刻印象,影片分享網站Vimeo的財務長蒙森(Gillian Munson)指出了求職者的嚴重警訊,就是根本沒有認真聽問題,並做出了