iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0

下午五點,阿偉的手機震了一下。

小姜傳來訊息:「學長,下午說的那個API我寫好了,已經push上去了。麻煩你有空幫我review一下。」

阿偉看了一眼時間。從午飯後開完需求會議到現在,才過了三個小時。

三個小時?

他點開GitLab,commit記錄顯示小姜剛才push了一個完整的API實作,包含錯誤處理、資料驗證、還有單元測試。

阿偉快速掃過code,語法看起來沒什麼問題,邏輯也滿清楚的。甚至連註解都寫得很完整。

「不錯啊。」他回覆。

但放下手機後,阿偉突然感到一陣不對勁。

他想起以前自己還是菜鳥的時候。

那時他處理類似的整合功能時,光是研究第三方API的文件就花了大半天。更別說那些邊界條件的處理,還有測試案例的設計...他記得那次至少花了兩天。

小姜出社會到現在才快兩年,怎麼可能三小時就搞定?

他打開Slack,傳訊息給小姜:「你怎麼做這麼快?」

小姜很快回覆:「喔,我用Cursor輔助寫的。把需求跟API文件餵給它,它就幫我生成了大部分的code。我只是調整一下邏輯跟加上我們專案的error handling而已。」

「而且學長你之前建立的FAQ文件啊,裡面的範例超有用耶,我照著那個風格寫,AI生成的code品質就變得很穩定。」

阿偉盯著螢幕,突然覺得胃有點不舒服。

他花了七八年累積的經驗,現在被一個AI三小時就...超越了?


晚上,咖啡廳。

阿偉一坐下來就開始抱怨。

「我不知道我還能幹嘛。」他的聲音裡帶著一種挫敗,「你知道嗎,我以前引以為傲的那些經驗,現在好像都沒什麼用了。」

「怎麼說?」我問。

「就是小姜今天做的那個功能,」阿偉攪著咖啡,「我記得我以前要處理類似的整合,光是搞懂第三方API的那些眉眉角角就花了好幾個小時。什麼timeout要這樣設、什麼參數要那樣傳,都是我一個一個試錯出來的。」

他停頓了一下,「結果現在呢?小姜把文件丟給AI,三小時就全部搞定了。那我這麼多年到底在幹嘛?」

我看著他,「所以你覺得...AI讓你的經驗貶值了?」

「不是貶值,是直接歸零好嗎。」阿偉有點激動,「你知道那種感覺嗎?就像你辛辛苦苦熬了多年練就的武功,結果人家吃個仙丹就直接超越你了。」

「而且...」他的聲音變小了,「我開始懷疑,我當初跟老楊說好要保留的那些 codeing time,還有什麼意義?」

店裡的輕音樂換成了鋼琴獨奏,旋律有點憂傷。

「你還記得我們聊過冒牌者症候群嗎?」我問。

阿偉皺眉,「記得啊。你是說我現在又發作了?」

「有點類似,但這次不太一樣,」我說,「那時候你害怕的是你『配不上』,對吧。但現在你害怕的是什麼?」

阿偉想了想,「我害怕...我的技術價值被AI取代了。」

「對,」我點點頭,「所以我們現在要面對的問題核心是,你覺得自己的價值在哪裡?」

你看過《龍貓》嗎?

「我的價值...」阿偉停頓了一下,「應該是我寫code又快又好吧?還有我累積的那些經驗,知道什麼情況該用什麼技術。」

「那小姜今天的表現呢?」我問,「他寫得快嗎?」

「快啊,才三小時。」

「寫得好嗎?」

「呃...」阿偉遲疑了,「code看起來沒什麼大問題。邏輯滿清楚的,基本的測試也有寫。」

「所以,如果只看『執行效率』這個標準,」我說,「AI確實贏你了,而且贏得很徹底,對吧?」

阿偉沒說話,但臉色更難看了。

「可是,」我繼續說,「既然這樣,那為什麼公司還是需要你呢?如果只是要『寫code又快又好』,那直接請一堆會用AI的junior不就好了嗎?」

「這...」阿偉愣住了。

我在紙上寫了兩個詞:

執行效率 vs 判斷能力

「你一直在用『執行效率』來衡量自己的價值,」我說,「但你有沒有想過,也許這根本不是一個有豐富經驗的工程師該比的東西呢?」

「那我該比什麼?」阿偉有點困惑。

「判斷能力,」我說,「你知道宮崎駿嗎?」

