Striving to better, oft we mar what’s well.
— Shakespeare, King Lear 1.4

核心概念#

現實世界不會讓我們生產出真正完美的東西,特別是無 bug 的軟體。
時間、技術和性格都在跟我們作對。

然而,這不必令人沮喪。你可以訓練自己寫出夠好的軟體——
對你的用戶夠好、對未來的維護者夠好、對你自己的心理平衡也夠好。

你會發現你更有生產力,你的用戶更快樂,而且你的程式可能因為更短的孵化期而實際上更好。

「夠好」不代表草率或低品質的程式碼。
所有系統都必須滿足用戶的需求、符合基本的效能、隱私和安全標準。

我們只是提倡讓用戶有機會參與決定,什麼時候你生產的東西對他們的需求來說已經夠好了。

讓用戶參與品質取捨#

通常你是在為其他人寫軟體。你會記得了解他們想要什麼,但你有沒有問過他們想要軟體多好

有時沒有選擇——心律調節器、自動駕駛或廣泛使用的底層函式庫,要求會更嚴格。
但如果你在做一個全新產品,你會有不同的限制:行銷承諾、用戶的交付計畫、公司的現金流壓力。

Tip 8 - Make Quality a Requirements Issue(讓品質成為需求問題)

你生產系統的範圍和品質應作為系統需求的一部分來討論。

令人驚訝的是,許多用戶寧願用今天有些粗糙邊緣的軟體,也不願等一年才能拿到閃亮完美的版本。
如果早期給用戶一些東西試用,他們的回饋通常會引導你到更好方案(參見 Topic 12,曳光彈)。

知道何時停止#

某些方面,程式設計就像繪畫。你從一張空白畫布開始,用科學、藝術和工藝的結合決定該做什麼。
你畫出大致形狀,然後填入細節。你不斷用批判眼光審視你完成的東西。

但藝術家會告訴你,如果不知何時停止,所有的辛苦工作都會被毀。
如果你一層又一層地添加細節,畫作就會消失在顏料中

技巧:
不要用過度修飾和精煉毀掉一個完美好程式。

繼續前進,讓程式碼暫時保持原樣。
它可能不完美——別擔心,它永遠不可能完美。

相關章節#

  • Topic 45,需求之坑
  • Topic 46,解決不可能的謎題