「最懶的程式設計師」(The Laziest Programmer)
開場:Silverstone 的暴雨#
英國 Silverstone 賽道,6 Hours of Silverstone 耐力賽。三十出頭的丹麥人 David Heinemeier Hansson(DHH)跳進那台黑粉相間的 Le Mans Prototype 2 賽車時,車隊 Oak Racing 排在第三名,第一名整整領先一圈。
- 在耐力賽裡,6 小時甚至 12 小時的比賽,冠軍可能只贏 5 秒
- 規則拉平了車輛硬體差異,勝負最終取決於車手的數千個微小判斷
- DHH 是隊裡最沒經驗的車手,而比賽下到一半,雨開始下了
DHH 在程式圈以「DHH」聞名,幾乎不為車迷所知。但他間接催生了 Twitter、Hulu、Airbnb 與一票改變世界的科技公司——而他沒有從中收一毛權利金。
「都是因為 DHH 痛恨做不必要的工作。」
抽象(Abstraction):電腦的「鋪路術」#
要理解 DHH 的 smartcut,得先理解電腦如何「層疊抽象」:
把鋪路的過程比喻成電腦演進:
- 草地路面:顛簸難行——對應晶片內的數百萬電晶體(transistor),早期靠人手撥開關
- 碎石路:機器語言(machine language)——用 0 與 1 控制電晶體
- 柏油路:組合語言(assembly language)——可寫成
MOV AL, 61h而非10110000 01100001 - 柏油+畫線:高階語言 C——可寫
printf("Hello World");,由 C 翻譯回組合語言再翻譯為 0/1 - 高速公路:作業系統與應用程式——點滑鼠就完成上面所有事
平台(Platform)= 抽象層 = 把別人辛苦鋪好的路拿來用。
牛頓(Isaac Newton)說:「我之所以看得遠,是因為我站在巨人的肩膀上。」平台讓我們的努力被放大。
DHH 與 Ruby on Rails#
DHH 的成長路徑充滿「選擇性翹班」:
- 大學時他自豪地拿 C 評等:「能用 5% 的力氣拿到 C-,剩下 95% 投入真正在乎的事」
- 把節省下的時間投入網頁開發
- 美國設計事務所 37signals 委託他做專案管理工具,他選用了一個叫 Ruby 的新語言
但 Ruby 仍然要求大量重複決策:資料庫怎麼命名、伺服器怎麼設定。每個專案都要從同樣的基本元件做起。
傳統程式設計師把這種重複當成「入行的學費」。「很多人崇尚清教徒式的勞動倫理——必須辛苦才算對。」DHH 認為這是愚蠢的。
於是 DHH 在 Ruby 之上多疊一層自動化——後來成為 Ruby on Rails:
- 他用 Rails 為 37signals 做出 Basecamp
- 上傳到網路後,業餘者爆量下載;老手雖然嘟囔「這不是真的程式設計」,但仍轉用 Rails,因為更快
- 社群開始貢獻可重用的元件,稱為 gems(如註冊表單、搜尋工具)
- 有人用 Rails 做明尼蘇達馬桶公司的會計系統,也有人做給編織愛好者的社群網站
Twitter 的誕生#
2006 年,一家 Podcast 新創的兩個人想試一個副專案:
- 借助 Rails 在幾天內就做出原型,當作實驗
- 隔年(2007 春)副產品紅了,他們乾脆賣掉舊公司全力投入
- 那個副產品叫 Twitter
傳統做法可能要在 C 之類的較低層花上數月甚至數年才能上線。Rails 把「幾年」壓縮成「幾天」。
教育平台:芬蘭奇蹟#
哈佛研究員 Tony Wagner 2010 年飛往芬蘭,發現一個矛盾的事實:
| 指標 | 美國 | 芬蘭 |
|---|---|---|
| 入學年齡 | 較早 | 晚一年 |
| 每日上課時數 | 多 | 少 |
| 考試與作業量 | 多 | 少 |
| 學生對學校的觀感 | 一般 | 覺得有趣 |
| 教師年授課時數 | 1,100 | 600 |
| 國際數理閱讀排名 | 中間 | 常年第一 |
幾十年前的芬蘭教育只是平庸。一代人之間發生了什麼?
Freeman Dyson:「不要強迫孩子學數學」#
89 歲的物理大師 Freeman Dyson 在普林斯頓告訴作者:
- 「我認為強迫孩子學數學是個重大的錯誤」
- 對「高階數學該教多少」他答:「我會放零」
- Dyson 不是反對教育,而是反對「在草地上開車」的教法
- 死記公式 = 在草地上開車;會用工具 = 在高速公路上開車
- 這場辯論其實是 15 世紀的舊戲碼:當時義大利學者擔心算盤與紙筆會削弱思考能力——結果它們反而打開了新的數學層
Hopscotch:給孩子的程式平台#
工程師 Samantha John 觀察到:
- 大學資工系幾乎全是男性
- 多數男生十到十四歲玩遊戲,因而想學寫遊戲
- 「多數人並不愛電玩到願意翻越那個門檻」
她推出 iPad App Daisy the Dinosaur 與程式語言 Hopscotch,孩子用拖拉手勢就能寫出 If/Then、Loop。MIT 數學家 Seymour Papert 稱這種方式為建構主義(constructionism)——透過操作物件學習,幾乎都需要平台輔助。
研究顯示:使用計算機的學生對數學態度更正向、更可能投入 STEM 領域。
「先教工具,再讓孩子在感興趣的領域深掘。」
反方意見:基礎不打好怎麼辦?#
David Moursund 教授(曾撰寫 60 多本電腦教育著作)指出:
- 學生在高中前約 75% 的數學時間花在記憶與套用規則
- 留給「高階思考」(套用解題、建構模型、理解世界)的時間太少
- 「計算機與電腦能取代部分記憶」
Stanford 的 Keith Devlin 補上關鍵句:
「把『思考』搞對,技能幾乎自動到位。」
Get the thinking right and the skills come largely for free.
絕大多數計算機相關研究指出:先學工具反而能更快掌握學科本身。在智慧手機與維基百科時代,知識記憶力的重要性下降,創造性解題能力的重要性上升。
芬蘭的真正平台優勢:高素質教師#
芬蘭的祕密不是工具,是老師本身的水準:
- 教師職業變得高聲望且競爭激烈
- 各層級教師都需碩士學位
- 申請者只有 10% 能進入師資培訓
- 教師多數做到退休(美國有半數老師五年內離職)
- 上課時數少,意謂他們有更多時間備課、與同事協作、與家長學生會談
哈佛之所以是哈佛——學生入學時就因「Sinatra-style 信譽 + 頂尖師資」站上一階。
芬蘭把這套邏輯複製到全民義務教育。
芬蘭的教學重點:
- 教怎麼思考而非思考什麼
- 砍除課程肥肉,把時間留給職能訓練
- 學生使用計算機毫無限制
- 「孩子有更強烈的『要建構自己未來』的意識」——他們是自己人生的創業者
Edward de Bono(1967 年提出「橫向思維」一詞)的版本最精煉:
「想在不同的地方挖洞,不能只是把同一個洞挖得更深。」
回到 Silverstone:DHH 的賽車 Smartcut#
DHH 進入賽車界時:
- 以「業餘」身分跑 GT4
- 透過反覆觀看大師車手的影片進步
- 6 場 GT4 後就升上 GT3——沒拿過第一也照升
- GT3 跑 6 場,拿一次冠軍、一次季軍,再升 GTE(Endurance)
- 一般人五到七年的歷練,他用 18 個月走完
- 「規則沒說一定要奪冠才能升等,那只是大家的習慣」
但在 Silverstone 暴雨中,這些「跳級」幫不上忙。他駕駛的 LMP 用光面胎(slicks)——速度快、排水差。對手紛紛進站換雨胎(rain tires),雨胎安全但慢,換胎要 13 秒以上、總共損失約 1 分鐘。
DHH 在無線電裡狂喊:「我要不要進站?我會撞牆!」
工程師回他:「撐住,雨快停了。」
他咬牙再開兩圈——雨果然停。其他人剛換上的雨胎在乾路上抓地反而更差,他憑著光面胎的抓地力一路超車到底。
平台優勢 + 大師訓練 + 不照規矩升級 = 超越同等技術水準的對手。
「我不是特別有天分的程式設計師、創業者或車手,我只是知道怎麼訓練自己。」——DHH
平台無所不在#
平台可以是工具,也可以是環境。
- 工具:計算機、Hopscotch、Excel、光面胎
- 環境:頂級職業聯賽、高水準學校、國際大都會
平台會在你使用它的過程中順帶教你技能。
其他例子:
- 過去三十年美國有近 2/3 的專利來自 20 個大都會(人口僅佔 1/3)
- Jonah Lehrer 的「都市摩擦」(urban friction)與 Richard Florida 的「創意階級」(creative class)讓城市成為更高的成功平台
- 演員去洛杉磯、時尚部落客去紐約、哈佛法學院畢業生比較好找工作——都是平台效應
- Twitter 能在公司營運期間幾天內做出原型,是平台
- 芬蘭把全國老師都拉到碩士水準,是平台
本章核心結論#
單為了努力而努力,跟「按部就班付學費」一樣愚蠢。
- 努力被槓桿放大時才有意義
- 平台幫我們省去重新發明輪子的時間
- 用平台 → 學技能 → 專注成就「藝術」
「世上有很多東西可以站在它們之上,」DHH 說,「有人去做最底層、辛苦的科學工作。而你,在那之上,建造你的藝術。」