David Wood, Software Engineer — Fredericksburg, Virginia, USA

完美球體的謬誤#

想像一顆被製造成完美球形的球,從各個角度測量直徑都精確無誤,被打磨再打磨直到零缺陷。一旦達到完美,它就再也不能被改動。

這就是**「大圓球謬誤」(The Fallacy of the Big Round Ball)**——誤以為軟體系統的需求在交付後不會顯著改變,或者更糟的是,認為需求可以被完全掌控。

現實中,沒有任何軟體專案像這顆球一樣。

需求為何必然改變#

軟體的生命週期充滿變動:

  • 初期基於需求做出的設計決策,在新需求出現後往往顯得侷限
  • 為了適應新需求而引入的修補(hacks)會破壞原有設計,使程式碼越來越難以維護
  • 那顆原本渾圓的球,最終變得傷痕累累

注意: 早期軟體工程研究者曾相信,只要在編碼前完全理解需求,就能消除維護危機。部分人甚至主張限制使用者提出變更需求的權利。這種做法適得其反,導致 1990 年代 IT 部門與用戶嚴重疏離。

需求改變有兩個根本原因:

  1. 可以改變:軟體是可塑的媒介,修改軟體通常遠比修改硬體更具成本效益
  2. 必須改變:用戶存在於競爭環境中,他們需要不斷調整軟體以獲取新的競爭優勢,而軟體的靈活性正是最大的誘因

擁抱變化,而非對抗#

重點: 一旦我們放棄「大圓球謬誤」,就能將需求的可變性視為優勢,而非威脅。需求會改變,程式碼需要維護,新需求會打破舊設計——這是特性(feature),不是缺陷(bug)

要設計出真正具有適應性的軟體,必須先調整思維框架,將以下三點作為每個新專案的基石:

特質說明
適應性(Adaptability)系統能夠回應變化而不崩潰
設計彈性(Flexibility of design)架構預留擴展空間
變更準備度(Readiness for change)流程與文化都為變更做好準備

補充: 軟體的可塑性是其最大的優勢。善用這個特性,而不是試圖壓制它,才是現代專案管理的正確心態。