大概年初時,Claude Code、Codex 其實已經出一段時間了,社群媒體大量的讚揚它們的好,幫助他們做完了許多的之前沒達成事,完成任務、提升效率、做新作品,作為一個完全沒 side project 想法的人來說不具備任何吸引力,這不禁讓我反過來思考為何幾乎沒什麼人分享 AI 怎麼讓他學會一項事物,某種程度上這才是我期待在 AI 上看到的效果。

也許在學習上因應個體不同,學習模式也不同,在 AI 協作上更不相同,那你也很難各種抄提示詞、抄 skill,而且每個人在同一個問題上想知道的事並不完全一樣,也不容易有所謂完整的成果能夠分享出去。

這讓我聯想到自己以往在開發過程中因為好奇心中所產生的疑問其實一直都沒真正理解,常常因為以下原因而被忽略:

  • 對當下執行的任務沒什麼直接幫助
  • 隨便找個文件看看就結束了
  • 部分知識儲備不足,導致無法進行下去
  • 我應該不需要知道這個

一旦這個疑問被放置一段時間,可能被遺忘,可能一直堆積在腦海裡,或是想理解的那股衝勁消退了,而之後回憶起來時再恨自己怎麼還不好好搞懂。

因此我決定做一個實驗,我要跟這些問題直球對決,我要看看是否能透過 AI 協助將這些疑惑逐一擊破,讓自己真正的獲得這些知識。

這個實驗我以 OCaml 為主要實現語言,將一個問題提給 Codex 並解釋其原理,規劃出實作方向之後嘗試自己實現。

學習的瓶頸

這次必然是想解決以往在學習上遇到的困難,因為這些困難會使我們卻步,AI 的出現讓我有機會扭轉這個局面,以下是我認為在學習上的幾個主要瓶頸,以及 AI 改善了哪部分。

邊際效益遞減

一門知識的學習會隨著時間跟經驗逐漸累積,但增長的速度卻會逐漸變慢,甚至停滯不前,理解一小部分需要越來越多的知識儲備,耗費的時間與精力更是以指數成長,這也是為什麼在學習的過程並不會刻意的讓自己精通,而是夠用就好。

即便是這樣,我仍然對特定高階議題抱有極大好奇心,雖然能夠嘗試的去理解,但海量的額外知識讓我不知所措,甚至有些根本不在領域內。

AI 的強項之一,大量的知識,重點是能夠從一個問題中持續延伸,直到能夠完整解決這個問題為止,讓我能在實作中完整知道需要哪些知識,讓我對整個事物有全盤的理解,這是以往自己單純的網路搜尋很難達成的,對話過程的任何疑惑都可以繼續追問,嘗試找出可信任的資源,同時請 AI 協助解讀不懂的部分。

你不親自動手永遠無法理解

大部分知識是這樣的,讀讀文件只是淺嚐,嘗試理解也僅僅是略懂,自己動手做才是有機會在腦子裡留下刻印,遺忘是一定的,但至少不要忘得像是當作沒這件事發生一樣,這裡實作的意義並不在於完成一個偉大的作品或是造福人群,而是通透的理解整個脈絡,細節會隨時間丟失,但這無傷大雅,因為總能利用剩下的把它全部找回來。

決定要不要開始動手取決於夠不夠想理解,或是不想做一半因為太難而放棄,有 AI 協助的情況下會讓你比較有信心去嘗試,假如真的糟糕透頂大不了直接叫 AI 幫你生出來你再慢慢讀就好,不至於到爛尾的程度。

只差臨門一腳

有一種情境是你好不容易掌握了絕大部分的知識了,卻在一個理論上卡住,好死不死這還是最關鍵的部分,這下尷尬了,想弄懂不知道要奮鬥到哪時,不得已只好暫時擱置,這搞的自己處在似懂非懂的狀態,而且這種破碎的知識忘的速度比起一般完整的知識還要快的多。

但有 AI 的情況下不一樣,更積極的想辦法去理解,打破砂鍋問到底,找資源、換說法、示範給我看,各種的方法都想辦法試一遍,不會一拖再拖。這更多體現在心態層面,因為我知道 AI 總會回答我,即便不是完全正確,但我反而會從這些回答中找到我要的線索,慢慢的把知識組織起來,直到能夠真正理解為止。

就只有對話

整個過程並未用任何 AI 的衍生工具,完全就是對話,我也幾乎沒有讓 AI 直接操控我的專案,一方面是因為我本身不喜歡被干擾思考,另一方面是以學習為目的動手的應該是學習者,我要的是把 AI 的經驗帶走,而不是直接獲取成果。

不過在對話中我有自己的行為準則

  • 質疑所有我看到的回覆
  • 過程中任何在心中冒出的疑問都問清楚
  • 搞清楚 AI 提供的方法背後動機跟原因是什麼

或許都是很理所當然的事情,但這就是作為一個求知者本該做到的。

為什麼是 OCaml?

除了我本身喜歡這個語言之外,還有一個原因是 OCaml 的生態跟其他語言比起來相距甚遠,這迫使我必須完全的靠自己,沒有什麼現成的資源可以參考。假如這是個 TS/Python 的專案,很多事情可以偷吃步,去看現成的原始碼來彌補並不是不行,而是這些現成的函式庫是被精心設計過的,高度的抽象,很多時候去分析追蹤內容反而效果並不好,因為你不清楚它背後的動機跟設計理念,這樣的學習過程反而會讓你對整個事物的理解變得模糊不清。

另外我也想看看 AI 在這種情況下的反應,畢竟在一些熱門語言上 AI 的表現已經非常好了,這樣的實驗對我來說就沒什麼意義,而且在自己喜歡的語言上貢獻實作想法不是也很棒嗎。

簡單來說,就是利用這種相對貧乏環境來迫使我改變自身的慣性。

請 AI 用工具驗證測試

AI 能幫我生一些測試,能夠通過,但是這些測試本身是正確的嗎?一種作法是我用其他語言現成的工具自己驗證輸入輸出是對的,但這樣實在太麻煩了,各種資料格式轉來轉去自己都昏頭,後來意識到 AI 才是最懂得怎麼使用工具,直接讓它自己用工具生成輸入輸出我自己對照,或是請他提供出處我自己去校驗。

結論

這次的實驗讓我找到跟 AI 的協作模式,我將它定位成一名指導者,減緩了在學習上心理層面的挫折感,AI 在進化的同時我也要跟著進化,不然像個老闆一樣指使它幫我做事,最後只會是你越來越不懂它在幹嘛,它也不知道你想要什麼。