AI輔助開發

Vibe Coding 是新人幫手還是殺手?談開發時的AI工具應用

隨著Gemini 3 Pro及相關應用工具Google AI Studio和Antigravity發表,vibe coding似乎又突然火熱起來。強大的功能導致「工程師是否會被AI取代」的議題又再次熱絡起來,AI究竟是工具還是凶器?都能vibe coding還需要學寫code嗎?作為新進工程師,是怎麼看待AI工具呢?

目錄


AI之於學習

如果你決定開始學寫程式,我強烈推薦使用AI工具,但務必注意使用方式。

益處

AI在程式開發領域的優勢顯而易見且具備絕對性,從基礎的定義(語法撰寫、變數用法)、除錯(錯誤原因分析、調整建議)到設計(如何實現特定功能或效果)都能提供解決方案,且絕大多數是真實可行的。

這對學習者的助益不言而喻,相當於擁有一位隨時待命、任勞任怨且幾乎全才的導師。無論問題深淺,幾乎都能得到解答。這大幅降低了入門門檻,從零建立各種繁瑣概念與認知往往是最困難的,但有了AI工具,不怕找不到答案,只怕你不問。

反面效應

然而使用AI的潛在弊端也同樣明顯:知識取得若太容易、太過依賴AI,反而會抑制學習。如果每次遇到問題只是交給AI然後複製貼上,卻未曾深入瞭解背後的邏輯與解法,那僅是「解決問題」而非真正「學會」。

學習的過程若未曾投入心力、付出代價,是很難真正掌握一項技術或知識的。若在職場上是為了提升效率、減少重複性勞務,使用AI自然恰當;但作為學習者,重點在於「內化」,若沒有真正學會,即便作業或作品呈現得再完美,終究只是空泛的表象。


AI之於開發

延伸上述「沒有學會」的概念,這不僅是個人學習問題,更會導致程式碼缺乏彈性,造成後續維護困難。若是作業或考試,一次性的解決方案或許足夠;但程式開發的最終目標是為了實際運行,這必然涉及新需求或新錯誤的發生,進而需要修改調整。但若程式碼全由AI生成,而開發者並未真正理解,便無能力進行修改,只能繼續依賴AI。若撰寫Prompt(提示詞)的技巧不足,甚至會越改越混亂,引發更多問題。

我曾親身經歷這樣的災難。在培訓班進行小組專題開發時,我們將爬蟲程式與Airflow DAG的撰寫分工,其中一位組員幾乎全靠AI完成任務。起初他還輕鬆地說:「我也不知道怎麼寫,但叫AI寫一下就完成了。」然而,到了後期需要整合並部署至雲端時,各種問題接踵而至,他幾乎束手無策,最終只能求助其他組員,由其他人接手修正他的程式碼。

Vibe Coding

上述組員的例子,已涉及Vibe Coding的核心問題。我認為透過Vibe Coding開發的工具若僅為自用、非商業或非正式場合,並無大礙;但若涉及營利、導入企業或正式工作流,勢必會面臨上述挑戰。AI Agent雖能設計出工具,但使用者是否有能力部署、運行,並在出錯時持續維護,考驗的正是使用者的技術底蘊。

Vibe Coding或AI Agent終究只是工具。我常將「開發之於AI」比作「寫作之於Word」。Word(或任何文書軟體)的出現讓寫作變得便利,似乎人人皆可寫作,但這並未讓所有人都成為作家,也未讓作家就此消失。技術門檻的降低,反而更加考驗作家的本質:是否有獨到的創意構思、架構是否流暢、內容是否具備創新價值。

工程師亦然。寫程式的門檻降低了,看似人人都能開發,但這正是考驗工程師本質:能否挑選合適的框架與解決方案?能否順利部署並持續維護?能否在構思階段便預判各種可能性,並保留調整彈性?這才是目前工程師的核心價值,也是現階段AI仍無法完全取代工程師的原因。


個人經驗

談完我對AI工具的看法,接著分享我自己使用AI的方式。

學習

如前所述,在學習層面上,我認為使用AI必須格外謹慎。若在學習或練習階段需要AI協助,我會區分兩種情境:

  • 我想學會某項技術或知識
  • 我只想解決問題

若目標是「學會」,我絕不會單純將問題丟給AI請它「代為解決」,而是採用類似以下的句型進行「探索」:

  • 我想要實現OOO的功能,有哪些做法可以達到目的?
  • OOO和XXX都能達到某效果,它們的差異為何?我該如何判斷適用情境?
  • 我想開發OOO功能,預想會碰到XXX問題,通常可以如何避免?
  • 在我的認知裡OOO是某某工具,應符合某某條件,請問我的認知是否正確?

對我而言AI是探索工具。我想瞭解有哪些選項、選項間的差異以及決策依據;而最終的解決方案,仍由我自行決定,而非全權交給AI。或者,當我對某概念不確定時,我會用自己的語言描述,請AI檢驗是否正確。這種做法讓我在使用工具時,不僅解決了問題,更能擴展認知邊界。

開發

在開發實務上,我很少使用Vibe Coding來完成整個的專案或功能。我仍秉持「核心功能自己寫,遇問題才請AI協助」的原則。唯有一個部分,我目前幾乎完全依賴Vibe Coding完成:前端介面

由於我目前所學專注於資料處理與後端開發,對前端HTML、CSS或UI/UX(如Streamlit、PyQt等)確實一竅不通。我並非抗拒學習,只是現階段應優先穩固後端基礎。但工具終究需要使用者介面,無論是自用或展示,此時我就會藉由Vibe Coding來開發。

一個實際案例就是這個blog網站。我一直希望架設一個功能簡單的網站來記錄學習心得,但既不想使用模板大同小異的現成平台,也不想負擔WordPress的架站費用,於是嘗試用Google Antigravity工具開發,並自行尋找合適的平台部署,最終成果也是意料之外的符合我的需求。

雖然看似輕描淡寫,但過程也踩了不少坑。起初我對網站架構不甚瞭解,僅向AI Agent簡單描述需求。雖然網站寫出來了也能運作,但當我想進一步追加功能(如SEO優化、GA4埋點等)時,發現AI嘗試將專案改寫成GO框架卻不成功,無論如何修改都衍生出無法解決的問題。最後索性咬牙砍掉重練,這次在一開始就指定使用GO框架建立網站,才解決了後續問題。

結語

這對我來說是一次寶貴的經驗,既體現了Vibe Coding的優點,也讓我經歷了它的限制。Vibe Coding讓我能專注於網站內容的發想,不受限於前端技術;對於像我這樣的個人使用者,又不涉及商業運作,我認為已非常足夠。

另一方面,這也驗證了Vibe Coding雖然方便,但真正的關鍵與價值仍在於使用的人。若對技術無知、指令模糊、無法精確理解/發現問題,即使AI Agent再強大也會遇到瓶頸,因為起點就錯了。

就像建築設計師與工程師,即使工程師技術再高超,若一開始的藍圖就畫錯或設計低劣,最終也只會蓋出一棟危樓。


最後編輯於 2025-12-11