AI 開發實戰

Marc Andreessen:程式設計的終局——從「Calculator 是人」到「指揮 AI 軍團」

當 Linux 創始人 Linus Torvalds 都承認 AI 寫的程式比他好,程式設計這個職業會走向何方?Marc Andreessen 從計算機發展史談起,解釋為什麼「寫程式」這件事正在經歷最劇烈的轉變,以及為什麼你反而更應該學程式。

來源: Lenny's Podcast

本文整理自 Lenny’s Podcast 訪談 Marc Andreessen 的內容。


大神的承認

2024 年底的假期期間,科技圈出現了一個標誌性的時刻。Linus Torvalds——Linux 作業系統的創始人,全球最具影響力的程式設計師之一——公開表示,AI 寫的程式碼已經比他自己寫的更好。

這番話的份量需要一點背景來理解。Torvalds 在 1991 年創造了 Linux,這個開源作業系統如今運行在全球超過 90% 的雲端伺服器、所有 Android 手機、以及大部分的超級電腦上。他同時也是 Git 版本控制系統的發明者,這套工具是全球軟體開發者協作的基礎設施。過去三十多年,Torvalds 以對程式碼品質的嚴苛要求聞名,在 Linux 核心的郵件討論群裡,他會毫不留情地批評他認為寫得不好的程式。

當這樣一個人說 AI 的程式比他寫得好,這不是客套話,而是一個時代的轉折點。

Marc Andreessen 在訪談中提到這件事,他說,這個假期感覺 AI coding 真的達到了臨界質量。不只是 Torvalds,整個頂尖程式設計師的圈子都開始承認同樣的事實。問題不再是「AI 能不能寫程式」,而是「程式設計師這個職業會變成什麼樣子」。

Calculator 原本是指人

要理解程式設計的未來,Andreessen 說,需要先回顧一段很少人知道的歷史。

他問主持人 Lenny Rachitsky:「你知道『calculator』這個詞最早是指什麼嗎?」

答案是:人。

在電子計算機出現之前,「calculator」是一種職業頭銜,指的是專門做數學運算的人。保險公司需要計算精算表、軍方需要計算彈道軌跡、銀行需要計算利息——這些複雜的數學運算,在沒有機器的年代,全部由人力完成。

當時的運作方式是這樣的:一個大房間裡坐滿了人,可能是幾十人、幾百人、甚至幾千人。房間前面有一個負責整體計算的人,他把一個大型數學公式拆解成無數個小的計算步驟,然後把這些步驟分派給房間裡的每一個人。每個人手工完成自己那一小塊計算,把結果交回去,最後彙整成答案。

這些人的職稱就是 calculator——計算員。

然後電子計算機出現了,calculator 這個詞的意義徹底改變。那些原本做人工計算的人,並沒有全部失業,但他們的工作性質完全不同了。有些人學會了操作新機器,有些人轉向了機器做不好的工作,有些人確實離開了這個領域。

Andreessen 用這個歷史故事來說明一個重點:技術革命改變工作的方式,往往不是簡單的「取代」,而是「重新定義」。

程式語言的演進是一場持續的抽象化

從人工計算員到今天的 AI 寫程式,中間經歷了很多層的演進,每一層都是把更多的細節「抽象化」,讓程式設計師可以專注在更高層次的問題。

最早的電腦沒有程式語言這種東西,你必須用 1 和 0——也就是機器碼——直接告訴電腦該做什麼。這需要對硬體有極深的理解,一個小錯誤就會讓整台機器當機。後來出現了打孔卡,讓輸入指令變得稍微方便一些,但本質上還是在跟機器的底層直接對話。

然後是組合語言(Assembly),這是第一次重大的抽象化。組合語言讓程式設計師可以用簡短的英文縮寫來代表機器指令,而不用記住一長串的 1 和 0。這大幅提高了開發效率,但程式設計師仍然需要非常了解電腦的硬體架構。

再來是 C 語言這樣的「高階語言」。C 語言會被「編譯」成機器碼,程式設計師不需要管每一個記憶體位址的細節,可以用更接近人類思維的方式來寫程式。Andreessen 自己就是在這個時代學寫程式的。

到了 2000 年代,腳本語言崛起——JavaScript、Python、Perl 等等。這些語言更簡單、更靈活,不需要編譯,寫完就能跑。Andreessen 回憶說,當時的 C 語言程式設計師非常看不起寫腳本語言的人:「這不是真正的程式設計!太簡單了!沒有做記憶體管理,不用處理底層細節,這算什麼 coding?」

