Editorial 社論

軟體教育的未來

十月 1 , 2024  

  Google前執行長艾瑞克.施密特 (Eric Schmidt) 8月中旬受邀在史丹佛大學演講,發表其對遠距工作、人工智慧 (AI)、各國競爭力等議題的看法。 在演講中,施密特也評論了台灣的軟體實力。 他說「台灣是個令人驚豔的國家,但是他們的軟體能力都令人搖頭」 (Taiwan is a fantastic country whose software is terrible)。 一流的製造業硬體大國,卻只有三流的軟體實力。 

 

  施密特對我們的批評無疑是一針見血,凸顯了一個長期的問題:就是台灣在硬體製造的先進 (如台積電等) 和軟體開發間的落差。 

 

  這個中存在許多原因,但最主要的還是源自:長期以來台灣的教育和工業都聚焦於製造業和硬體的創新 — 這對經濟的發展自有其時代意義和需要。 但軟體的開發需要的是不同的技術,要的是創造、整合和大規模系統管理 (如Line的APP) 能力。 這些在台灣的產業政策裡一向不受重視。 以代工為主的台灣產業一向依賴國外的軟體產品和生態系統,這也是使得自身軟體能力成長受限,這種十分依賴外國技術的情境被稱為軟體殖民地 (Software colony)。 重視這個落差,想辦法改進,事實上是會幫我們開啟一個追趕上全球技術產業水平的好機會。 

 

  要提升軟體能力,台灣可以聚焦下述幾項策略~ 

 

  1. 教育改革 — 重視軟體:

 

從基層教育就導入電腦教學,鼓勵程式編寫,問題解鎖和數位創新 (詳見本文後半)。 

 

  1. 鼓勵一個軟體新創生態:

 

將傳統以硬體為主的新創文化改成軟體為重; 政府的支持至關緊要,如在AI、金融科技或移動物聯網方面引領發展,可以幫助許多年輕的新創軟體公司 (Software startups) 立足。 

 

  1. 吸引世界人才及合作:

 

政府可以在政策上提供誘因 (如VISA,居住環境) 以吸引國際人才來台工作或鼓勵本地企業和矽谷軟體公司合作使台灣成為軟體工程的國際合作中心之一。 

 

  1. 軟硬結合:

 

利用強大的硬體實力,台灣可以將軟體整合其內,以發展如IOT (物聯網) 或edge computing (邊緣計算) 等需要兩種能力的新技術或產業。

 

  1. 政府政策支持:

 

台灣的數位發展部可以主導以本土為主的軟體項目開發; 政府公共投資建設項目 (contracts) 的投放 (給本地公司) 也是發展本土軟體自主的絕佳機會。 

 

  基於教育是上述重中之重,我特別請教ChatGPT如何加強台灣 (乃全世界) 的軟體工程教育,以下是它的回覆:

 

 

  1. 通過專案式學習加強實踐技能

 

   – 行業相關項目:高校應將現實世界的軟體工程項目納入課程體系,與本地公司合作提供實習或行業贊助的畢業項目,使學生獲得實際操作經驗並瞭解現代軟體發展實踐。

 

   – 開源貢獻:鼓勵學生為開源項目做貢獻,不僅能提高技術能力,還可以説明他們建立職業網路和作品集。

 

  1. 更新課程以符合行業需求

 

   – 聚焦新興技術:課程應定期更新,涵蓋如人工智慧(AI)、機器學習(ML)、雲計算和網路安全等前沿領域。大學應與科技公司密切合作,確保畢業生具備行業所需的技能和最新的技術知識

 

   – DevOps註一 和敏捷方法論:教授敏捷開發、DevOps以及持續集成/持續交付(CI/CD)註二 流程,説明學生適應現代軟體發展環境,特別是反覆運算開發的模式。

 

  1. 增強合作和軟技能

 

   – 協作程式設計:通過雙人程式設計、小組專案和駭客馬拉松,培養團隊合作和協作解決問題的能力,這對軟體工程團隊非常重要。

 

   – 軟技能培訓:溝通、批判性思維和專案管理在跨職能團隊中尤為重要。可以通過領導力、演講技巧和技術寫作等課程融入軟技能的培養。

 

  1. 重視軟體設計和架構

 

   – 系統架構:課程應涵蓋軟體架構的基本原理,如微服務、無伺服器計算和模組化設計。理解如何設計可擴展且易於維護的系統對長期專案的成功至關重要。

 

   – 安全設計:網路安全應該貫穿軟體發展的各個階段,確保學生理解如何從一開始就構建安全的系統。

 

  1. 鼓勵跨學科知識

 

   – 資料科學 (Data Science) 和AI整合:隨著AI和資料驅動軟體的普及,課程中應加入資料科學、機器學習和自然語言處理等領域的內容,説明軟體工程師提升多樣化的能力。

 

   – 商業與軟體融合:提供跨越商業需求與軟體工程的課程(如技術創業或產品管理),説明工程師更好地理解用戶和市場需求。

 

  1. 提供國際交流與合作機會

 

   – 留學專案:鼓勵學生到像矽谷、歐洲或中國等全球領先的科技中心學習或實習,學習全球最佳實踐。

 

   – 國際比賽:參加國際程式設計比賽,如ACM ICPC註三,激勵學生在競爭和創新的環境中磨練技能。

 

 

  通過這些改進,學院可以更好地為學生應對迅速發展的軟體行業需求做好準備,確保他們成為領域的領導者。

 

  看了以上,不禁要問東海有一套發展軟體教育的完整策略嗎? 學校有沒有意識到軟體是我們彎道超車的另一個契機?

 

 

註一:ACM是計算機協會(Association for Computing Machinery),計算機領域的一個國際科研組織。 ICPC是國際大學生程序設計競賽,計算機協會舉辦的大學生編程比賽。 

 

註二:CI/CD 是持續集成和持續交付/部署的縮寫,旨在簡化並加快軟體發展生命週期。 持續集成(CI)是指自動且頻繁地將代碼更改集成到共用原始程式碼存儲庫中的做法。 持續交付和/或持續部署(CD)是一個由兩部分組成的過程,涉及代碼更改的集成、測試和交付。 持續交付不會自動部署到生產環境,持續部署則會自動將更新發佈到生產環境。

In software engineering, CI/CD or CICD is the combined practices of continuous integration (CI) and continuous delivery (CD) or, less often, continuous deployment.[1] They are sometimes referred to collectively as continuous development or continuous software development.

 

註三:DevOps(Development和Operations的混成詞)是一種重視「軟體開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合作的文化、運動或慣例。通過自動化「軟體交付」和「架構變更」的流程,來使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。

 

可以把DevOps看作開發(軟體工程)、技術運營和品質保障(QA)三者的交集。

 

 

 

 

 

 


 

Editor’s Note 編者小語

 

  1.  「國科會拆解學門的省思」,東海「永續發展」的下一步?

 

  1.  「未來事務所擴大陣容」,強化實力與影響力。  

 

  1.  與生俱來的命運可以改變嗎? 佛說的因果又是怎麼回事? 兩者有任何關聯? 請看本期的「了凡與稻盛」!

 

  1.  市場的波動影響投資人甚鉅,但投資人有可能理性面對? 如何控制自己的情緒? Charles告訴你!