當 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

年度策略會議的幾點提醒

年度策略會議的幾點提醒

最近幾次的會議,因為大家都在談年度策略、OKR 跟關鍵任務,以下是一些我會特別提醒的地方,也供大家做參考。 如果只有一個目標要追求,那是什麼? 很多時候我們會想著要同時提高營收,提高利潤,有時兩者不容易兼顧,如果非得做個選擇,那你會選哪一個?同樣的選擇也會發生在要流量還是要轉化,要品質還是要速度。多數時候我們都會得到一個兩者都重要的結論,但兼顧,往往就等於要同時完成兩件事。策略的重點之一就是要做出選擇,不願意選擇,不願意捨棄,不願意定義優先順序,那策略其實也等於白做了。 目標必須被進一步釐清,所謂的清晰往往與數字的組成有關 當我們說目標是兩億台幣的營收,可當我細部問:「有沒有限定產品別?」、「有沒有限定銷售區域?」、「除了 B2C,能做 B2B 嗎?」這時往往會聽到許多的回應,包含 「新產品要一定占比」,我會問「占比多少?」 「希望能擴展到海外去」,我會問「哪個區域或國別?」、「占比多少?」 「那好像不是我們過去的商模」,我會問「那可以還不行?」 當這些問題被逐一回答後,所謂的「營收兩億」的定義才算被釐清了。

By gipi
我讀麥肯錫的《注意力方程式》報告

我讀麥肯錫的《注意力方程式》報告

近期花了點時間閱讀麥肯錫的《注意力方程式》(The Attention Equation)報告,從中獲得了一些不錯的啟發,也跟大家分享這篇報告所提到的內容,以及我獲得的收穫。 報告背景 報告的內容大約是 20 多頁的原文,核心放在談論注意力方程式(Attention Equation)這個概念,那什麼是注意力方程式,為什麼麥肯錫要特別談論這個概念呢?首先我們得回到近幾年大家經常在談論的幾個概念: 1. 流量愈來愈貴,數位廣告的 ROI 持續下探。 2. 演算法愈來愈迷,多數的數位廣告媒介都被演算法給操控,不容易破解之虞,還經常更動。 3. 傳統的文字內容不再受到流量青睞,長影音也愈來愈沒人想看,反而短影音似乎成為新的流量王者。 過往我們在看待廣告或其他行銷媒介,或者進一步探討企業獲客(Customer Acquisition)的方式時,我們大多會談論自有媒體(Owned media)、付費媒體(Paid media)與贏來的媒體(Earned media)三者的比例,以及企業應該強化的重點。

By gipi
普通人悖論

普通人悖論

今天跑步時聽了一本書,書中提到一個「普通人悖論」。聽著有趣,因為似乎解答了我這幾年的一些自我認知的疑問。 「我們一般人....」 「對普通家庭來說....」 我們總看著成功人士的故事,閱讀那些不平凡的案例,可到最後,我們還是會回過頭來告訴自己「我們就是個普通人」。 我們渴望不凡,渴望能活出屬於自我的人生,但我們卻又認為自己無法脫離普通人的路徑。20 多歲出社會,謀得一份工作,接著兢兢業業數十年,從基層爬到高層,一輩子在職場上與人競爭。當我們看到那些跳脫這種路徑的人時,我們又說服自己「那是別人」、「那是獨特個案」。 我們心理渴望自己也能是獨特個案,但又不斷說服自己「我只是個普通人」。 這種心境,讓我們沒有勇氣去追求屬於自己的人生。 在聆聽這段時,為什麼我會特別有感觸呢? 在我今年撰寫的新書《用商業思維優化你的人生選擇》中我提到,每個人的人生都是獨一無二的。你不見得要像他人一樣功成名就才算非凡,你能做自己喜歡的是,成為自己想要成為的樣子,活出自己的人生,那你就是個非凡的人。 因為其他人很難活得像你這樣。 我內心是堅定相信這件事的。但我卻又經常在一些時刻,會將「我們一般人」

By gipi
如何快速熟悉一個產業?

如何快速熟悉一個產業?

什麼是產業,什麼又是行業? 有人會說電子業、食品業,也有人會說製造業、零售業、服務業,這兩者指的是相同的概念嗎?其實這邊隱含了兩個概念,也就是業種跟業態。 業種,是行業種類,以販售的「商品種類」區分所屬行業。例如賣建材的建材行、賣文具的文具店、賣水果的水果店或賣米的米店等。這些業種店看招牌名稱就可得知該商店販賣哪種商品。 業態,是行業型態,則是以該店家的「經營型態」區分所屬行業。例如提供即時、方便服務的便利商店;提供專櫃及流行品的百貨公司;提供量大、低價的開架式民生消費品的量販店等。這類商店,無法從其名稱辨別產品。通常是提供「一站式購買服務」為訴求,並提供其他相關的附加服務。 典型的業態,其實分兩大類,製造與流通。製造商負責製造產品,流通商負責將貨物流通到消費者手上,並因應消費者的需求,擴大產品品項,增加服務,而大家常講的零售與批發,其實也歸屬於流通範疇中。 舉例來說,生鮮食品經生鮮處理中心,將生鮮品分類分裝,這是製造的範疇,大盤商集中所有產品,

By gipi