
這個聖誕假期,身為對個人知識管理(PKM)極重度用戶,我決定自己動手,將卡片盒筆記法(Zettelkasten)與 AI 寫程式助理縫合在一起,自己做一個,卻發現 AI 寫程式 的技術債風險。
本文目錄
什麼是技術債?AI 寫程式最 容易埋下的「隱形炸彈」
在常規軟體開發中,新增一個功能(如:聯絡人、Email、筆記)通常意味著要多一張資料表,以及處理表與表之間複雜的關聯(樞紐表)。這也是為什麼當原廠不給新功能時,你一點辦法都沒有。
常規的軟體開發中,每個功能會有自己的資料格式,就要有對應資料表,不同的內容很難存在一張表上,因為欄位不一樣,例如:
- 聯絡人:姓名、地址、電話、Email
- Email:寄件人、收件人、主旨、內文、附件
拿 Outlook 來說,裡面有 Email, Calendar, Contact,那至少有 3 張表?實際上不止 3 張,Email 收件人要從 Contact 中選,還要加一張樞紐表記錄兩張表之間的關係。
為了打造大腦的複本,我選擇設計一種「萬用資料結構」來容納所有資訊,而非像 WordPress 插件那樣無止盡地堆疊資料表導致效能低落。
我選擇使用第二種,這種理念你可以說給 AI 聽,但它總是做一陣子又回到一般 App 寫法,於是過一陣子我就要糾正一次再翻修。
這是因為我看到它出錯了,如果沒看到,它就快快樂樂亂寫,最後難以收尾,這就是「技術債」。
什麼是技術債:
技術債(Technical Debt)是指為了追求開發速度,而選擇了易於實現但非最優的方案,導致未來維護成本增加。AI 就像一個「只求能跑,不求安全」的樂高組裝手,如果我們看不出它的結構缺陷,這些亂寫的程式碼最終會讓你難以收尾。
避免 AI 生成爛程式碼:你需要掌握「低限學習」與基礎語法
就像很多教 Vibe coding 的課程一樣,剛開始我也什麼都不懂,但確實可以做出想要的東西,確實很興奮,所以我也用 SDD 定下需求,只要你寫的程式達到我的需求,就沒問題了。
現在流行 SDD(需求驅動開發),只要定好需求,程式碼似乎就能自動生成。但 Gemini 提醒我:AI 覺得「能用」比「安全」重要。如果你完全不懂技術,你的創造力邊界就只能是「AI 的平均值」。
經過這一次,我理解了 Gemini 說的「組樂高」是什麼意思,如果你有細緻的要求,你要詳細指示,不過想詳細指示,就不能全部不懂了。當然這也看你的野心,如果自己用或是讓 10 個朋友,資料外泄頂多被罵,如果意外太受歡迎獲得上萬會員,同一件事就是大災難了,可能賠掉你的身家。
所以如果一點都不想學也很容易,千萬保持小規模,千萬避免太受歡迎!
但如果願意花兩三天學基礎語法、資料結構,就能跟 AI 雙向互動,情況就不同了。
這差異很難語言表達,舉例說,裕隆速利跟賓士只差在賓士更貴更豪華嗎?其實上高速公路、山路、發生車禍…時,兩者表現都大大不同,但就最基本「代步」來說真差不多。
上週我花了 1 天補充 JavaScript 新知、2 天補充 Go 語言知識,配合先前對技術理解,就可跟 AI 精密溝通,至少我能抓到它亂做。
有 AI 只需要低限學習,不難。轉貼 Gemini 總結:
- 不懂的人:他的創造力邊界 = AI 的平均值。AI 給他什麼,他的產品就是什麼。
- 懂的人:你有自己的設計哲學,你是在指揮 AI 去實現你的哲學,而不是讓 AI 替你思考。
手腳可以外包,但思考可不能外包。
AI 寫程式 協作三大語言:Python, JavaScript 與 Go 的選擇指南
這是一份學完一定【不會】寫程式的指南
如果你一種語言學一兩天就可以開發,天才!請收下我的膝蓋。這個學習唯一目的是「可跟 AI 協作」,當然是 AI 自己寫的,它說「這樣就夠」。
為何要學?因為:
- AI 寫程式常惡搞,搞壞了還是你浪費時間 debug。
- 當 AI 遇到邏輯鬼擋牆時,你只要具備基礎語法觀念,問一句:「為什麼這裡不用 X 方式寫?」它就會恍然大悟地修正,這能省下你數小時的除錯時間。
- 當然更多時候是因為你不懂提出矛盾的需求,我觀察 AI 不會回嘴,它只會想盡辦法把類似你想要的做出來。
技術進步,越來越多狀況 AI 自己能搞定,但還有一小部分要你解決,此時完全陌生就糟了,不如花一兩天極簡學習。
手腳可以外包,但思考不能外包。
以下是我為 AI 協作者整理的「低限學習清單」,目標不是讓你變大神,而是讓你學會「指揮 AI 實現你的設計哲學」。
三大核心語言:你的協作工具箱
Python:AI 時代的「國語」 (建議學習:6-12 小時)
- 為什麼學: 它是 AI 和大數據的標準語言,且語法像英文一樣簡潔,沒有煩人的括號。
- 低限目標: 建立信心。當 AI 舉例時,通常都用 Python,學會它能讓你理解基本的邏輯結構。
當年我學習的想法是,「學儘量少」,所以找了個章節很少的來學,看來不貪心是好方法,網頁前端 ( Frontend” ) 它真的市佔率超高,而常用框架,你一定常聽 AI 說的 React/Vue 也是非常泛用。
我還請 AI 幫每個章節分輕重,可以跳過部分,所以學得更少,它每一章節都很短,壓力很小,而且一按就看到結果,有成就感。
JavaScript:網頁世界的「凌亂補丁」 (建議學習:8 小時)
- 為什麼學: 雖然它誕生時只花了 10 小時,且充滿了歷史包袱與疊床架屋的補丁,但它是瀏覽器的霸主,也是 n8n、Supabase 等工具的核心。
- 低限目標: 「不陌生就願意用」。只要能看懂 AI 寫了什麼,並能抓出明顯的錯誤即可。
JavaScript 很像 Photoshop,簡單的人人都會,但難的還是不好懂。
AI 不會粉飾太平說「其實 JavaScript 很不錯…」而是坦言「幾十年發展疊牀架屋,向後相容無法大刀闊斧改善,打開都是凌亂補丁」,它不是「優雅」的語言,當初開發者只花了 10 小時就交卷,他爹都坦言不愛它。
現在全世界大神都在救,詳見拙文
但你不能不學這個奇跡,誰能叫全世界大神幫它寫補丁!如果在瀏覽器裡使用的 App 全逃不開它,n8n 的 Code 節點用它,企業級的 Supabase、Appwrite、Strapi… 也是用它寫的!
還好,你不用愛它,AI 時代只要願意用,其他 AI 會幫你。
我花了約 8 小時,幾個新語法小小卡住,現在看 AI code 確實輕鬆了。
Go:來自 Google 的「優雅重型機車」 (建議學習:12 小時)
- 為什麼學: 當你需要高效能時,Go 比 Python 快 10 到 100 倍。它的語法甚至比 Python 更精簡,且具備強大的生態系(有很多別人的程式碼可以抄)。
- 低限目標: 體驗「品味」。Go 是 Google 大神殫精慮慮之作,邏輯極度清晰。最棒的是,它編譯後只有**「一個檔案」**,雲端佈建極其簡單,不再需要為了環境配置折騰一整天。
Go 比 JavaScript/Python 快 10 ~ 100 倍,是 Google 「私家」語言(有開放大家用啦),專門開發複雜 Web App。
但它是編譯語言,讓我遲疑了!
小時候曾有高手推薦用 C++ 入門程式開發失敗,後學數月 Java 被複雜冗長的語法嚇到,它們普遍複雜深奧。雖然後來直譯語言 Python 撫慰了我,但餘悸猶存,PTSD 的我聽到編譯語言就皮皮挫。
但在 AI 慫恿下喵了喵 Go 語法,疑,好像沒這麼恐怖?因為:
- 語法簡單:這語言語法竟很簡潔,比 Python 有過之無不及!
- 佈建簡單:佈建到雲端只要上傳【 一個檔案 】!!!Web App 結構複雜,佈建雲端常出問題,至少耗一天吧!但 Go 會編譯成「一個檔案」,丟到雲端就能跑,不愧是 Web app 專供語言,太省力了!
- 抄襲簡單:Google 掛保證,社群很熱心,生態系發展好,就是「有很多別人寫好的程式可以拿來套」啦!
官方教材承襲 Go 的簡潔要求,說明也極度簡潔到不好理解,我一邊學一邊問 AI,記得 Go 的強項是後端 ( Backend ) 開發,特別是 Web App 常常遇到的「高併發」 ( High Concurrency ) 它都幫你解決了。
如果學完 JavaScript 再學 Go,會有「我能夠品味程式語言的好壞了!」的快感,因為 JavaScript 是一個人十小時搞定的,而 Go 是 Google 的數名特聘大神殫精竭慮之作,邏輯極度清晰,沒有那種「為什麼這樣寫?」「我也不知道」的問題。
我用 1.5 天,比較難一點點,但一邊學一邊拍手叫好!
結語:當個有靈魂的導演
如果你願意花兩三天學習基礎語法與資料結構,你與 AI 的關係將從「它給什麼,我收什麼」昇華為「雙向互動」。這就像開裕隆速利與賓士的差別:平時代步差不多,但在高速行駛或面臨衝擊(複雜功能需求)時,兩者的表現天差地遠。
記住:如果你想保持野心、開發出擁有萬名會員的產品,請務必掌握這些「低限知識」,否則一場成功的意外,也可能因為技術災難而賠掉你的身家。
💡 理解小撇步: 將 AI 寫程式想像成「點 Foodpanda」。如果完全不懂,外送員送來臭酸的食物你可能也吃不出來;「低限學習」就像是你雖然不進廚房,但至少知道食材的新鮮度與基本的烹飪邏輯,這樣你才能在餐點不對時,精準地告訴外送員該如何改進。
