Scott Davis — Broomfield, Colorado, USA

微波爐的啟示#

作者說自己的微波爐實際上只用一個按鍵:「加一分鐘」。煮開水按三下,融化起司按一下,加熱薄餅則按下後 15 秒開門——就這樣。

但他的微波爐實際上有許多從未用過的功能。為什麼?因為設計委員會偏好複雜性,並把它美化成「功能豐富(feature-rich)」。

沒有人一開始就想做出不必要的複雜產品。複雜性是在不注意時偷偷滋生的。

複雜度放大器 vs. 複雜度吸收器#

以 Amazon 的「一鍵購買(one-click purchase)」為例——用戶只需點擊一次,背後的複雜邏輯全由系統承擔。

軟體本質上處理複雜問題。真正的問題是:你把多少複雜性轉嫁給了使用者?

  • 複雜度放大器:將問題的複雜性傳遞給使用者,讓他們負擔
  • 複雜度吸收器(complexity sink):代替使用者承受問題的複雜性

重點: 優秀的軟體是複雜度吸收器——它替使用者扛下問題的複雜性,而不是把它轉嫁出去。

專案經理也是複雜度吸收器#

身為軟體專案經理,你同樣需要在各方之間扮演複雜度吸收器的角色:

  • 當使用者提出看似矛盾的需求,你的工作是協助釐清,而不是原封不動丟給開發人員
  • 當開發人員以晦澀的技術理由說某個需求無法實現,你的工作是轉化這個複雜性,給使用者足夠的資訊,引導他們選擇替代方案

值得不斷自問的問題#

  • 你的應用程式使用起來有多容易?
  • 新增一個功能有多容易?
  • 回報一個 bug 有多容易?
  • 部署新版本、回滾壞版本有多容易?

技巧: 簡潔不會自然發生,需要主動經營。複雜性是你不注意時自然滋生的東西——必須有意識地抵制它。

補充: 複雜性往往藏在「功能豐富」的美好說辭背後。在評估每一個新功能時,先問:「這真的是使用者需要的,還是我們覺得應該有的?」