當 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

主動改變或被動被改變

主動改變或被動被改變

「像恆溫器(thermostat)一樣改變環境,而不是像溫度計(thermometer)一樣被動測量環境」 如果環境不好,但你又想繼續待在這個環境,那你能做些什麼? 分享兩個以前團隊中年輕夥伴的故事,一個剛畢業,另一個則只有兩年工作經驗。 第一位是當時公司招募的儲備幹部,剛進公司月薪就有兩萬人民幣,這薪資高過公司內最少 80% 以上的員工。公司對這些人有著高期待,也為他們安排了一系列入職培訓,希望將他們培養成公司未來的骨幹。 而在計畫開始時我也擔任了面試官的角色,在面試過程我聊到一位很適合做產品的年輕夥伴,他在幾家網路公司都有實習經驗,而且能清楚的說明他負責的工作項目,針對我的提問「如何優化數字」、「如何做計畫」、「如何修正錯誤」等問題都能回答得很好。 面試後我跟 HR 說,我想跟這位談談能否放棄儲備幹部計畫直接到我們部門任職。HR 說只要對方同意就沒問題。 我找這位年輕夥伴聊,清楚地跟他說我為什麼希望他能加入我們團隊,可同時也跟他說我們給的薪資肯定不如儲備幹部,而少了這個光環,他要被看見就得靠自己的表現了。但我能跟他保證的是我們部門這個職務能讓他成長得更快。 他跟我說:「

By gipi
大語言模型對軟體開發的影響

大語言模型對軟體開發的影響

近期閱讀了一份文件,內容是關於大語言模型對軟體開發工作的影響,文件的連結在這:Assessing and Advancing Benchmarks for Evaluating Large Language Models in Software Engineering Tasks 這份文件聚焦於大型語言模型(LLMs)應用於軟體工程(SE)領域的效能評估。這是個有趣的題目,所謂的效能,簡單的說就是能直接在該工作任務中大幅增進效能的比例。 大家都知道現在的 AI 寫 code 已經不是什麼大不了的事,但透過 vibe coding 寫出來的 code 真的可以用嗎?符合需求嗎?品質可以嗎?能被維護嗎? 關於這些問題,我們要如何衡量 AI 的有效性呢?目前的答案是透過 Benchmark(基準)。 舉例來說,之前有的 benchmark 叫 SWE-bench,

By gipi
溝通,不是把能說服自己的話拿來說服他人

溝通,不是把能說服自己的話拿來說服他人

還記得幾年前有個朋友私訊給我說了一段趣事。 他說公司有個同事援引了我在演講中提到的一句話:「敏捷走不出研發,就不能真正敏捷。」 他試圖用這句話來告訴業務團隊們「業務必須要參與到敏捷中,開發團隊必須要更了解業務狀態,我們才能真正發揮敏捷的效益。」 我那句話的本質跟他說出來的話,在意義上其實毫無分歧。 但他獲得的結果卻是被業務部門修理了一頓。業務部門告訴他:「這不是你該管的範圍,你應該專注把你的任務搞定。」 這邊姑且不論誰的想法才是對的,但我想跟大家分享一個我在溝通過程很重要的體悟。 「所謂的溝通,不是把能說服自己的話拿來說服他人。」 「所謂的溝通,不是把能說服自己的話拿來說服他人。」 「所謂的溝通,不是把能說服自己的話拿來說服他人。」 很重要,所以得說三遍。 我們讀書總會讀到很多很有道理的話,並且被這句話說服了。但千萬要記得,這句話能說服自己,不意味著能說服他人。因為我們的立場不同,遭遇的挑戰不同,先備知識也不同。所以一段自己覺得非常有道理的話,我們必須加以轉換後,才有可能說服他人。 舉個例子來說,做研發的會希望根本的理解一個需求背後的商務價值,因為這

By gipi
Meta 高薪挖來的 AI 人才,一個月後紛紛離職 - 論薪資公平性

Meta 高薪挖來的 AI 人才,一個月後紛紛離職 - 論薪資公平性

最近兩天看到好幾個談論 Meta 人才跳槽的消息,甚至連七月份從 OpenAI 高薪挖角的高手,也在入職一個月後決定離開 Meta 重回 OpenAI。當時的高薪挖角引起了眾多同業 CEO 的抨擊,覺得這種以錢為誘因的做法對 AI 的推進沒有幫助,終將會失敗。 Sam Altman:「用金錢驅動招聘,這會破壞以使命為中心的工作文化,真正的長期回報在於共同願景而非一次性高額薪資。」Dario Amodei:「極高的薪資策略可能破壞組織文化,雖然能吸引人才,但未必能吸引與其價值觀一致、長期投入願景工作的員工。」我相 信願景真的很重要,那是凝聚一群優秀人才的關鍵因素之一。但高額薪資背後的問題是什麼? 除了 Dario Amodei 提到的,會破壞組織文化外,我覺得 Michael Dell 的詮釋更直接。 Michael Dell:「這種高額薪資極有可能引發內部員工的不滿與文化上的緊張感。」 一樣從事 AI 研發工作,我在公司內已經是頂天的存在,但我的年薪不過就 1,

By gipi