「知道啊,《龍貓》那個。」阿偉不解,「這跟寫code有什麼關係?」

「很有關係,」我說,「宮崎駿在他的工作室裡,有一大群從美術專門學校畢業的動畫師,對吧?」

阿偉點點頭。

「這些後輩很多都比宮崎駿更年輕,體力充沛、手又穩、技巧又學得很好。他們之中,很多人的畫技很可能比宮崎駿本人還精湛,產出動畫的速度也更快。」

「這種時候,」我看著阿偉,「你覺得拿宮崎駿跟那些畫師比手速、比誰素描更精緻,有意義嗎?」

「呃…沒必要吧。」

「對吧?」我繼續說,「而且,如果沒有宮崎駿,光是把這些動畫師集合起來,也是完成不了《龍貓》的。你知道為什麼嗎?」

阿偉想了想,「因為... 只有宮崎駿才知道,這部動畫要怎麼呈現…嗎?」

「對!更精確地說,」我在紙上又寫下幾個字:

動畫師的價值:執行技巧 (畫得快、畫得好)
宮崎駿的價值:判斷與願景 (定義要畫什麼、為什麼要這樣畫、把關助手的產出要符合需求)

「你看,」我說,「AI 就像那些厲害的動畫師,它可以快速、高效率地執行指令,它甚至能為你做出各種專業的、頭頭是道的分析。但到頭來,它卻沒辦法替你決定,你最後該端出去的東西,應該是什麼。」

阿偉盯著紙上的字,眼神開始有了變化。

「所以你是說...」他慢慢地說,「我應該從『執行的人』變成『會判斷的人』嗎?」

「不光是判斷而已,」我說,「是定義方向的人。」

但AI會不會連判斷都學會?

阿偉沉默了一會,突然開口:「可是...AI不會也學會判斷嗎?它現在已經可以幫我寫code了,說不定哪天它也能學會做技術決策啊。」

「你說得對,」我點點頭,「AI確實在進步。但你想啊,為什麼小姜今天能用AI做得這麼快?」

「因為...AI很強?」

「不只是這樣,」我說,「是因為他用了你之前建立的說明文件當中的範例當作參考,而AI需要適當的prompts 以及 上下文(context) 才能產出好的結果。那請問,這個上下文是誰提供的?」

阿偉愣了一下,「是...我?」

「對。而且你想想看,小姜把AI生成的code push上來之後,誰要負責review?誰要判斷這個實作會不會跟現有系統衝突?誰要為最終的交付的成果負責?」

「是...我。」阿偉的聲音變小了。

「所以你看,」我說,「AI確實把效率提升了沒錯,但它依然無法取代你的主觀想法。即使哪天它進化到能夠做出100種分析、每一種都非常厲害,但說穿了它永遠只能是你的助手,最終還是得要依賴身為『導演』的你。」

阿偉攪著杯裡的冰塊,思考著。

「而且,」我看著阿偉,「現在vibe coding這麼流行,任何人出一張嘴都可以產生一支程式,甚至開始有人喊以後的社會可能『不需要工程師』了。你覺得,這可能嗎?」

「雖然聽起來很恐怖…不過我知道這不太可能。」阿偉搖搖頭。

他停了一下,接著說,「而且,如果有人不分青紅皂白的,用AI大量生產他自己也看不懂的code,那也很可能只是個華而不實的『大型垃圾』而已。」

「沒錯。」我點點頭,「那,你知道為什麼小姜這次,拿給你的是『還不錯』的code嗎?為什麼他今天沒有生出垃圾來?」

「為什麼?」

「因為這次,小姜除了有良好的材料能夠給AI參考之外,他也利用了自己的素養來判斷AI怎樣的輸出才是他要的,」我說,「他從AI生出的東西裡面,分辨出了哪些部分可以用,哪些不行、哪些地方要調整、哪些邏輯要加上專案的error handling。這個能力,是他從學校跟老師學的、這兩年靠著在公司裡摸索所學來的、從實際的專案經驗裡累積的。」

阿偉若有所思地點頭。

「AI 就像一個強大的槓桿,」我繼續說,「他會無條件放大你的能力,不管你手握的能力是好的還是爛的。如果你有好的能力、明確的方向,那AI能夠讓你做得更快更好。但如果你沒有,AI只會把你的認知缺陷給放大成災難。」

那我現在該做什麼?

