軟體開發流派
2008 年 4 月 12 日
對於第 n 次,而且我確定不是最後一次,我滑入了一場關於定義實務、將其中一些標籤為「最佳」,以及可能是 C 字(認證)的對話。這是一場熟悉的討論,儘管我們才剛開始,但我可以預測它將會如何發展。它是由一個非常合理的願望推動的,那就是找出誰是更好的軟體開發人員,以及現有的開發人員如何提升自己的能力。
當人們進入這些對話時,他們通常會陷入困境。不是小組陷入激烈的討論並崩潰,就是小組沒有進行激烈的討論並產生一些被其他人嘲笑的成果。發生這種情況的核心原因,以及我認為短期內不會出現單一、廣泛認可的軟體開發認證計畫的原因,是因為沒有單一、公認的有效軟體開發方式。
相反,我們看到的是一個情況,其中有幾個軟體開發流派,每個流派都有自己的定義和良好實務聲明。作為一個專業,我們需要承認存在多個流派,而且它們對軟體開發的途徑非常不同。不同到一個流派認為是典範的,其他流派會認為是不合格的。此外,我們不知道哪個流派是正確的(部分原因是因為我們無法衡量生產力),儘管每個流派都認為自己是正確的,對其他流派的容忍度也有所不同。
我這裡使用「流派」是按照這個定義的風格
4 a:一群持有共同教義或追隨相同老師的人(如哲學、神學或醫學)<亞里斯多德學派>;也指:此類團體的教義或實踐 b:一群受共同影響的藝術家 c:一群意見或行為相似的人;也指:此類團體的共同意見或行為<其他思想流派>
我從 Context-Driven School of Software Testing(見 James Bach 和 Brett Pettichord)明確地了解到這個概念。我喜歡他們看待這件事的方式,因為它是一個模型,可以解釋為什麼聰明的軟體開發人員會有如此不同的方法。
Context-Driven 的人已經在測試領域中研究了不同的流派,但我不知道有任何好的嘗試可以對軟體開發更廣泛的世界中的流派進行分類。我感覺自己屬於一個流派,對我來說,這個流派植根於我在 90 年代通過 OOPSLA 認識的人。物件導向是這個流派的一個關鍵實務,敏捷方法也是如此。你可以合理地認為這是敏捷流派,除了我認為敏捷方法是這個流派思維的核心組成部分,但不是全部。這個流派中的領導者包括 Ward Cunningham、Ralph Johnson、Kent Beck 和 Robert Martin。Thoughtworks 整體而言是一個遵循這個流派的組織(這就是我感到自在的原因)。
但是,儘管有這種有點連貫的流派意識,但仍然有許多未解決的問題。將敏捷世界視為一個流派還是多個流派(Scrum 和 XP 是不同的流派還是同一流派的一部分)?有哪些主要的流派?究竟是什麼定義了一個思想流派?
對於這些問題,我沒有太多的答案,但要記住的重點是,關於如何有效開發軟體有多種思想流派。我們可能不太重視其他流派,但我們愚蠢地不承認其他流派的存在。