Vibe Coding #3:
當 AI 寫出了程式碼,誰來負責思考?
Developer 的價值不在於打字速度,而在於看見那些「AI 沒寫出來」的隱形風險。這是一篇關於「工程師思維」的深度對話。
⚡ Executive Summary: 本文精華
- AI 的侷限: AI 擅長產出「能跑 (Runnable)」的代碼,但往往缺乏對系統全貌的考量,容易埋下技術債。
- 安全性 (Security): 以登入系統為例,AI 常忽略加密、驗證與錯誤處理,導致用戶資料面臨風險。
- 可維護性 (Maintainability): 過度依賴第三方函式庫 (Library) 會導致「依賴地獄」,增加未來的更新與除錯成本。
- 工程師思維: 學習像架構師一樣思考,在動手前先規劃結構,是避免專案失敗的關鍵。
Part 1: 安全性——AI 沒告訴你的隱形風險
當你用 Vibe Coding 說:「幫我做一個登入頁面」時,AI 通常會非常盡責地給你一個「能用」的版本:兩個輸入框(帳號、密碼)和一個按鈕。你試了一下,輸入帳號密碼,登入成功,覺得太棒了,任務完成。
但這正是危險的開始。程式並不是你想像的這麼簡單。一個看似簡單的登入系統,背後隱藏著無數需要考慮的安全細節。因為你的 App 保存了用戶的個人資料,你必須對這些資料的安全性負責。
1. 資料加密 (Encryption)
AI 為了方便,可能直接把密碼明文 (Plain Text) 傳輸或儲存。這意味著駭客只要攔截封包,或者入侵你的資料庫,所有人的密碼就一覽無遺。你需要考慮如何使用 HTTPS 傳輸,以及如何在伺服器端進行 Hash + Salt處理。
2. 輸入驗證 (Validation)
如果用戶在帳號欄位輸入了一段惡意代碼(例如 SQL Injection),你的系統會不會崩潰甚至被接管?AI 寫的代碼往往假設「用戶是善良的」,但真實世界並非如此。你需要嚴格檢查輸入長度、格式,過濾掉危險字符。
3. 錯誤處理 (Error Handling)
當登入失敗時,系統該給什麼 Feedback?如果你直接顯示「該帳號不存在」,這反而給了駭客線索去猜測帳號。安全的做法是顯示模糊的「帳號或密碼錯誤」。同時,如果有人連續失敗 10 次,系統是否有機制暫時鎖定該 IP?
這些都是透過經驗累積出來的 Concept。AI 未必會主動幫你完成得這麼詳細,除非你懂得「要求」它這樣做。
Part 2: 可維護性——函式庫囤積症的代價
在開發 App 時,我們常會加入各種功能:圖表、動畫、漂亮的 ICON 等等。當你問 AI:「怎麼做這個動畫?」AI 通常會給你「最方便」的答案,而不是「最理想」的答案。
它通常會叫你安裝一個第三方函式庫 (Library)。這在當下解決了問題,但慢慢地,你會發現你的專案裝了幾十個套件。
這會帶來什麼災難?(Dependency Hell)
- 更新災難: 手機作業系統 (iOS/Android) 每年更新。如果那個做圖表套件的作者不再維護了,你的 App 可能在新系統上直接閃退。這時候你要修的不是你自己的代碼,而是要去讀懂別人寫的幾千行代碼,這非常痛苦。
- 體積膨脹: 每個 Library 都有重量。裝太多會讓你的 App 變得很肥大,下載變慢,甚至影響執行效能。
- 版本衝突: Library A 依賴版本 1.0 的某個工具,Library B 依賴版本 2.0,結果兩邊打架,專案直接跑不動。
學習 Concept 的人會思考:「這個功能真的需要裝這麼大的套件嗎?還是我自己寫幾行 CSS 或簡單的邏輯就能搞定?」 這就是為了長遠維護考量的思維。
Part 3: 架構設計——避免「義大利麵代碼」
很多新手用 AI 寫程式,是「想到哪寫到哪」。今天做首頁,明天做個人頁,後天加個購物車。
因為沒有事先考慮清楚整個程式的構造,當程式越來越大時,你會發現:程式碼的重複度極高,而且 Logic (邏輯) 和 UI (介面) 混在一起。
為什麼架構很重要?
想像你在蓋房子。如果你沒有藍圖,想到要加廁所就隨便接個水管,想到要加房間就隨便砌面牆。最後這房子雖然能住,但水管線路亂七八糟,想修個漏水可能要拆掉整面牆。
寫程式也是一樣。你需要學習如何將程式碼「模組化 (Modularization)」。把負責資料處理的、負責畫面顯示的、負責網路連線的代碼分開。這樣當你要修改 UI 時,就不會不小心把登入功能弄壞。
Part 4: 如何培養工程師思維?
最後,如果你也想寫好你的程式,而不只是當一個「AI 搬運工」,你必須要學習 Developer 的思維。不要等到出現大問題的時候,才再來考慮如何解決。
- 1. 保持懷疑: 不要全盤接受 AI 給的代碼。試著問它:「為什麼要這樣寫?有沒有更安全或更效能更好的寫法?」
- 2. 閱讀官方文件: AI 的知識可能過時。養成閱讀官方文檔 (Documentation) 的習慣,了解最新的寫法。
- 3. 關注邊緣情況 (Edge Cases): AI 通常只考慮「正常情況」。你要去思考「異常情況」:如果網路斷了?如果用戶輸入了表情符號?如果手機沒電了?
Part 5: FAQ: 新手常見迷思解答
Q1: 所以我不需要學寫程式碼 (Syntax) 了嗎?
不完全是。雖然 AI 可以幫你產出語法,但你至少要「看得懂」。這就像你不需要會造車,但你要會開車、懂交通規則,甚至知道車子拋錨時大概是哪裡壞了。基礎的語法知識能幫助你判斷 AI 寫得對不對。
Q2: AI 會取代資深工程師嗎?
短期內很難。如文中所述,資深工程師的價值在於「架構設計」、「風險評估」和「解決複雜問題」。AI 是強大的助手,能提升效率,但它目前還無法取代對系統全貌的掌控力。
Q3: 我該從哪裡開始學習這些 Concept?
除了看書和上課,最好的方式就是「做專案」並「踩坑」。當你遇到一次資料庫被駭、或者一次 App 閃退修不好,你就會深刻理解這些觀念的重要性。當然,多閱讀像本站這樣的深度文章也是很好的捷徑。