為什麼要用指標來驅動進度#

彼得·杜拉克(Peter Drucker)在《有效的管理者》(The Effective Executive)中寫道:「If you can’t measure it, you can’t improve it.」 沒有量測,我們只能依靠直覺前進,也無從知道直覺是否正確。

宏大目標往往需要長時間耕耘才能達成,而維持動力的最佳方法是清楚知道自己「已前進多少」。 作者葉禮華在 Google 搜尋品質團隊時,發現用「點擊率(Click-through Rate)」衡量結果好壞並不夠——使用者可能點開連結後馬上跳回(短點擊)。 Google 改採「長點擊(Long Click)」率作為使用者滿意度指標,從此每次實驗都有可靠標尺。 這個指標也催生了人名搜尋分類器、Universal Search 等重要功能。

好的指標能帶來四種價值#

  • 聚焦正確目標:無論是優化前端介面、後端效能或推薦演算法,都能透過指標統一回答「是否提供了更好的體驗?」
  • 防止回退:當註冊率突降或延遲飆升時,指標儀表板能立即捕捉異常
  • 持續推進進步:Box 採用「效能棘輪(Performance Ratcheting)」機制,任何新功能若使延遲超過閾值就不能上線;每次優化又把閾值再壓低,迫使團隊持續進步
  • 衡量槓桿:你過去能做到「每週改善 1%」的指標,就能用來判斷新任務是否值得做——是否高於這個歷史槓桿率?

自問三個問題:

  • 我能否用某種方式衡量正在做的事的進度?
  • 如果這個任務不會改變核心指標,那它還值得做嗎?
  • 或者,是否缺了一個關鍵指標?

慎選指標:刺激正確的行為#

指標具強大引導作用,「些微差異的指標會導致巨大行為差異」。 錯誤指標可能誘發錯誤動機,導致團隊背離真正想要的結果。

常見指標陷阱與修正建議
領域虛榮指標(Vanity)真實指標(Value)關鍵行為轉向
人力管理工時(Hours)每週產出與影響力從「演戲加班」轉向「解決問題」
內容點擊單純點擊數長點擊(Long Click)從「標題黨」轉向「深度內容」
系統效能平均回應時間P95 / P99 Percentile從「優化平均」轉向「消滅長尾延遲」
品質控管修復 Bug 數量未解決 Bug 數量從「刷量」轉向「源頭把關」
用戶成長累計註冊數週成長率從「短期拉新」轉向「長期留存」
用戶活躍每週活躍 (WAU)依註冊週期分群活躍率看不見「長期流失」轉向看到真相
客服效率平均通話時長是否真心解決問題Zappos 故意「不量測」通話時間,造就客服文化

選指標的三個原則#

挑選指標時,要找能同時滿足以下三點的:

  1. 最大化影響力(Maximize Impact):Jim Collins 在《從 A 到 A+》中稱之為「經濟分母(Economic Denominator)」——若只能挑一個指標長期最大化,最能驅動整體成功的是什麼?
  2. 可採取行動(Actionable):指標的變化能被團隊的努力因果性地解釋。Eric Ries 在《精實創業》中把總註冊數、總頁面瀏覽稱作「虛榮指標」,因為它們的變化未必反映團隊真實表現
  3. 既要敏感、也要穩健(Responsive yet Robust):要能快速反映變化(避免月度才看得到結果),但也要排除外部波動造成的雜訊(如用每分鐘平均響應時間會太雜訊,改用每小時或每日就穩定許多)

視覺化儀表板(Instrumentation)#

Twitter 共同創辦人 Jack Dorsey:「Twitter 前兩年我們完全是『盲飛』。我們不知道網路、系統、用戶都怎麼運作的,所以一直當機——因為我們看不見。」

直到工程師開始量測與監控,Twitter 才從常見「失敗鯨魚(Fail Whale)」圖樣的網站,蛻變為 2.4 億用戶可靠服務。

像飛行員一樣,工程師也需要儀表板:

  • 高度計告訴你海拔(核心指標)
  • 姿態指示器告訴你飛機是否水平(系統健康)
  • 垂直速度計告訴你升降率(趨勢方向)

從反例學教訓#

2013 年 HealthCare.gov(歐記健保網站)上線後,前一週只有 1% 的 370 萬註冊者真的成功註冊——其餘人遇到錯誤、逾時、登入問題。 矽谷工程師團隊抵達後,第一件事就是建立儀表板,看清楚使用人數、回應時間、流量分布。 有了能見度後,他們才能加快取得 8 秒降到 2 秒、錯誤率從 6% 壓到 0.5%,最終讓 800 萬美國人成功投保。