主持人 Lenny 笑著說他自己就是 Perl 程式設計師出身,當年確實被 C 語言的人鄙視過。但結果呢?腳本語言席捲了整個產業,今天大部分的程式都是用腳本語言寫的。那些當年被瞧不起的工具,成了主流。

Andreessen 說,AI 寫程式是這個演進過程的下一個階段。每一次抽象化,都有人說「這不是真正的程式設計」;每一次,那些擁抱新工具的人都贏了。

為什麼還要學寫程式

既然 AI 寫程式已經比人類好,那還需要學程式嗎?

Andreessen 的答案是肯定的,而且他正在這樣教育他 10 歲的兒子。

他兒子現在完全沉迷於所謂的「vibe coding」——在 Replit 這樣的平台上,用自然語言描述他想要什麼,然後 AI 生成程式碼。他花好幾個小時做各種小遊戲和應用程式,最近迷上了做《星艦迷航記》(Star Trek)的模擬器,用的是《銀河飛龍》(The Next Generation)的介面設計語言 LCARS。

對一個 10 歲的孩子來說,能夠把想像中的東西變成可以運作的程式,這是非常神奇的體驗。但 Andreessen 堅持要兒子同時學習真正理解程式碼。

原因很實際:如果 AI 給你的程式碼有問題——它跑不動、跑得太慢、或者沒有做到你想要的效果——你需要有能力看懂問題出在哪裡,才能給 AI 正確的指示去修正。

這就像使用腳本語言的程式設計師,雖然不需要每天寫 C 語言,但還是要理解電腦底層是怎麼運作的。當程式出了奇怪的 bug,你需要那個深層的理解來診斷問題。AI 寫程式也是同樣的道理:你不需要自己從頭寫每一行程式碼,但你需要有足夠的知識來評估和修正 AI 的產出。

Andreessen 用一句話總結:「如果你知道機器是怎麼運作的,你使用機器就會更有效率。」不管機器是電腦、是程式語言、還是 AI,這個道理都成立。

新的工作模式:指揮 AI 軍團

那麼,頂尖程式設計師現在的工作長什麼樣子?

Andreessen 描述了他從朋友那裡聽到的情況:現在最厲害的程式設計師,他們的日常工作是同時「指揮」十個、二十個 AI coding agent。他們在不同的終端機視窗之間來回切換,每個視窗都有一個 AI 在跑,各自處理不同的任務。

程式設計師的工作從「寫程式」變成了「跟 AI 吵架」——這是 Andreessen 開玩笑的說法。他們給 AI 指示,看 AI 產出的結果,發現問題就糾正,要求 AI 重新來過。就像一個指揮官在指揮一支軍隊,而不是自己親自上陣打仗。

他提到了一個有趣的案例:Anthropic(Claude AI 的開發公司)最近推出了 Claude Code,這是一個讓 AI 可以自主寫程式的工具。然後他們用 Claude Code 開發了另一個產品叫 Cowork,讓一般人也能用類似的方式跟 AI 協作。重點是,Cowork 只花了一週半的時間就開發完成。

Andreessen 指出這件事的兩面性。一方面,這證明了 AI 工具的強大,一週半就能做出一個完整的產品,這在以前是不可想像的。但另一方面,這也引發了一個問題:如果一個產品一週半就能做出來,那它能有多少競爭壁壘?其他公司看到這個產品成功,要複製出類似的東西也不會太難。

這呼應了 Andreessen 在訪談其他部分談到的護城河問題:在 AI 時代,很多東西的建造成本大幅下降,但這也意味著競爭會更激烈、優勢會更難維持。

Vibe Coding 的崛起

「Vibe coding」這個詞最近在科技圈很流行,指的是用自然語言描述你想要什麼,然後讓 AI 把它變成程式。你不需要知道程式語言的語法,只需要能夠清楚表達你的意圖。

Andreessen 的兒子就是這樣做的。他想做一個《星艦迷航記》的艦橋模擬器,他不需要學會怎麼用 JavaScript 畫介面、怎麼處理使用者輸入,他只需要跟 AI 說「我想要一個《銀河飛龍》風格的控制台,上面有這些按鈕,按下去會有這些效果」,AI 就會生成程式碼,他可以馬上看到結果。

這種開發方式的門檻極低,幾乎任何人都可以開始做東西。但 Andreessen 指出,有程式基礎的人和沒有程式基礎的人,在 vibe coding 的效率上還是有明顯差距。

差別在於,當 AI 給你的東西不對的時候,你怎麼反應。沒有程式基礎的人只能說「這不對,再試一次」,然後希望 AI 能猜對你要什麼。有程式基礎的人可以看懂 AI 寫的程式,指出具體的問題:「這裡的迴圈邏輯不對」、「這個 API 呼叫缺少錯誤處理」、「這個資料結構在大量資料時會很慢」。更精確的反饋,會得到更好的結果。

