當 vibe coding 已成必然,軟體開發會有什麼變化?

當 vibe coding 已成必然,軟體開發會有什麼變化?

當 Vibe coding 興起後,有愈來愈多的資深工程師的工作重點轉換到修復 AI 寫出的各種 bug。因這個現象,有些資深工程師們打趣地說,他們現在的任務像是專門處理這些 vibe coder 寫出來的爛 code。而這個職務稱為 Vibe Coding Cleanup Specialist。

我個人絕對支持 vibe coding,因為這是軟體開發的典範轉移,用得好的話可以大幅提升生產力,加上 AI 顛覆職場的趨勢幾乎不可逆。擁抱變化會比抗拒變化更明智。
這讓我回想起 2005 年剛出社會時,因為我起步的程式領域是 C#.net,使用的開發工具是 Visual Studio。C# 的好與壞我就不提了,但在當年,Visual Studio 這工具被稱為地表最強 IDE 應該是沒問題的。

它有多方便呢?所見即所得,元件直接拉到畫面上,出來的畫面就長那樣,用滑鼠點擊就能產生前後端對應事件,透過 datasource 設定就能連結資料庫,把 datagrid 元件綁定 datasource 資料表格就好了。當年還搞出了一個 updatepanel 這樣的鬼東西,讓 ajax 變得超級容易,你不用懂 XMLHTTP 一樣能做到局部刷新。

可這些容易背後,經常伴隨著很多技術債。

因為 junior engineer 沒有機會學習如何好好處理一些需求跟技術細節,例如 SQL injection 的處理、資料分頁、session、viewstate、memory leak。所以在小規模或短時間內的使用,功能通常很正常,但使用人數一多,或使用時間一長,系統就會出現不穩定、效能緩慢,甚至崩潰的問題。

當年,有意願去處理工具便利所帶來的問題的工程師們,往往成了大家眼中可靠的夥伴。而有興趣去了解技術細節的工程師們,則能在這種過程找到寫程式的真正樂趣。

當年我有很大比例的工作就在處理這些因便利而帶來的問題,包含我自己在懵懂未知時寫下來爛 code。

我並不覺得 Visual Studio 提供這樣的便利是種錯,畢竟它的官方文件中其實都有寫使用該元件的注意事項。有問題的是我們在使用時往往很懶得去閱讀這些文件,有時是因為我們沒碰過類似的狀況,所以輕忽了,也可能是認為自己的使用情境不會觸發類似的問題,因此選擇無視。

Visual Studio 的便利,讓沒經驗的工程師能在短短一個月的時間內寫出一些不完善,但可運作的程式。而當中可能僅有 10% 的程式重要到會請有經驗的資深工程師來處理善後。

回過頭來看這段歷程,其實跟 vibe coding 的興起很像。

他將讓數十億人開始動手寫程式,就像 30 年前大家開始用 excel 一樣,或像 20 年前大家使用 Visual Studio那樣,肯定會造成很多問題。但這跟促進數十億人提升生產力相比,這問題就顯得無足輕重了。

但最後我還是有一些良心建議。

  1. 核心元件,交給可靠的資深工程師來處理。當年這些工作是由我們團隊做封裝後才提供給 junior engineer 來使用,可以大幅降低崩潰性問題的發生。
  2. 資料存取,使用共用元件而非讓所有人自己撰寫 SQL。資料庫的安全對應用程式來說是關鍵中的關鍵,早期我們透過宣導使用參數形式處理 SQL,但總是會有工程師忽略。後來除了宣導外,乾脆直接讓那些不使用標準元件存取資料庫的程式碼,在執行時完全無法存取測試資料庫與正式資料庫。
  3. 元件引用,所有引入的外部元件都需要被檢驗。因為網路便利,會有許多工程師上網下載各種 3rd 元件,或者引用一些開放的 API。但這些元件與 API 的可靠性與安全性其實都是問題。資深工程師有完整的軟體工程觀念,對版控、安全性、可維護性、可遷移性等有完整認知,但 junior 們往往沒有。而這也會成為長期維護的隱憂,可能是後門,也可能是授權問題,甚至可能在對方關閉了 API 後導致整個系統掛了。
  4. 架構設計,不論是細節的系統設計,或者更廣泛的系統部署架構,要盡可能維持 SOLID principles。從一開始就假設會有上百位程式基礎不好的 vibe coder 會跟你一起開發系統,會大量調用系統的 API 或元件。
  5. 建立符合開發標準的 GPT 或設定檔。 ​你可以建立一個符合團隊開發標準的 GPT,讓所有團隊成員使用,而非大家都用開放內容的 GPT。或者清楚定義諸如 Cursor 的 md file,將一些 design principles、database schema 等做好宣告。讓使用 AI 工具開發的成員在共通的基準下進行開發。這可大幅避免許多問題。

在將近 20 年前,我負責設計軟體的底層架構,有段時間我也經常要收拾那些只懂得使用 Visual Studio 的工程師所留下的殘局。

我有時也會抱怨「寫這什麼鳥 code」、「沒有資安意識」、「這東西沒授權你也敢用」、「這種效能也敢提交」。

可我主管問我:「從商業推進的角度來看,這些人參與到開發工作中是必然的。但從軟體開發的角度,我們可以做些什麼來讓這些問題不發生呢?

這是個很好的提醒,接下來的軟體開發,當 vibe coding 已成必然。

