直覺式開發(vide coding)時代來臨,軟體架構重要性與日俱增

直覺式開發(vide coding)時代來臨,軟體架構重要性與日俱增

最近兩個月,同溫層中興起一陣直覺式開發(vibe coding)的風潮,鼓勵大家用自然語言進行軟體開發。短時間內我就看到許多非技術背景的朋友們紛紛跳下來嘗試,也有些人真的做出一些有趣的東西。

我認為這種讓沒有技術基礎的人,也能開發軟體的概念,其實跟早些年 Windows 95 的圖形化介面,讓不懂得命令列(command line)的人也能使用電腦是相似的概念。

這是資訊科技進步的必然。再往下一階段,腦機介面的突破,還會進一步讓那些語言表達能力沒那麼好的人,也能透過腦袋中的想像來跟電腦互動,讓電腦幫忙完成程式開發。這很可能是下一波人機介面的革命。

但在這種革命發生的早期,許多的配套工具還未完善,但已經開始有大量的人投入使用。這些人寫出了一大堆無法維護,甚至無人能清楚解釋,但又運作正常的程式碼,這等同於創造了大量的技術債務。所以也有另一派人在討論,vibe coding 產出大量難以維護的程式碼,未來維護這套軟體的人將會身受其害。

從前寫程式的進入門檻較高,所以寫出來的程式再怎麼糟糕可能都還有人知道怎麼維護,所以 junior engineer 可能會寫出一些爛 code,但數量不多,且還能維護。

但現在進入門檻幾乎消失,重點是大家根本也不知道自己寫的 code 到底是怎麼運作的,更不用說要維護了。加上這些 code 其實也不大需要動腦筋,所以大家都放心的產生一大堆無法維護的程式碼。

人人都能輕易入門,這件事很棒,但輕易入門的代價則是大家會瘋狂寫出一大堆難以維護的程式碼。以前技術債的堆疊速度假設是 1,現在有可能變成 10,本來要花上 10 年才能堆出的技術債,現在可能只需要一年。

如果中間創造的價值也有 10 倍,那企業主也能心甘情願承受,可一般沒有那麼好的事情。

以砌牆為例,砌一面牆時,我們需要先明確幾件事:

  • 這面牆的目的是什麼?(防風、防盜、裝飾?)
  • 成品標準?(高度、寬度、承重力、外觀平整度)
  • 牆體結構要怎麼設計?(直線、弧形、厚度、留孔洞?)
  • 地基需不需要加強?(承載力?濕地 or 乾地?)

如果砌這面牆時,我們需要與他人協作,那我們還要進一步確認幾件事:

  • 砌磚的方式要統一(橫砌、交錯砌)
  • 磚與磚的間隙寬度、砂漿比例
  • 每一層磚的水平與垂直校正方式
  • 誰負責打地基?誰負責砌磚?誰負責監工?
  • 若有多人同時砌牆,接縫處誰負責對齊?
  • 每砌一段,要不要即時校正(level check)?

你可以想像一下,如果蓋一棟大樓時,沒有先畫好藍圖,也沒有先針對上述問題做好規劃,開工後每個人都按自己的方法去施工,最後會出什麼樣的結果?

  • 不同牆面的材質不同、承重能力不同
  • 不同牆面的高度不同、連結處不對齊也不平整

上述問題,如果是在施工過程發現,那就像 bug 在開發過程被抓出來一般,只是增加了重工的成本,不至於造成過大的風險。但如果是在蓋好後,因為地震或其他因素發現當初施工的問題,那很可能是以人命為代價。(參考:測試左移,我們該關注的是需求的 bug 數還是程式的 bug 數)

AI Coding 需要留意的事項

Cursor 的設計主管在 X 上分享過他認為使用 AI Coding 時需要注意的 12 件事

  1. 預先設置 5-10 個清晰的專案規則,以便 Cursor 瞭解您的結構和約束。簡單的說就是先設定好團隊在進行系統開發時的一些基本原則,例如 coding style。
  2. 提示要具體。像撰寫規格一樣闡明技術堆疊、行為和約束。
  3. by file 生成、測試和 review,關鍵是在「較小的範圍」內進行
  4. 首先編寫測試,鎖定測試,然後生成代碼,直到所有測試都通過。
  5. 檢查 AI 輸出並修復任何錯誤的內容,然後告訴 Cursor 原因,將這些錯誤修復作為與 Cursor 協作的範例
  6. 使用 @ file、@ folders、@ git 協助 Cursor 的注意力定位到 codebase 的正確部分
  7. 設計文件和清單保存在 .cursor/ 中,以便 AI 代理能在具有清楚脈絡的狀態下知道下一步該做什麼。
  8. 如果 Cursor 給出的代碼錯誤,就自己寫吧。Cursor 從編輯中學習的速度比從解釋中學習的速度要快
  9. 使用聊天記錄迭代舊提示,而無需重新開始。
  10. 有意識地選擇模型。要精確性用 Gemini,要廣度用 Claude。
  11. 在新的或不熟悉的堆疊中,將完整內容貼上。讓 Cursor 逐行解釋所有錯誤並修復。
  12. 讓大型專案在夜間編製索引,並限制上下文範圍以保持性能敏捷。

許多內容就是一語帶過,但我們可以推敲其背後的意涵。

規範化、明確而具體定義、小範圍、持續迭代、足夠資訊、測試先行,這些都算是軟體開發一直以來的管理重點,即便在 AI 時代,這些觀念也仍舊重要。

而這些其實都與軟體開發過程的軟體架構與開發規範有關。

在 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