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

如果具備上述能力,還需要擔心工作的問題嗎?如果業界有很多高生產力的人才,還需要這麼擔心競爭力的問題嗎?
評論
An illustration picture shows a projection of binary code around the shadow of a man holding a laptop computer in an office in Warsaw June 24, 2013. REUTERS/Kacper Pempel (POLAND - Tags: BUSINESS TELECOMS) - RTX10ZBN
評論

本文原刊登於台灣大學資工系副教授洪士灝的 Facebook。Inside 獲授權轉載。

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

一、不害怕探索陌生程式語言
二、精通 Debug
三、開發節省時間的工具
四、優化重複性工作的速度
五、發展系統性思考模式
(請自行閱讀該文)

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

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

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

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

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

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

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

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

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

容我再補充第六點:

六、化繁為簡、有條不紊與人溝通。很多工程師很難與人溝通,有些滿嘴都是一般人或老闆聽不懂的術語,有些則是會做不會講。各位到矽谷看,大部分的高級工程師都能言善道,能夠把艱澀難懂的技術,依據對方的程度,用對方能聽懂的語言表達。如果不能表達清楚的話,再怎麼厲害,作為工程師的成就也有限。
擁有高度生產力的工程師,是國家真正的技術力和國際的競爭力,這是瑞士、荷蘭、以色列、芬蘭這些國家走的路線,而不是靠低工資和加班工作。我發現台灣過去的薄利多銷的路線已經不單只是衍生出業界現在必須面對的問題,經濟壓力和普遍過勞的現象也造成不少社會文化的問題,影響健康、降低生活品質、讓文化層次停滯不前。

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

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

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

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


助攻金融科技!訊連科技推出 FaceMe® Fintech 解決遠距投保、視訊會議、人臉辨識三大難題

因應疫情時代的視訊投保需求,以及各種遠端金融服務場景,訊連科技推出 FaceMe® Fintech 一站式解決方案,解決遠距投保、視訊會議、人臉辨識三大難題。
評論
Photo Credit:訊連科技
評論

受疫情影響,金管會於今年 6 月宣佈視訊投保暫行方案,確保壽險業者各項服務及業務不因疫情影響中斷;截至7月底止,已有不少知名金融保險業者獲准試辦遠距投保業務項目。

目前小規模試辦的結果,卻因為市面上欠缺可整合視訊會議及 eKYC(Electronic Know Your Customer)的解決方案,業者大多得透過整合多套不同服務,例如:採用 Teams、Webex 或  LINE 等工具進行視訊會議,或保險簽單需事先提供予客戶列印、簽名,又或者是透過第三方的方式錄影(如透過手機或攝影機翻拍)等,導致使用者體驗不佳。此外,這樣的做法還是仰賴保險業務員以肉眼比對投保人及身分證,仍有冒用風險。

對於未來大幅度開放遠距投保,勢必需要更成熟、高度整合的解決方案。

訊連科技推出 FaceMe® Fintech 解決方案,解決遠距投保的身份認證難題

以保險、金融應用來說,目前主流的生物辨識 eKYC 技術主要包含:人臉辨識、指紋辨識、虹膜辨識等。其中,人臉辨識在過去數年來,因為深度學習技術導入,辨識度大幅提高,加上辨識速度快、無須專用硬體(可使用裝置上的相機)即可進行遠端辨識,大大降低接觸風險,因此也在這幾年成為生物辨識技術的主流。

只不過,目前全球的人臉辨識技術大多為中國廠商,在台灣要落地應用,恐怕會有資安疑慮,無法安心採用。

Photo Credit:訊連科技/訊連科技推出人臉辨識產品 FaceMe® 並可作為一系列金融科技解決方案。

值得注意的是,過去以威力導演、PowerDVD 等軟體知名的「訊連科技」,近年來也跨足 eKYC、AI 領域,擴充人臉辨識產品,推出「FaceMe® AI 人臉辨識引擎」,提供高達 99.7% 準確度的人臉辨識服務,並於全球知名的 NIST(美國國家標準暨技術研究院)之 FRVT 人臉辨識基準測試中,於 1:1(人證比對)及 1:N(身份認證)項目排行全球第六,除了是台灣排名最佳的廠商之外,也是該項測試排除中、俄廠商的全球第一。這樣的技術,也是訊連科技針對金融保險業者的 FaceMe® Fintech 解決方案中,重要的核心之一。

辨明真偽!FaceMe® Fintech 提供整合性的金融科技解決方案

談到金融科技,除了資安、金流系統之外,在講求無遠弗屆的遠端服務時,辨明真偽更是信任基礎的第一步。因此,訊連科技的 FaceMe® Fintech 以精準辨識的技術為核心,為金融、保險應用提供一系列解決方案,包含:

  1. eKYC SDK 提供人臉辨識、身分證真偽辨識、活體辨識、人證比對等功能。
  2. 視訊會議 SDK 提供金融保險業者於公有雲或私有雲架設視訊會議、進行錄音錄影、畫面分享,業務員能透過畫面分享進行保單說明。以公有雲來說,FaceMe® Fintech 的視訊會議採用位於台灣機房的 GCP (Google Cloud Platform),即可符合資料落地的需求。

其中,視訊會議 SDK 功能完整,有諸多優勢。除了可於視訊會議過程中進行錄音錄影(符合金管會要求)、業務員能透過畫面分享進行保單說明之外,還有許多身分驗證服務,可導入包含:

  1. 身分證真偽辨識:透過 AI 辨識身分證是否為真,避免業務員肉眼誤判。此外,若有二階段認證需求,也提供聲紋比對功能。
  2. 活體辨識:避免透過相片或影片假冒身分。FaceMe® 的活體辨識可提供透過一般行動裝置之 2D 鏡頭、或是透過 3D 鏡頭(如 iPad Pro、iPhone X 等)進行活體辨識。
  3. 人證比對及核身:透過人臉辨識,比對證件照及鏡頭前的投保人是否為同一人,減少業務員肉眼誤判。
  4. OCR 光學字元辨識: 身分確認後,將證件資訊帶入保單,如姓名、身分證號、換發日期等,省去打字麻煩,加快投保速度。
Photo Credit:訊連科技/FaceMe® 可跨平台建置於 Windows、Linux、Android 與 iOS 等作業系統,亦可提供 HTTP API ,進行網銀服務串接。開發者可在各種終端設備或雲端服務中快速導入人臉辨識功能,進行身份辨識、身分驗證等多種應用。

不限智慧金融!FaceMe® 的其他廣泛應用:智慧安控、智慧健康量測

於前一陣子 IEEE 舉辦的 ICCV 電腦視覺大會中,訊連 FaceMe® 活體辨識成績為全球第三,且是排除中、俄廠商的全球第一。 FaceMe® 除了核心的跨平台軟體開發套件外,也針對安控、金融保險等應用,提供垂直整合方案。

除了上述保險應用之外, FaceMe® 也可廣泛使用於遠距開戶、 ATM 無卡交易、行動網銀身分辨識、遠距客服等服務,或是於分行內建立迎賓系統、黑名單偵測、機房金庫的門禁管理等;在疫情時代下,也提供非接觸性的健康量測功能,例如偵測是否配戴口罩,或偵測訪客額溫等。如果終究都要推行遠端,何不現在就了解 FaceMe® 各種強大的應用之處?