精益原則
軟件開發總是從其它學科中借鑒管理思路。最早的軟件工程從土木工程中借鑒經驗,但是后來人們發現建筑和軟件開發有很大的差異性。故而新的軟件開發方式開始興起,其中就包括了XP方法論。同樣的,新的軟件開發方式仍然在理論上尋找立足點,這一次眾人的焦點落在了現代管理理念上。土木工程管理的一個很大的問題就在于忽視了人的作用,而現代的管理理念將人的作用提到了一個新的高度,這和新興的軟件開發思想是相同的。而對軟件開發思路影響最大的,應該算是豐田公司提出的精益生產(Lean Production)的概念。
二戰后的美國,以福特公司為首的汽車制造公司在大肆提倡規模制造(Mass Prodution)的同時,東方的日本,豐田英二等人在考察了美國的制造思路之后,認為美國的制造方式不適合日本,提出了自己的精益制造(Lean Production)的思路,精益制造成就了一代霸主-豐田公司,豐田的制造方式被人稱為TPS(Toyota Production System)。豐田公司的豐田英二和大野耐一等人進行了一系列的探索和實驗,根據日本的國情,提出了一系列改進生產的方法:及時制生產、全面質量管理、并行工程,逐步創立了獨特的多品種、小批量、高質量、低消耗的生產方式。這些方法經過30多年的實踐,形成了完整的"豐田生產方式",幫助汽車工業的后來者日本超過了汽車強國美國,產量達到1300萬輛,占到世界汽車總量的30%以上。
回顧這段歷史,和軟件開發的歷史何其相似。大規模制造理論認為,一定程度的浪費,一定程度的廢品是正常的,允許的。而在軟件開發中,浪費、成本居高不下也同樣成為阻止軟件開發邁向工程化的一大障礙。像XP這樣的敏捷方法從精益制造的思路中吸取了很多的優秀思想,例如,不斷改進質量,設計決策應該交給最貼近生產的人員,根據客戶的需求來推動生產。雖然我們一直在強調軟件開發和制造行業截然不同,但是,處于變革的十字路口的軟件開發行業,總是不斷的從其它的行業中尋找可借鑒的理論。這種借鑒來的思路就被稱為精益編程(Lean Programming)。精益編程的思路包括:
強化學習,鼓勵改進。軟件開發是一個不斷發現問題,不斷解決問題的過程。而學習能力的強化,能夠令軟件開發工作不斷的獲得改進。
延遲決策。軟件開發如果工作在一個不確定的環境中,變化性會對軟件開發本身造成傷害。延遲決策,當環境變得逐漸清晰之后,才有充足的理由來進行決策。而對軟件設計而言,如何構建一個可支持變化的系統則成為關鍵的問題。
盡快交付。自從互聯網流行之后,速度成為了商業中的至關重要的因素,從而直接影響