這幾年AI的興起,改變了很多行業,幾乎所有行業都因為AI有了改變,有很多行業開始需要轉型,一些簡單的工作應該會漸漸被AI所取代。其中一個討論聲量很高的職業就是程式工程師。最近很多人開始倡導所謂的vibe coding,有人翻譯叫「氛圍程式設計」就是利用文字描述需求直接生成的程式碼,降低開發的門檻,逼著工程師走到了盡頭(在PTT還有相當長的討論串),身為一個在這個行業二十多年的老兵,總有種說不出來的衝突感,也許是因為在這行業這麼久了,被別人嚷嚷著即將成為消失的行業,自我感覺當然十分不良好,另一種更是這中間是不是有什麼誤會。
先從我在youtube上看到一個vibe coding的demo說起,主要是介紹gemini CLI,該講師在第一個demo就失敗了, AI改了不少程式,最後功能不work,可能因為改很多,他也不知道哪裡改錯了,反反覆覆重來了幾次還是失敗,我還記得他說了一句話,令我印象深刻,「我做了不少次,每次下的prompt都一樣,為什麼這次不行?」。對於這個現象我也很好奇,因為該講師是賣課的,通常都會確保自己demo沒有問題,所以我就問了ChatGPT這個問題。
Q:我看過一個youtube利用ai進行vibe coding的demo,但第一次demo就發生問題,產生的程式碼無法正常運作,他說他都用一樣的prompt,不知道為什麼這次不行,這有什麼原因在裏面?
A:即使是同樣的 prompt,每次生成的結果都可能略有不同。AI 模型並非完全 deterministic(確定性),除非你設定像 temperature=0 的生成條件(在某些 API 中可以控制),否則會有一定的隨機性。就算是「一樣的 prompt」,有時會太簡略或太模糊,使得模型「猜錯你的意圖」。即使先前成功過,但模型可能當時剛好「猜對了」
所以首先AI產生出來的東西是有一定模糊性的,可能是你提供的背景(context)不夠精準,又或者他本身就有一定的隨機性。但我們在開發過程中,工具對我們來說穩定並且可重覆性是一件蠻重要的事情,所以目前使用的最大情境還是透過AI產生程式碼讓工程師review,決定是否採納,有點像銀行在審核是不是要放貸給你,可能會透過AI對你進行信用評分,但其實AI給出報告主要是讓審核人員參考,提供更多的角度分析來進行全面評估,最後還是由人員決定是不是要讓你有錢花。
大多我在網路上看到的demo都是簡單的Hello app比如我看過貪食蛇遊戲的demo,流程大多包含下個簡單的口語化指令就能有一些結果的確很令人興奮,也的確是一個很大的進步。但容我囉嗦一下實際軟體開發專案的情境,首先最重要的會有來自客戶端使用者的需求,他們是整個系統功能的來源,客戶會跟系統分析師說明希望系統達到的功能,系統分析師會將這些需求寫成「需求文件」,接著系統設計師會根據「需求文件」去思考程式如何設計架構,如何應用design pattern,產生系統設計文件,最後進到開發階段。but 事情總是不完美,使用者會在整個開發流程中會不斷的修改他的需求,可能是提出新的功能需求,可能是之前在訊息傳遞過程中有了一些誤解必須修改,又可能是在進到真正測試時才發現之前的邏輯有問題,新的需求總是能找到他生存的理由。假設我們把使用者的需求當做是prompt餵給AI,當然不會是只有一份文件,我們講的可能是五六十份文件以上,因為我們不只是在做一個貪食蛇遊戲而已,你首先要確定使用者的需求有正確的被寫下來而且AI 能正確理解,再來再加入prompt 提示AI說要採用什麼樣的設計方式,希望之後的維護能有一定的規則,即便運氣不錯你產生了第一版本,運氣也好到能compile,上天突然降了一道光竟然能啟動,正當你高興之餘,使用者己經想好下一個想要改進的功能是什麼了,因為需求的改變對軟體業來說就像是甜密的負擔,一種無法被拒絕的生理需求。需求一旦改變,你接下來要送給AI的就不單單只是那50份文件,還包含了他上一次產生出來的所有程式碼,這需要多少的token,token is money,拿以之前開發過的一個中型專案的程式碼來說,我統計了一下大概有63,876,406字,簡單估算可以除上4.5取得大概的token數,約為14,194,756 token,利用openAI GPT-4o進行分析,簡化估算花費大概如下.

