概述#

Joel 挑戰一個普遍的錯誤觀念:「必須先有一個好的點子,然後才能開辦一家成功的軟體公司。」他認為開辦軟體公司的真正目的不是「先做好老鼠夾,再抓老鼠」(build-a-better-mousetrap),而是將資本轉化為有用的軟體

Fog Creek 的核心理念#

2000 年 9 月,Joel 與 Michael Pryor 創辦 Fog Creek 軟體公司,其理念可以總結為四個步驟:

最好的工作條件 → 最好的程式設計師 → 最好的軟體 → 利潤!

本章的核心論點:談論「最好的程式設計師」到底有沒有意義?程式設計師之間的能力差別真的那麼重要嗎?

為什麼不能只雇用便宜的程式設計師?#

軟體的複製成本為零#

  • 與製造業不同,軟體的勞動力成本會分攤在所有銷售出去的副本中
  • 如果銷售量很大,品質的改進並不會造成單位軟體成本的上升
  • 本質上,軟體品質的改進會創造出新價值,而且價值創造的速度要快於成本提升的速度

娛樂業的類比#

  • 就像拍電影花錢請 Brad Pitt 主演是值得的——因為他是票房保證,報酬可以分攤到幾百萬觀眾頭上
  • 壓低程式設計師工資只會得到品質很垃圾的軟體,而且這實際上不會為你省下很多錢

耶魯大學 CS 323 的數據#

Joel 引用耶魯大學 Stanley Eisenstat 教授的數據來證明程式設計師之間的能力差異:

  • 課程包含 12 道程式設計題,每題需要約 2 星期完成
  • 資料涵蓋數十個學生在相同條件下完成相同題目的時間

關鍵發現#

  • 最快的學生做題速度比普通學生快 3-4 倍,比最慢的學生快 10 倍
  • 標準差之大非常驚人
  • 即使只看前 25% 的優秀學生,標準差幾乎與整體相同
  • 作業的品質與所花費的時間基本上是不相關的

Eisenstat 教授的評分極端客觀——學生交上來的程式碼通過自動測試進行打分,完全不考慮編碼風格、遲交等因素。

不只是生產率的問題#

布魯克斯法則(Brooks’ Law)#

  • 向一個已經延誤的軟體項目增加人手,只會使它更加延誤
  • 一個優秀的程式設計師獨自完成一項任務,不需要額外的溝通和協調
  • 如果讓 5 個程式設計師一起完成同樣的任務,他們之間必須溝通和協調,會花掉大量時間
  • 人力與工時的互換是一個神話

質的差別,而非量的差別#

用許多平庸的程式設計師代替少數優秀的程式設計師,真正的問題在於:

  • 不管平庸的程式設計師工作多長時間,他們做出來的東西都無法像優秀程式設計師做得那樣好
  • 5 個 Antonio Salieri 也寫不出莫扎特的《安魂曲》
  • 5 個 Jim Davis 也永遠寫不出 Seinfeld 中 Soup Nazi 那一集的劇本
  • Creative 公司的 Zen 播放器團隊即使再花上許多年,也永遠做不出像 iPod 那樣優美的產品

一流的歌唱演員不管在什麼時候,都可以很輕鬆地唱出高音,而平庸的歌唱演員就是永遠做不到這一點。軟體也是如此。

iPod 的啟示:風格與設計的力量#

  • 蘋果的每一個決定都出於風格(style)的考慮
  • iPod 不允許更換電池,是為了保持無縫的優美外觀
  • 拇指轉輪加上輕微的「咔嗒」聲,讓使用者感覺自己在控制中
  • 這種風格不是 100 個程式設計師或 200 個工業設計師能堆出來的——需要的是像 Jonathan Ive 這樣的設計天才

贏家通吃的市場#

  • 軟體市場有「贏家通吃」(winner-take-all)的味道
  • 排名第二或「還不錯」的產品,對你來說就意味著失敗
  • 你的產品必須非常優異,而開發優異軟體的唯一希望就是依靠那些真正優秀的軟體天才

整個計畫就是:最好的工作條件 → 最好的程式設計師 → 最好的軟體 → 利潤! 這不僅僅是「生產率高 10 倍」的問題,而是「普通」程式設計師永遠都唱不出開發優秀軟體所需要的那種高音。