2024.10.22(程式設計師的修煉之道)

xxc666發表於2024-10-26

要是我們真能這樣控制質量就好了。但現實世界不會讓我們生產出太多真正完美的產品,尤其是完全沒有Bug的軟體。時間、技術、急躁合力對抗著我們。然而,莫要太沮喪。如《IEEE軟體》雜誌上一篇由愛德華·尤登寫的文章《夠好即可的軟體就是最好的》[You95]所述,你能訓練自己寫出夠好即可的軟體—對使用者、未來的維護者來說夠好即可,只要好的程度能讓你自己內心平靜就可以。你會發現,你變得更有效率,使用者也更快樂。而且,可能讓你更開心的是,更短的孵化期促使你的程式實際上更好了。在進一步討論之前,我們需要對將要討論的內容做一些限定。​“夠好即可”這個詞並不意味著草率或糟糕的程式碼。所有系統必須達到使用者的需求才算完成,需要達到基本的效能、隱私和安全標準。你做的東西,從使用者需求角度來說是否足夠好?最好還是留給使用者一個機會,讓他們能親自參與評判。
將質量要求視為需求問題人們經常會遇到需要權衡利弊的情況。令人驚訝的是,許多使用者寧願今天就用上一個毛糙的軟體,也不願意多等上一年再用那個打磨光亮、功能齊備的版本(而且,實際上他們一年後真正需要的東西可能完全不同)​。許多預算緊張的IT部門會同意這樣的說法。與構想中的明天那個完美的軟體相比,今天就還不錯的軟體通常更討人喜歡。如果你早點給使用者一點東西玩,他們的反饋常常能引領你做出更好的最終方案(參見第51頁的話題12:曳光彈)​。知道何時止步在某些方面,程式設計就像繪畫。你從一張空白的畫布開始,只有一些非常基礎的原料。你糅合了科學、藝術、工藝手段來決定用這些原料做點什麼。你勾勒出一個整體的形狀,繪製出潛在的基調,然後再裝點細節。你不斷地帶著批判的眼光回顧自己已完成的部分。你會時不時地扔掉一張畫布,然後重新開始。不過藝術家會告訴你,如果你不知道什麼時候該停止,那麼所有的努力就都白費了。如果你不斷地一層疊一層,細節蓋細節,繪畫將迷失在顏料中。不要讓過度的修飾和精煉侵蝕掉一個完好的程式。繼續前行,讓程式碼在它該有的位置駐留一段時間。它或許並不完美,不要緊的—它就算永不完美也沒關係。​
知識組合我們可以將程式設計師所瞭解的一切有關計算過程的事實、工作的應用領域,以及所有經驗,視為他們擁有的知識組合。管理知識組合和管理金融投資組合非常的類似:1.正規投資者有定期投資的習慣。2.多樣化是長線成功的關鍵。3.聰明的投資者會平衡保守型和高風險高回報型投資的組合。4.投資者用低買高賣來獲得最大的回報。5.應定期審查和重新平衡投資組合。要想事業成功,你必須用同樣的指導方針管理你的知識組合。好訊息是,管理這類投資是一項技能,就像其他技能一樣—可以學會。訣竅是讓自己一開始就這樣做,並養成習慣。制定一個你能遵循的例行規程,照此去做,直到大腦將其內化。做到這個程度後,你會發現自己會自動吸收新知識。

相關文章