我們的專業將會更高比例的放在「讓更多人加入提高生產力,同時還要確保不出差錯」。

如果你覺得我內容寫得還不錯,歡迎訂閱我的電子報,我每雙週會發送一封電子報到你的信箱。訂閱連結在這,過往的電子報也在這:Gipi電子報

也鼓勵你可以將我的電子報分享給你認為有需要的朋友們,也許你的舉手之勞,將會改變另一個人的思維與習慣。

Read more

加快了速度,少了回饋

加快了速度,少了回饋

2022 年時我曾推出了一堂課《打造高效軟體開發團隊》。 在這堂課程中我繪製了一張軟體開發過程管理的架構,這張圖我從公司策略->產品策略->需求管理,一路到開發過程管理、交付、市場回饋,最後再回到產品需求管理。 當年我曾說過,軟體開發最重要的其實不是程式開發本身,而是 align 公司策略與產品策略,同時兼顧好短期需求,將需求管理做好。 但我們也可以看到產品需求管理是上述架構中最主要的節點,上承策略,下接短期需求,右邊則是成為所以開發計畫的起頭,同時還要承接來自市場回饋,並能持續優化管理過程與技術債務管理。 簡單的說,決定做什麼,決定了產品定位,決定先做什麼,則決定了策略重心。但要做出決定,除了對目標有清晰的認知外,更重要的是「回饋」。包含市場回饋、使用者回饋、利害關係人回饋(研發/行銷/客服...)。 這陣子透入 AI 開發後我對這張架構圖有一些新的想法: 首先,是生產力過剩。 因為 AI 不用休息,生產力幾乎沒上限,

By gipi
AI 在商業決策層面給我帶來的三層改變

AI 在商業決策層面給我帶來的三層改變

從二月開始,台灣就陷入一陣 AI 瘋,一堆人都開始投入龍蝦、Claude Code、Codex 等超級生產力的任務中。不寫程式的人開始寫程式,包含老闆、設計師、行銷、創作者。而其中最瘋狂的,莫過於身邊的一堆老闆們。 有人批評說:「這些老闆們放錯重點,應該好好回到自己的位置上去做出好的決策,讓專業的人來處理專業的工作,不要瞎搞。」 關於這個批評我個人極端不認同。 我的看法是老闆不多花點時間深入理解 AI,他在未來就很難做出好決策。 今天看到 Coinbase 的 CEO 在 X 上發布了裁員的消息。 而我也在 FB 寫下了我對這件事情的想法。 今年不知道第幾家公司了,幾乎都不是因為經濟不景氣,而是各家公司都在為變化儲糧。很多軟體公司之所以裁員,都是為了有更多的資本支出可以投入在 AI 的團隊、產品或基礎建設上。 扁平化只是一種不再需要「管理代理人」的訊息。現代的管理概念還是很崇尚那個一人最多管七人的科層組織管理概念。 為了「有效管理」,一個人管七個人是個看似科學,

By gipi
2026 年第一次深度復盤

2026 年第一次深度復盤

今天提早結束今天的顧問行程,中午回到住宿的飯店泡了個熱水澡,想著到底要休息還是繼續工作。但想了想,或許可以針對最近的一些想法跟經歷做一些復盤與總結。這篇文章內容比較雜一些,但都是我近期比較重要的一些想法。 重新燃起的工作熱忱 我的工作狂性格其實已經沉潛了好多年,我一直以為我對工作已經不像年輕時那麼有熱忱。沒想到工作狂性格只是悄悄地躲了起來,等待有一天再遇到讓人熱血沸騰的時機。 燃起我工作熱情的事主要有兩件,一件是方圓國際的策略長工作,另一件則是與 AI 有關的「Growth OS」計畫。 方圓的工作有一定的機密性我就不多說了,往後能揭露的內容會陸續讓大家知道,但我可以說這應該是我接觸迄今合作上最深入的案子,我覺得很開心。至於「Growth OS」是什麼?我下面會有獨立的段落跟大家說明。 但我可以先跟大家分享為什麼這兩件事會重新燃起我的工作熱忱。 我個人的工作熱忱主要來自幾個地方: * 有挑戰,這件事難不難,能否燃起我的挑戰慾望與好奇心。 * 能自我實現,我總有一些放在內心很想做的事,但可能是時機不到,又或者沒有碰到合適的場合。 * 能按自己價值觀來行事,這件事在我

By gipi
近期 AI 寫 Code 的一些想法

近期 AI 寫 Code 的一些想法

之前用 AI 寫程式,比較 free style,簡單說,就是功能能運作就好,反正就解決單點問題,就算是個商業應用,也大多設計成可以離線使用,架構很簡單。 但最近為了要完成我 Growth OS 的野望,我又回到以前工程師年代,會很在意目錄架構、資料結構、資料流、權限控制,甚至也會思考更多關於擴展性、多租戶、系統邊界設計的問題。 也因為有較深入的思考,對於 AI 參與開發這件事,我有了多一點的體悟。 Rule-baesd 模式 從前的程式開發大多是建立在有明確規格之後,演算法就像數學公式一樣,輸入什麼樣的參數,往往就能得到一個可預期的結果。 簡單的說,就是「確定性」,所以以前的測試根據的是輸入 A/B,是否得到 C 結果。 直到現在,如果我們對一個程式的執行結果,最主要看的是「確定性」,也就是執行一百次都要得到可預期的結果。那最後或許還是只有清楚的

By gipi