所以 Andreessen 的結論是:vibe coding 會讓更多人能夠做出東西,但真正做得好的人,還是需要懂程式。不是要懂到能從頭手寫一個作業系統,而是要懂到能看懂 AI 在做什麼、能診斷問題、能給出正確的指示。

設計與品味的價值

訪談中還談到了另一個相關的話題:設計。

AI 現在可以生成非常漂亮的圖示、介面元素、視覺設計。你跟它說「給我一個藍色調的登入頁面」,它會給你好幾個版本讓你選。這是不是意味著設計師也會被取代?

Andreessen 做了一個區分:小寫的 design(具體的設計執行,比如畫圖示、調顏色)和大寫的 Design(更高層次的設計思考)是兩回事。

小寫的 design,AI 確實越來越擅長。它可以無限量產出設計素材,而且品質不錯。但大寫的 Design——這個產品的目的是什麼?使用這個產品會讓人有什麼感受?這個設計會如何融入使用者的生活?使用者會不會愛上它?——這些問題需要對人類的理解,AI 目前還做不到。

Andreessen 舉了 Jony Ive 的例子。Ive 是前 Apple 設計長,他領導設計了 iMac、iPod、iPhone、iPad 等改變世界的產品。Ive 的厲害之處不在於他能畫出漂亮的圖——Apple 有幾百個設計師都能畫漂亮的圖——而在於他對於「什麼是好的」有極其敏銳的判斷,他能夠在無數可能的方向中,選出那個真正對的方向。

這種能力叫做「品味」(taste),在 AI 時代反而會變得更珍貴。當每個人都可以用 AI 生成無限的選項,「選什麼」就成了關鍵的差異化因素。有品味的人,能夠在 AI 產出的大量素材中,挑出真正好的那個;沒品味的人,只能隨便選一個,或者被選項淹沒。

對年輕設計師來說,這其實是好消息。AI 可以幫你處理大量的執行細節,讓你有更多時間專注在高層次的設計思考上。以前你可能要花很多時間在畫圖、調整像素這些事情上,現在 AI 可以幫你做很多,你可以把腦力用在更重要的問題上。

但這也意味著,純粹的執行能力——只會畫圖、只會調顏色——會越來越不值錢。你需要往上走,培養更高層次的設計能力,才能在 AI 時代保持競爭力。


我的觀察

程式設計師這個職業正在經歷的轉型,對我來說是一個很有啟發性的觀察案例。

很多程式設計師的身份認同是跟「寫程式」這件事緊密綁定的。他們花了多年時間精進技術,以能寫出優雅的程式碼為榮,在同儕中以技術能力建立地位。當 AI 開始能寫出比他們更好的程式碼,這不只是技能上的挑戰,更是身份認同上的危機。

我觀察到兩種截然不同的反應。有些人選擇抗拒,堅持手寫程式碼才是「真正的」程式設計,AI 生成的東西不算數。他們可能會強調 AI 程式碼的各種問題——確實,AI 生成的程式碼常常有 bug、有安全漏洞、不夠最佳化。但這種抗拒,長期來看可能會讓他們落後。

另一種人選擇擁抱,把自己重新定位為「AI 指揮官」而不是「程式碼作者」。他們專注在更高層次的問題:系統架構該怎麼設計、產品邏輯該怎麼組織、怎麼把模糊的需求轉換成 AI 能理解的指示。這些人的產出效率往往是前一種人的十倍以上。

這個觀察對非工程師也有意義。很多人以為 AI 寫程式代表「不用學程式了」,這是誤解。現在「懂一點程式」反而變得更重要,因為你會在各種地方遇到 AI 生成的程式碼,你需要有基本的判斷能力。好消息是,用 AI 學程式的門檻比以前低很多——你可以讓 AI 當你的家教,從最基礎的概念開始教你。

最後談談「品味」這件事。Andreessen 提到設計需要品味,其實任何創造性的工作都需要品味。當 AI 可以無限生成內容,能夠判斷「什麼是好的」就變成稀缺能力。但品味不是天生的,是需要培養的。培養的方法沒有捷徑:大量接觸好作品、仔細比較不同作品的差異、反思為什麼某些東西比其他的好。

這對編輯、設計師、策展人這類工作來說,反而是利多。他們的核心價值不是「生產內容」,而是「判斷內容」。在 AI 時代,這個能力會變得更值錢,而不是更不值錢。