Etsy 的「Measure Anything」哲學#

Etsy 每天部署 25 次以上,並奉行「Measure Anything, Measure Everything」原則:

  • Graphite 提供彈性、即時的繪圖
  • StatsD 在程式碼中以一行就定義新的計數器或計時器

只要把指標與部署時間疊在同一張圖上,就能即刻發現是哪次部署造成異常。

監測工具地圖#

監測類別代表工具核心定位適用場景
指標蒐集與彙整StatsD高效聚合器,接收計數器與計時器,減少後端負擔高併發環境下的指標初步處理
時序資料庫GraphiteInfluxDB為時間序列數據設計,支持快速查詢歷史趨勢追蹤 CPU、記憶體、QPS 等指標隨時間變化
集群與基礎設施GangliaNagiosMunin分散式或主機級監控與告警監控大規模集群或主機健康
程式碼效能 (APM)New RelicAppDynamics從資料庫查詢到每一行程式碼執行耗時的深度可視化診斷「為什麼這支 API 這麼慢?」

內化有用的數字(Internalize Useful Numbers)#

Google 院士 Jeff Dean 整理了一份「每個工程師都該記住的延遲數字」,能讓我們不必實際建出系統,就能用「信封背面計算」估出設計的效能特性。

常見延遲數字#

操作延遲
L1 cache 引用0.5 ns
分支預測失敗5 ns
L2 cache 引用7 ns
Mutex lock/unlock100 ns
主記憶體存取100 ns
用 Snappy 壓縮 1 KB10 μs
透過 1 Gbps 網路傳送 2 KB20 μs
從記憶體循序讀 1 MB250 μs
同資料中心 RTT500 μs
磁碟 seek10 ms
從網路循序讀 1 MB10 ms
從磁碟循序讀 1 MB30 ms
加州 → 荷蘭 → 加州封包來回150 ms

估算範例#

若你要建立一個讀多寫少、寫入需落地、讀取走記憶體快取的系統:

  • 寫入磁碟:seek 10 ms ⇒ 每秒最多 100 次寫入
  • 從記憶體讀 1 MB:250 μs ⇒ 每秒可讀 4 GB
  • 假設物件 ≤ 1 MB:每秒可讀 4,000 個物件

結論:讀比寫快約 40 倍,寫入是瓶頸;若要擴展寫入吞吐,應考慮分散到多機器或批次寫入。

除了延遲外,建議手邊隨時備有:日/週/月活躍數、QPS、儲存量、不同服務的吞吐、流量成長率、頁面平均載入時間、流量在裝置/瀏覽器上的分布等。 這些「常駐數字」能讓你迅速判斷某個量測結果是否合理。


對資料完整性保持懷疑#

Google Apps 工程主管 Sam Schillace 從 Google 學到的反直覺教訓:「所有資料都可能被濫用。 人們會用自己想要的方式解讀資料。」

常見誤判:

  • 以相關性當因果性:新介面停留時間變長,是更投入還是看不懂?
  • 共生指標飆升:廣告點擊率上升,是因為搜尋品質下降?
  • 流量爆衝:是真實使用者還是爬蟲機器人?

防禦資料失真的策略#

  • 大量記錄日誌:Netflix 把半結構化日誌丟進 Cassandra,日後再決定哪些有用
  • 及早建立「即時觀察日誌」工具:作者在 Quora 為實驗框架建構即時檢查介面,回收極高
  • 撰寫端對端整合測試:覆蓋整個分析管線,保護日後變更不誤傷
  • 及早檢查資料:別等到分析時才發現幾週的紀錄是錯的
  • 用多種方法計算同一指標交叉驗證:能快速察覺異常
  • 看到不對勁的數字就立刻調查:是 Bug、解讀錯誤,還是真實異常?

有錯誤資料比沒有資料更糟糕——你會自信滿滿地做出錯的決策。


重點摘要(Key Takeaways)#

  • 量測你的進度:沒辦法改進不可量測的事
  • 慎選頂層指標:不同指標會引導出非常不同的行為
  • 儀器化你的系統:複雜度越高,越需要儀表板防止盲飛
  • 記住有用的數字:能快速做信封背面估算,並察覺異常
  • 優先確保資料品質:先建立信任,才能用資料說話