我常常聽到這樣的觀點:敏捷軟件開發并不是真正的革命性的方法,它所采用的技術大多都是古已有之的。比如迭代,你看很哪本軟件工程的教科書上沒有提到迭代開發呢?在比如說User Story,看上去也不只不過是Use Case的翻版而已吧!甚至我看RUP也和敏捷方法沒有太大的區別吧!
要我說,這些人要么是不真的了解敏捷開發,沒有認識到敏捷開發的革命性,只是用外在的形式來把它和其他方法進行了比較。有又或者是實施敏捷方法的時候不徹底,所以四處碰壁以至于搞起了修正主義。最可怕的就是某些大公司,看敏捷火了,總有包裝一下,到底還是要賣產品。敏捷軟件開發就是一個革命性的方法,只不過它要顛覆的不僅僅是低質量的軟件開發方式,更重要的是,它要顛覆軟件生產企業和軟件的使用企業之間的生產關系!!這一點在敏捷宣言里寫得再明白不過了

Customer collaboration over Contract negotiation

敏捷軟件開發,就是要以一種更合理的共贏的合作關系,代替以前畸形的采購式的合約關系。為什么合約關系就是畸形的?我們來看看合約雙方的處境。

首先軟件團隊方面承擔了過多的風險:業務變化,改代碼!!商業抉擇轉換,改代碼!!憑啥你甲方的緣故非要我承擔額外的成本?你說我冤不冤?冤!但是人家甲方也冤!!人家花了大把的銀子,拿到一堆不能用的軟件(你要是硬件人家還能轉手賣點錢),就像你要砍樹別人給你把鏟子,你要種樹人家給了你把鋸。擱你,你也不愿意。且不說博弈,就算雙方都有心把事情做好,按合同來,甲方不干;不按合同來,乙方不干,最后變成“有心殺賊無力回天”,大家一起扯扯皮等二期算了。lose-lose,沒有贏家。

那么合作的關系是什么呢?合作的關系就好比你去subway買三明治,面包你自己選,要什么肉你來挑,蔬菜,cheese,醬汁你也自己看著辦。技術我來,口味你選。技術失敗我負責,口味不合適你負責。你做你的強項我來我的強項,最終大家高高興興嘻嘻哈哈不吵不鬧,作出一頓可口午餐。這是時候,生產關系變了,我不是你的冷冰冰的供應商,你也不是我邪惡的客戶,我們是拴在一根繩子上的螞蚱。成功是我們的,失敗也是我們的。榮辱與共,攜手并肩。聽著有點耳熟?沒錯,SaaS。敏捷宣言早就說了,CoC啊。從供應商變成服務商,從服務商變成戰略合作伙伴,這是在給軟件企業指出路,新的生產關系已經盡在其中了。

如果看不清敏捷的這個根本革命點,以為還是開發方法的小打小鬧,那么敏捷根本實施不成。這話一般我不敢說的,程序員自發實施敏捷,只在一種情況下可能成功:大企業的IT部門。再趕上個強力的IT領導,自家人嘛,有什么不好談的。一來二去,就成功了(看看C3,說白了不就是IT部門和業務部門?)但是,如果是做項目的公司,你營銷手段不改變,敏捷就不可能成功。你的客戶跟你不是合作關系,你通過敏捷增加質量(符合性質量)的工作就不會被人可,那么就不能成為投資,只能是成本。當成本增加到不可承擔的時候,敏捷就不了了之了。為什么好多人說老板沒有響應?舊的生產關系下敏捷根本就是負擔。

說道這里,說一下以敏捷聞名的ThoughtWorks。其實很多人都以為ThougtWorks只有方法論咨詢,沒錯我們是有方法論咨詢,但是也有業務模式咨詢,客戶業務模式不改變,他怎么能徹底敏捷?這點大家不可不查啊。