Venkat Subramaniam — Broomfield, Colorado, USA

速度的假象#

軟體專案經理承受著快速交付的巨大壓力。但「快」真的是我們想要的嗎?

想像團隊裡有兩位程式設計師:Bernie 和 Rob。兩人能力相當、領域知識相同,語言技能也不相上下。觀察開發過程,Bernie 完成功能的速度明顯快於 Rob。

  • Bernie 的風格:專注於快速完成程式碼,一路向前衝
  • Rob 的風格:寫完程式後進行重構(refactoring),改善變數與函式命名,拆分成小型模組,並撰寫**測試(tests)**確認每個部分正確運作

若只看完成速度,Bernie 看起來是更好的選擇——但幾週後,情況開始翻轉。

地鼠遊戲(Whack-A-Mole)#

客戶試用後提出修改需求。Rob 負責的功能修改順利,客戶滿意。但 Bernie 負責的功能卻出現問題:

  • 新功能加進去了,但原本正常的功能壞了
  • 修好這個,另一個又壞了
  • 缺陷如地鼠般此起彼伏,永無止境

注意: 這正是「打地鼠(Whack-A-Mole)」開發模式——修一個 bug,另一個隨機冒出來。這種模式令人沮喪、難以預測,嚴重拖累產品開發進度。

可持續進度的真正意義#

Rob 看似較慢,實際上卻創造了更高品質的程式碼:

  • 良好的程式結構讓後續修改快速且可靠
  • 測試提供即時回饋,確認新變更不會破壞其他地方
  • Bernie 是在衝刺,但方向錯了;Rob 的步伐才是真正可持續的

重點: 評估功能開發時間時,不能只算「第一次寫完」的時間。必須把後續的增強、修復、改善一起計入。撰寫高品質程式碼和測試雖是短期成本,卻能帶來長期收益。

該問自己的問題#

你要的是速度(speed),還是可持續的進度(sustainable progress)

技巧: 鼓勵團隊在開發時同步撰寫測試,並定期進行重構。這不是在浪費時間,而是在投資未來的開發速度。


附註:重構(Refactoring) — 在不改變外部行為的前提下,改善程式碼內部結構的過程。目的是讓程式碼更易於維護,並降低未來修改的難度。