頻率降低難度
2011 年 7 月 28 日
我最喜歡的一句名言是:如果它很痛,就更常做。這句話表面上看起來很荒謬,但深入探討後會發現一些有價值的意義
一個範例情境是整合。大多數程式設計師很早就學到,將自己的工作與他人的工作整合是一件令人沮喪且痛苦的體驗。因此,人類的自然反應是盡可能拖延去做這件事。
然而,問題在於,如果我們能夠繪製整合之間的痛苦與時間,我們會看到類似這樣的圖表

如果你有這種指數關係,那麼如果你更頻繁地執行,你可以大幅減少痛苦。這就是 持續整合 所發生的情況 - 透過每天整合,整合的痛苦幾乎消失殆盡。它確實很痛,所以你更常去做,現在它不再痛了。
在敏捷思維中,這種更頻繁地做痛苦事情的想法經常出現。測試、重構、資料庫遷移、與客戶的對話、規劃、發布 - 各種活動都更頻繁地進行。
是什麼導致了這種效應?我想有三個廣泛的原因。首先,隨著待辦事項的增加,這些任務中的大多數會變得更加困難,但當它們被分解成更小的區塊時,它們很容易組成。資料庫遷移就是一個很好的例子。指定涉及多個資料表的龐大資料庫遷移既困難又容易出錯。但是,如果你一次進行一個小的變更,則更容易讓每個變更都正確。此外,你可以輕鬆地將小的遷移串聯成一個序列。因此,當你將大型遷移分解成一系列小型遷移時,所有這些都變得更容易處理。這就是 資料庫重構 的精髓。
回饋是第二個原因。敏捷思考的重點在於建立回饋迴路,以便我們能更快速地學習。回饋是極限編程的明確價值,也是Ken Schwaber 討論定義的流程控制和經驗流程控制之間差異的核心。在一個複雜的流程中,例如軟體開發,你必須頻繁地檢查你所在的位置並進行修正。為此,你必須尋找每個機會來增加回饋迴路,並增加你獲得回饋的頻率,以便你可以更快速地調整。
第三個原因是實務。對於任何活動,我們在更常執行時都會進步。人們常說,獲得良好手術的關鍵是找到一位經常執行該手術的外科醫生。實務有助於你解決流程中的問題,並讓你更熟悉事情出錯的跡象。如果你反思你正在做的事情,你也可以想出改善實務的方法。軟體也有自動化的潛力。一旦你做過幾次某件事,你就會更容易看出如何自動化它,而且你更有動力自動化它。自動化特別有幫助,因為它可以提高速度並減少錯誤的機會。
因此,每當你面臨一項痛苦的活動時,問問自己這些力量是否適用。如果是這樣,增加頻率可以讓你更有效率,並消除壓力來源。