Granville Miller 暫時放棄需求收集主題,著手討論另一個引人入勝的主題:子整體軟件編程。 讓我們找找這個方法如何補充和擴展靈活開發運動原則,以及它在主流開發界中的出現如何可能改變軟件開發者的教育和軟件開發實踐。
在我早期專欄的結論中,我曾許諾此專欄將會專 門討論靈活開發過程中需求收集的各種方法。然而,當我開始著手那個專欄時,我意識到可能值得從靈活軟件開發這個較大的討論開始。但當我開始著手那個主題時,我發現自己渴望去討論子整體軟件 開發這個相關主題。
這并不奇怪,因為我相信子整體軟件開發是靈活軟件開發的下一步。我對此十分雀躍,我選擇改變 我的路線,并且引入我非常獨特的子整體軟件開發宣言。我們將在下一次返回需求收集這個主題。
靈活軟件開發
靈活軟件開發運動對軟件工程的理論和實踐造成了巨大的沖擊。它的擁護者成功的挑戰和駁斥了實踐 證明的優秀的系統開發準則,并用自己的來代替它們。
運動的基礎在于四個核心價值,在靈活軟件開發宣言中第一次對它們進行了概述 (請參閱本文附后的參考資料連接):
個人和交互優于過程和工具
有用的軟件優于綜合的文檔
客戶合作優于合同協商
對更改作出反應優于遵循計劃
實際上,這些價值標志著對那些受傳統軟件開發方法支持東西的背離。最高目的在于創建一個更有 益于成功的軟件開發環境。的確,靈活運動在軟件開發的歷史上留下了自己的印記。然而,雖然靈活運動具有革命性,但它畢竟只是更復雜更有益的開發實踐的第一步。 子整體軟件開發才是下一步。
過程是第一位嗎?
在工業革命時期,Frederick Winslow Taylor 先生對人的工作方式進行了研究。 他進行了時間和動作的研究,目的在于優化身體技能的使用,有效的創造產品。Taylor
的出名在于他 對效率原則的執著。他著名的引述概括了他對工業時代工人的心情:“過去,人是第一要素,而將來 ,系統很可能會成為第一要素?!?/P>
效率的追隨和系統第一或者說過程第一原則是現在我們稱為質量管理的兩個基本組成部分。 質量管理就是研究和實現那些正確的實現就會提高質量的活動。關鍵詞是正確的實現。這些詞組成了質量管理的安全港灣式表述??梢钥隙ǖ恼f如果您的業務、制造或工程實踐不能提高質量,您 就沒有正確的實現它們。
雖然我不相信軟件開發中存在質量管理危機,但我的確看到了失敗正在我們的行業中產生。這些失 敗往往是過程和技術造成的,理由在于過程沒有被正確實現或技術不成熟。不過我覺得把失敗歸咎于
過程和技術常常是一種逃避。尤其當您考慮 Alistair Cockburn 的斷言 — 在成功的軟件開發中過程 和技術是第二位要素(請參閱本文附后的參考資料連接)的時候。
人是任何軟件開發項目的第一位要素。任何好的第一線管理員知道他或她的小組成員是項目首要和 最有用的資產。一個永遠不會被取代的軟件開發準則是優秀的人編制優秀的軟件。不過,如果這樣的
話,開發項目失敗時,我們該歸咎于人嗎?答案是否定的!
子整體(holon)
我相信,尋找能反映優秀的軟件開發技巧的行為的最佳地方是不太可能的。只有戰場。對于導致單個 士兵取得巨大成功最有用的兩個準則是訓練和主動性。最棒的軍隊允許單個士兵在戰斗期間對于如何達到他們的目標作出決定。許多戰斗勝利是通過許多士兵作為個體思考和行動、同時又作為團隊一起 戰斗而取得。
一個維持自身獨立性、同時又作為整體的部分發揮作用的實體稱為子整體(holon)。 這個術語是 Arthur Koestler
通過把詞整體(holos 或者說“the whole”)和部分 (on 或者說“the part”)相結合而發明。子整體曾用于描述社會、細胞和組織的行為,還有最近的
制造行為。我相信子整體的(holonic)行為是軟件開發者實際的并且很可能是理想的工作方式。
事實是,在開發軟件時,我們繼續遵循了 Frederick Winslow Taylor 的思想。時間和動作的研究提出了學術上軟件工程周期的令人驚異的規律。然而,軟件開發,
就像信息時代許多其它要素一樣,已經和時間和動作無關了。與之相關的是創造、革新和人。
對于軟件開發,我們繼承了工業時代誕生的思想 — 死守著基于制造業的裝配線生產的思路和環境 。在這個環境中,個人是成不了氣候的。 他沒有授權制造變革,也因此在要求變革的生命周期(軟件開發周期)失敗時,不該歸咎于他?;蛟S,是時候停止把過程和技術作為第一位要素了,讓真正的第一位要素 — 人 — 作為中心。
子整體軟件開發
軟件工程是一種手藝。它需要運用智慧。它的準則很復雜且需要知識。 最好的準則仍處于開發狀態。因為軟件工程領域如此廣博,沒有哪個人可以完全“掌握”它。還因為這一領域在不斷發展,知識的保持需要不斷努力和學習。
如果您是個優秀的開發者、建模者或管理員,您該知道我的意思。您曾面對多種技巧,然后例行公 事的選出一種用于工作的最好的技巧。您在危機中調整并設法找出一種解決方案。您使子整體具體化。您需要一個在任何給定時刻指定您接著該做什么的軟件開發過程嗎?根本不需要。
真正的子整體軟件開發組織承認不同的人有不同的思維方式。有些人的思維方式是抽象的、其他人 是具體的;有些人是戰略上的計劃者,其他人則以行動為取向。子整體組織使用的技術使人們在選擇
完最佳工作方法的同時共同工作。這些組織允許人們用他們發現的最佳方法工作。簡言之,子整體軟 件開發要求不斷的學習和個體適應。它鼓勵差異。
培訓模型
我作出這些警告的斷言 — 我們的培訓沒有像它應該的那樣成熟。與之相比,士兵的訓練可以回溯到 幾千年前(最保守估計)。它已經發展成熟了許多個世紀。新的技術改變了我們作戰的一些方法。但
戰爭的很多基本模式沒有因技術的改變而改變,士兵的訓練也是如此。在我們接納技術上的改變時, 還要適應這些永恒的教訓。
有效戰斗訓練的一半是提供士兵一個可供選擇的戰役戰術庫。另一半涉及到教它們隨著訓練創造出 自己的戰術。 同樣,我要鄭重宣布軟件開發者有效教育的一半在于知識和技能的獲得。另一半在于學習對變化進行處理、在不斷變化的領域中快速前進。簡言之,去革新。
沒有安全網的軟件開發
原文轉自:http://www.anti-gravitydesign.com