你只按了一下送出,就要花大概70~85美金,不小心prompt寫不夠清楚就再多按一下,這裏估算只有程式碼還不包含上述提到的文件,這筆錢花下去,也無法保證修改就一定沒問題,因為 AI 本身存在不確定性。對了我還沒提到,GPT-4o一次可以處理的token數是 128,000 tokens(12萬8千 tokens),也就是說,目前你根本無法一次完成這件事,不過我相信token數在時間上早晚會被突破。
貪食蛇遊戲可以很簡單而且有趣,但是真實世界的軟體開發流程卻是在需求與修改中匍匐前進,需要的token數也遠超過你的想像。AI到底對軟體業產生的影響,我認為主要是帶來以下二方面
縮短了學習所需的時間
軟體產業的技術每隔幾年就會有大幅的進展,比如前幾年開始流行的大數據分析跟機器學習,帶動了Python的興起,在各個不同的程式領域中,各種語言也不斷在自我進化,例如Java在這十年來,就從原本的Sping Hibernate,再度轉化成Spring boot,從原本的一站式服務轉向微服務 (microservices)。以前在學習這些新技術時,非常耗時,首先得大量google不說,再來得買對書,再進行大量的筆記整理,現在只要針對AI下好 prompt,你就可以很快的得到學習的方向,以我很喜歡用的一種學習方式,是Udemy買課程,再邊學邊問ChatGPT,可以很有效的短時間內學得你要的基礎知識。
開發速度有如神助
在IDE整合了AI後,簡直有如神助,例如最常聽到的組合如VS Code + Copilot / Cursor / Claude,或者Jetbrain IDEA開發工具也附帶了AI Assistant。AI在輔助程式開發時提供了很大的幫助,早期的IDE著重於程式碼的auto completion,現在則是能快速幫你完成一整個function or class 或者test case甚至參與自動化流程。這方面則帶來了不少影響,最簡單的是程式碼的產生速度變快了,品質平均來說會變好,這也導致了另一個現象,就是企業對新手工程師需求大減,主要是資深工程師利用AI後可以完成大量工作,以前這些簡單的作業例如CRUD(C: Create 新增,R:Read 查詢,U: Update 更新,D: Delete,刪除,簡稱新刪改查)大多交給新手工程師,現在只要下一個prompt就能產生。然而AI產生的程式碼需要有人驗証(或者可以說需要有人替AI擔保),沒經驗的工程師缺乏經驗的情況下無法做到這件事情,造成企業只想找有經驗工程師,寧願花錢投資AI工具而不想培養新手,反正新手流動率很高,現在公司倒的快,人也不講什麼忠誠度,各取所需。但這並不表示AI會取代工程師,這表示AI會取代學習能力不足的工程師,未來需要的是看懂AI建議的工程師,能利用AI的工程師。那新手工程師怎麼?不就沒有存活空間了嗎,其實不是的,上面一點己經提過AI也大幅縮短了學習的所需要的時間,從一個菜鳥工程師到資深工程師,以前可能需要二年到三年,現在時間大幅縮短,你的學習能力決定了你能壓縮的時間。
與其擔心軟體業要被AI給滅了,不如強化自身的「學習的能力」,擁有強大的學習能力是這輩子最值得投資的事,更不用說最強輔助你學習的工具在這世代已經降臨了。在AI的世代,工程師的素質只會越來越高,因為必須對AI產生出來的東西負責,工程師若無法判斷 AI 產出的結果是否正確,其本身就沒有實質價值,這並不像大學時期的小組報告,看起來有內容就能過關,企業是要生存的,你的工作不是「看起來」好像可以work,是要可以work,要能work你就要明明白白的知道AI產生了什麼給你。
相信一定會有些人會認為,現在也許還不行,但AI進步這麼快,幾年後搞不好就可以了,的確,我也無法預測這項技術未來會發展到哪裡,就像每年都有人說醫療有重大突破,癌症即將成為過去式,也像股市創新高,所有的分析師都跟跟你說後面還有高點,創新低時,分析師也同樣跟你說危機還沒過,2013年美國有4個州通過了自動駕駛汽車的法規,準備迎接自動駕駛的到來。但真實的情況是為了健康你得保持動態生活,要健身保持肌力,要運動訓練心肺,真實的情況是股市創高要警戒,創新低要評估是不是買點,因為財富分配的機會又再度來臨,自動駕駛到目前也還沒有到我們最初想像的那麼神奇。在這麼多變的世代,我們要問的不是未來會變成什麼樣,而是有什麼不會變。