「最懶的程式設計師」(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,100600
國際數理閱讀排名中間常年第一

幾十年前的芬蘭教育只是平庸。一代人之間發生了什麼?

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 說,「有人去做最底層、辛苦的科學工作。而你,在那之上,建造你的藝術。