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,解決不可能的謎題