[隨筆] AI 和軟體工程師
很常聽到身旁的人在談 AI 會取代軟體工程師這件事,到底 AI 是軟體工程師的 ”助手”,還是 “競爭者” / ”取代者” ,又或者是 “夥伴” ?AI 在軟體工程師的生活上到底扮演著什麼樣的角色,對於這樣的議題我有想表達的意見。
何謂軟體工程師?軟體工程師的價值?
在直接進入 AI 和軟體工程師的主題前,我覺得需要先討論 “什麼是軟體工程師?” 還有去思考 “軟體工程師的價值是什麼?” 如此一來在探討 AI 之於軟體工程師的關係會比較有概念和依據。
對於一般非軟體產業的人可能會覺得所謂的軟體工程師就是撰寫程式碼的人,但其實軟體工程師的核心能力不是編寫程序,而是理解需求並能將需求拆分成可運行的邏輯與資料流程,也就是說軟體工程師是一種把「抽象想法」轉變成「可以可靠運作系統」的人。軟體工程師將抽象想法理出秩序這點類似於 SDD (Specification-Driven Development) 中的 “specification”,將需求理成清楚的規格。
在現實情況中,軟體工程師最常遇到的情況是模糊不明確的需求,以及需求與業務邏輯不一致的情況,因此軟體工程師的價值也在於把需求與現實之間的空隙補起來,從一堆不完整的資訊中推導出可實作、可用、可維護的解法,也就是說用軟體解決現實世界的問題。
有人說軟體工程師的價值不是寫 code,而是幫助產品成功; 也有人說軟體工程師的價值是帶來可持續性的事物例如創造一個不容易壞、容易成長的系統,使產品與團隊能走得遠; 還有人說最潛在但最關鍵的價值其實是在降低未來風險。
寫出一個能運作的程式或軟體其實很簡單,然而寫出能運作至少三年、讓後人不罵你的軟體其實非常不容易,而這也正是軟體工程師的價值。AI 也能撰寫程式碼但是能否能寫出不發散、有一致性、好維護、可擴展的好品質軟體呢?
** 值得軟體工程師問自己的事: 就算 AI 或是自己本身寫出來的軟體品質很好也很好維護但是有真的解決問題嗎
** 從軟體工程師存在的意義和價值不難反推出軟體工程師所具備的特質: 獨立思考的能力、找出問題背後原因的好奇心、解決問題的熱情等。
AI 與軟體工程師
對於 Junior 工程師
現在 “基本” 的程式碼撰寫可以請 AI 來生成,所以原本由 junior (初階) 軟體工程師負責最基本的編程工作就能被 AI 接手。在這樣的情況下,雇主想找的 senior (資深) 軟體工程師是能評估需求和軟體架構、也能給 AI 下達準確指令和能修改、 校正 AI 所撰寫程式碼的人。因此,公司與企業都減少了初階軟體工程師的職缺,這也逐漸造成人才斷層的情況。畢竟每一位資深工程師都是從 junior 階段經過學習、訓練、失敗並從經驗中成長上來,所以當雇主們只想找到即刻能輸出的人才卻不願意培育新人,junior 與 senior 的斷層會持續擴大, 到了最後這批 senior 工程師要退休了,但也找不到能頂替他們位置的人才了。
對於 Mid-level 工程師
身處於 mid-level (中階) 的軟體工程師,在 AI 出現的初期如果知道如何透過 AI 來學習,並掌握適合的學習方式以及學習方向,會進步神速; 但是若安於現狀或是不改變原本的學習、工作方式,那在不久的將來可能也會面對到淘汰的危機。在這個階段的軟體工程師建議往縱向鑽而非橫向,加強深度非廣度,深入核心概念底層。
對於 Senior 工程師
對於資深的軟體工程師來說,在 AI 的時代下,與其在公司替雇主工作,還不如出來做自己想做的事情,有這樣想法的人逐漸增多,並且在 AI 的助力下,資深軟體工程師能快速將想法化為現實產品,並且迅速迭代和測試市場。其實在 AI 出現前就有一些資深工程師這麼做,只是當時開發、測試的速度並沒有這麼快,然而現在有 AI 助手再加上很有經驗的軟體工程師,工作效率一定快很多倍。
對於我而言
AI 對我來說,亦師亦友,有能學習的地方,也有能討論想法的地方,可以和他討論問題、尋找問題原因,也能討論學習內容、詢問他的看法或是探討對方的程式設計方式,AI 也會出錯,所以針對錯誤的地方你也能提出反饋和改善建議,這對於 AI 來說也是一種學習,兩者彼此互相學習。如果有人問 AI 對於我來說是什麼,與其說是工具或是助手,我覺得更像是夥伴 (於我而言,AI 可以是智友、學伴和夥伴)。
小結
AI 和軟體工程師的關係取決於工程師對 AI 的了解和使用方式,對於 AI 會取代軟體工程師的說法並不全然正確,有一部分的軟體工程師的確已經被取代或裁員,單純撰寫程式碼的工程師職缺逐漸在消失,而所謂的 AI 工程師職缺則是逐漸出現,軟體產業的人才需求並非完全減少,而是人才需求類型轉變,像是需要能訓練 AI 模型、校正 AI 所撰寫程式碼、能夠維護 AI 系統的軟體工程師等。AI 的確可以寫出能運作的軟體,但是這個軟體是否能長期運行,又或者容易維護,或是能否再擴展延伸這就不一定了。
那你們認為 AI 對於自己又是什麼樣的存在或是扮演什麼樣的角色呢?也歡迎留言一起表達你的看法。
[隨筆] AI 和軟體工程師