Dan North談誤導的藝術
Dan North 最近發表文章《 誤導的藝術》,著重討論了 機會成本的影響。機會成本通俗地來說是指你針對某個情況作出來一個選擇,然而有時候,可能還有一個更好的選擇被放棄了。特別對于軟件工程師而言,機會成本是個不得不說的故事,畢竟在每天的工作中,他們需要不斷做出各種決定。
Dan 認為,軟件工程師在工作中總是面臨著很高的機會成本。為了證明他的觀點,他提議做一個試驗:
試一下這個試驗:想一個你在開發軟件的時候會用到的技術或者實踐,或者就那個你最喜歡的實踐吧,容易吧?好吧,第一步:你為什么用它?有什么好處呢?可能你想到了一些答案,那么就先寫下來。現在,第二步:如果你不用那個技術或者實踐,有哪些別的可供選擇的方案嗎?也請寫下來,并且列出每一個的優缺點。
Dan 以那個在他看來是他遇到過的最被盲目推崇的實踐之一:TDD (測試驅動開發)為例進行了闡述。
Dan 認為,倡導 TDD 的那些理由,諸如為了系統穩定和應對變化,涌現式設計,自動化測試以及測試即文檔等,背后也有著機會成本。比如,對于財務交易系統那一塊而言,使用一些草圖來理解系統可能會很有用,而不需要可能會導致很高成本的 TDD 了。至于涌現式設計,TDD 就像在查找最大值,然而尋找最佳的解決方案可能需要徹底的重新思考。而測試即文檔則說不定會導致很多不必要的不同聲音,反而讓人搞不清真正有用的文檔在哪里。
Dan 最后總結了他的文章并且建議:
所以不要被表面利益所迷惑,在你做每個決定的時候,都要好好權衡機會成本,因為不管你看得到還是看不到,機會成本都在那里,不多不少。但如果你能學會識別這些,你也能更上一層樓。
有些讀者同意 Dan 的觀點。Gene Hughson 解釋道:
很棒的文章。嘗試任何事情,不管是新技術還是技巧,如果不去考慮成本和收益,那么將是個災難。
然而,也有些讀者有著不同的意見。比如,Sam Weisen 就在他的評論中提到,Dan 的文章這樣去討論 TDD 是有失公允的。
我恐怕不得不說,你誤解了 TDD,你對 TDD 的攻擊是毫無意義的。你的有些觀點可能不錯,但淹沒在你的長篇大論之中。
Liz Keogh 則支持 Dan 的觀點和提議,他覺得敏捷開發的信徒們應該更加開發地去聆聽別的意見:
我發現評論中的很多人都犯了“不是真正的蘇格蘭人(No True Scotsman)”的謬誤,也就是說如果某個事物對某人不起作用,那么一定是那個人用錯了。我在一些敏捷博客中也都發現過這種情況,特別是提到 TDD 和 Scrum 的時候。其實很多情況下,TDD 并不是最合適的選擇,比如統計工時的程序、修改一個緊急的產品缺陷。當然也有不少情況,TDD 還是比較合適的,但也不是最佳選擇之一。
看來很難讓每一個人都贊同 Dan 的觀點,特別是有關于 TDD 的,那么也可以此為契機從另一個角度來審視這個問題。Justin 就提到:
謝謝你讓我們看到、思考這些盲點:這篇文章迫使你走出你的思維定式,重新審視你的想法。我相信,很多成功的團隊都是一步步從那些方法和實踐集中提取部分內容,組成自己的方法,從而構建一支高效的團隊。
查看英文原文:Dan North Discusses The Art Of Misdirection