iT邦幫忙

2026 iThome 鐵人賽

DAY 3
1

上一篇談到,我真正擔心的不是 AI 會不會寫錯程式,而是當 AI 寫錯的時候,我們還有沒有人看得出來。

寫完之後,我又回頭想了一下。這個「看得出來」的能力,到底是怎麼來的?

做軟體開發二十年,如果只看一路學過來的東西,好像就是不停地換技術。從最早的資料庫連線、SQL、Function、Class,到後來開始談 Coding Standard、共用元件、分層架構、Design Pattern,再到 Web、API、版本管理、自動化部署。每隔幾年,就會有新的 Framework、新的工具、新的開發方式。

以前會覺得這就是工程師的日常,不斷學新的東西,然後想辦法把它用在工作上。現在回頭看,我反而覺得,真正留下來的不是這些技術名稱,而是一路做下來之後,慢慢形成的一些習慣。

剛開始寫程式的時候,其實沒有想那麼多。畫面做出來、資料存得進去、功能可以正常執行,就已經很有成就感。那個年代很多事情都要自己處理,資料庫怎麼連、Connection 怎麼管理、Exception 怎麼處理、權限怎麼控制,遇到問題就自己查資料、找範例,再慢慢把它改到可以用。

開始多人一起開發之後,問題又不一樣了。

每個人都有自己的寫法,有人喜歡把所有東西寫在一起,有人會拆很多 Function;命名方式不同,錯誤處理方式也不同。程式小的時候其實沒什麼感覺,系統慢慢變大、維護的人變多,就會發現一套系統如果每個人都按照自己的習慣寫,最後真的很難維護。

那時候開始有 Coding Standard,也開始整理共用 Function、Class、Library。很多重複的 Code 不希望大家一直 Copy & Paste,就想辦法把它抽出來。系統再大一點,又開始做分層,把資料存取、商業邏輯跟畫面慢慢拆開。

現在看起來,這些好像都是很基本的 Software Engineering,但當時在做這些事情的時候,沒有覺得自己是在建立什麼很厲害的架構。很多時候只是因為真的碰到問題了,才開始想有沒有比較好的做法。

Design Pattern 也是一樣。

剛開始接觸的時候,會覺得這些 Pattern 很有意思,也會想研究什麼樣的情境適合什麼樣的 Pattern。有一段時間甚至會覺得,架構切得越漂亮、Pattern 用得越完整,好像代表這套系統設計得越好。

實際做過幾個專案之後,想法就會慢慢改變。有些很單純的需求,如果硬是多加好幾層 Interface、Class、Pattern,最後不一定比較好維護。慢慢才會知道,Pattern 本身不是答案,它只是多給了我們幾種解決問題的方法。真正要做的還是判斷現在的情境適合哪一種。

這些經驗很多也不是寫第一版程式的時候學到的,反而是在 Debug 的時候學得更多。

以前碰到問題,真的會花很多時間查。看 Log、查 SQL、追 Call Stack、檢查資料,有時候還要去看 Server、Network 或環境設定。程式在自己的電腦可以跑,換到另外一個環境不一定可以;測試的時候資料不多,正式使用一段時間之後資料量變大,原本沒有問題的 SQL 可能開始變慢;一個人操作都正常,同時很多人使用之後,又會跑出完全不同的問題。

這些事情碰久了,人會慢慢形成一些習慣。

看到一段 SQL,會多想一下資料量;看到一支 API,除了功能之外,也會注意 Timeout、Exception 和資料異常;看到一個權限判斷,會確認它是真的在後端控制,還是只是前端把按鈕藏起來。看到一個現在很方便的做法,也會開始想半年後、一年後系統變大的時候,會不會變得很難維護。

工作內容再往後走,看的東西也慢慢不只是一段 Code。

以前拿到需求,很自然就會開始想資料表怎麼設計、Function 怎麼寫。後來開始做比較完整的系統規劃,會先看資料從哪裡來、誰負責維護、不同功能之間怎麼交換資料、發生異常時要怎麼處理。

假設今天做的是飯店相關系統,訂房、會員、房務可能都有自己的資料。真的要把這些功能串起來,寫一支 API 通常不是最難的部分。比較麻煩的是會員資料應該由哪裡維護、訂房異動之後其他功能什麼時候要知道、同步失敗怎麼處理,兩邊資料不一致的時候又要以哪一份為準。

這些事情最後都會落到程式,但真正開始 Coding 之前,其實已經有很多事情要先想清楚。

現在回頭看這二十年,我覺得以前一直以為自己在學技術,其實也沒有錯,只是那不是全部。

技術一直在換,以前花很多時間研究的 Framework,有些現在已經很少使用;以前要背很多 Syntax,現在甚至不需要自己記,問 AI 很快就會有答案。但那些寫過、改過、Debug 過,甚至上線之後真的出過問題的經驗,最後留下來的東西反而沒有那麼容易被取代。

它會讓你看到一個 Solution 的時候,不會只看它能不能 Run,而是會習慣多看幾個地方。這個做法適不適合現在的情境,資料量變大會不會有問題,後面的人接手好不好維護,還有沒有其他做法可以選。

我想,這可能就是上一篇提到的「判斷力」其中一部分。

現在 AI 幫我們把很多事情做快了。以前一個問題可能查半天,現在幾分鐘就可以得到一個答案;以前要慢慢寫出來的 Function、Class,現在把需求講清楚,AI 很快就能產生第一版。

我自己也在使用這些工具,而且越用越多。我並不覺得我們需要為了證明自己會寫程式,刻意回到以前什麼都自己來的開發方式。

只是最近在整理這些年的軟體開發經驗時,我開始比較在意一件事情。以前很多能力,其實是在 Coding、Debug、查資料、寫錯再修改的過程裡慢慢累積出來的。現在這段過程被大幅縮短,新一代工程師一定會有跟我們完全不同的學習方式。

AI 幫我們把答案找得越來越快,這當然很好。

但從找到答案,到真的知道這個答案適不適合現在的問題,中間還是有一段距離。

現在回頭看,我覺得我們以前學的真的不只是寫程式。Coding 只是那個過程的一部分,真正留下來的,是做過很多選擇、碰過很多問題之後,慢慢知道什麼地方應該多看一眼,什麼事情不能只看現在能不能跑。

至於 AI 時代要怎麼把這些能力留下來,我自己也還在找答案。

這也是最近我開始重新整理這些經驗的原因。


上一篇
AI 最可怕的,不是寫錯程式,而是我們不知道它寫錯了
系列文
當 AI 寫完所有 Code:一個 20 年軟體工程師的 30 天重新思考3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言