咖啡廳裡的人潮散去了一些,阿偉看起來心情好了一點。

「好,我懂了,」他說,「所以我現在的價值除了『寫code』之外,還要學會『掌握方向』對吧。那具體來說,我現在該做什麼?」

「你記得你試著讓小林小姜做決定的時候,我們談過什麼嗎?」我問。

「記得啊,授權與當責,」阿偉點點頭,「我們都要為自己的決定負責。」

「對,」我說,「那我問你,假設你寫code時,是用AI工具輔助完成的,如果後來出bug了,是AI要負責、還是你要負責?」

「當然是我啊,因為是我放它過的,code也是我上的嘛。」

「那現在小林小姜用AI輔助開發,那誰應該為AI生成的code負責呢?」

阿偉愣了一下,「應該...也是他們自己吧?」

「沒錯。」我說,「我們要做的不是去當AI警察,而是教他們如何當責。」

我接著說,「還有要注意的是,雖然小姜今天做得還不錯,但那不見得就代表他真的懂得怎麼『正確』使用AI。他可能只是碰巧這次給對了context、碰巧問對了問題。下次呢?我們能保證每次都這麼順利嗎?」

「所以,」阿偉慢慢理解了,「你是說,我需要建立一個機制,讓他們學會把關AI生成的產物囉?」

阿偉拿出手機,開始做起筆記,「那我現在該怎麼做呢?」

「嗯… AI寫出來的code可不是能動就好,對吧?」我說,「我們需要建立一個AI輸出的審核機制。」

我拿過他的手機,開始打字:

AI輸出審核checklist:

1. 檢查產出物
- 你明白AI實作的內容的意義嗎?是否有超出自身認知範圍的部分?
- 實作的範圍正確嗎?是否有over design或是造成scope擴張的問題?
- 是否有與目標無關的功能添加/縮減/修改?
- 是否符合團隊的coding style?

2. 風險評估
- 有沒有考慮到現有系統的技術債?
- 這個改動會影響哪些其他模組?
- 效能上有沒有潛在問題?
- 資安層面是否有漏洞?
- 有沒有跟我們專案的特殊限制相牴觸?

3. 長期影響
- 這個實作是否符合系統的長期演進方向?
- 未來維護的成本如何?
- 是否會製造新的技術債?

「類似像這樣,我簡單地先把 checklist 給列出來。至於實際上要列哪些、要以什麼形式來管理,你可以跟小林和小姜他們好好討論。」

阿偉看著這份清單,仔細地閱讀著。

「然後,」我繼續說,「你可以跟小林和小姜約定,當他們大量使用AI輔助時,要在PR裡註明哪些部分是AI生成的,以及他們做了什麼調整。」

「這樣的話,」阿偉說,「我在review的時候就知道要特別注意哪些地方了。」

「對。而且這也是在培養他們的當責意識,」我說,「他們要為自己選擇相信AI的決定負責。」

阿偉點點頭,「還有呢?」

「可以定期跟他們討論,」我說,「為什麼某些AI的輸出你沒有通過、為什麼某些設計需要調整、不同AI模型之間的強弱項…等等。像這樣大家一起練習當AI教練,你跟你的組員都能把AI工具用得更好。」

咖啡廳準備打烊了,老闆開始收拾桌子。

阿偉收起手機,「你知道嗎,我突然想到我之前技術焦慮那次。」

「怎麼說?」

「那時候我焦慮的是『技術學不完』,」他說,「你跟我說要找到自己的錨點。現在我發現,我的錨點其實不是『會多少種技術』,而是找到與辨別方向的能力。」

「沒錯,」我笑了,「技術會一直變,AI也會一直進步。但你的判斷力、對事物的全局觀、對風險的敏感度,這些在時間和經驗的累積下,可是貨真價實的喔。」


我們走出咖啡廳,阿偉對著我說:「那麼我明天就跟小林小姜開個會,建立AI輸出的審核流程。」

「很好,」我說,「記得要強調,這不是要去限制他們使用AI喔。」

「我知道,是一起建立起安全護欄,對吧?」阿偉笑了。


上一篇
Day 26:我應該是來帶領大家的,不是來當保姆的吧?
下一篇
Day 28:專案要delay了,但我推不動別部門的人,怎麼辦?
系列文
《工程師的辦公室修行日誌》:寫給那個專注寫 Code、卻忘了寫人生的你28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言