軟體開發生命週期(SDLC)包含以下主要階段:需求分析、系統設計、程式開發、系統測試、部署上線與後續維護。從需求分析直到系統部署上線,大約需要幾個月、半年、甚至一年。系統後續維護可能長達10 年、20 年 甚至 30 年。最近單位元老要退休,IT 媽媽接到一套系統,其年齡比我還年長。
資訊系統在維護階段,除了使用者需求額外新增功能,工程師還要修復錯誤 ( BUG ) 、解決使用者問題,導正錯誤資料、調整資料庫校能、並管理軟體變更。此外,早期系統開發未考慮到使用者體驗程面,後續維護持續改善附合新作業環境,以確保資料安全。今天要閒聊內容是:系統越老,工程式越痛。
1)組織缺乏知識管理
這裡可以用一個比喻,回想30年以前的你接到一個任務,單獨到一個陌生地方旅遊。你要去不同的地方打卡拍照,但是你出發前,發現網路上找不到這個地方的任何資訊。你沒有地圖,也沒有導遊帶你走。你不確定哪條路是順暢,哪條路最多路坑。花了漫長的時間,最後還得回到起跑點。有感覺了嗎? CODING 最怕就是接到一套老舊系統需要維護,然而:
- 系統規格書早已過時或是未經整理,甚至遺失 ⇒ 接手工程師不知從何處理。
- 系統未加入版控:20 - 30 年前的開發環境並未將系統加入版控,大家也習慣不寫技術說明,依據哪些需求,改了哪些功能 ⇒ 一無所知。
- 權責不清:系統出狀況,要去問誰、從哪個方向找出解決方法。
2) 除了CODING 還有非CODING要處理
別以為每個工程師都可以一整天閉關寫CODE 。CODING 最怕就是三不五時電話響干擾思維。使用者來電告知哪個功能壞掉,怎樣操作導致資料被誤刪,需要協助導正資料等。此外,當初開發的時候並未考慮使用者意外操作而加入防呆機制,因此常發生資料錯誤需要導正。
非每個工程師只負責一套系統。手上如果有好幾套系統需要維護,而每套系統的架構、開發工具,技術新舊不一樣。您當初學的是新技術,CODE 的新寫法,然而老舊的專案,不能使用新CODE 的寫法插入。老舊的資料庫,要注意SQL 版本等。
早期開發部署上線,資料量不多,校能可接受。經過漫長的歲月,資料量逐漸成長,給系統帶來的壓力也逐增。原本的設計邏輯導致系統校能太差,工程師就要琢磨哪段CODE沒寫好,哪段功能已過時。
3) 高層的美夢是工程師的噩夢
系統維護,有很多功能不易調整,彈性有限。雖然現在有新的技術,新的資源,但是並非可以完全套用在舊系統。 例如:系統本身以中文語系開發,設計邏輯並未納入多國語系。然而,某個晴天,領導告知要走國際化,要加入多國語系還要加入時差。歐~~晴天霹靂。沒有最可怕,只有更可怕。 原本系統是走WEB 端或是走 Window Form 的前端設計,突然被要求改成行動版加入 RWD ~~~
當高層或PM不太理解工程師每天真正遇到的困境。最後出來的成果,恐怕只剩前端鮮亮的外表,卻犧牲了後端技術和資料庫校能。
盲目的追求現代化,系統最後只剩下法拉利的外表,代步中古車的引擎。
4) 資訊系統代溝,AI 並非萬能
2022年以前,AI 只是學術研究領域的專有名詞。現在呢? 看到了嗎?資訊飛快的迅速發展,但身邊還是有很多老舊的系統出生在80 - 90年代。 在受到AI與軟體工程師:協作而非取代文章中曾提過目前AI缺乏系統性思維,容易累積技術債。AI 的確改變了軟體產業開發模式,但背後也存有隱憂,仍須工程師監督。在2025/09 ,臺灣多家銀行進行打詐措施,開始導入 AI 偵測疑常帳戶。然而,AI 打詐系統的精準度似乎未能達到預期,導致眾多民眾帳戶被鎖。針對老舊系統,如果過度依賴AI最後導致舊BUG 未解,新BUG堆疊。 AI 是我們的副駕駛,只扮演協助,系統的架構還是要自己來。
✅ 小結
你可能以為會 CODING 就可以天下無敵,但是進入職場之後,才發現CODING只是幫你打開軟體世界的門,但踏進去確發現吋步難行。
系統維護中最大的效率殺手,不是難懂的演算法或是架構,而是在最快的時間內找到正確的資訊,修補系統的BUG ,確保資料安全與正確。
今天就聊到這邊,下一篇文章,再分享軟體工程師在面對老舊系統如何領悟生存法則。















