| 2004 年 10 月 15 日 來(lái)自于Rational Edge:此專(zhuān)欄追蹤敏捷軟件開(kāi)發(fā)的增長(cháng)和發(fā)展,主要是通過(guò)查看關(guān)注于XP和敏捷開(kāi)發(fā)的研討會(huì )的參加者、會(huì )議和討論。 ![]() 在過(guò)去幾年里,我一直關(guān)注敏捷軟件的發(fā)展,從其幼年期到成年期,伴隨著(zhù)笑聲、淚水進(jìn)行奮斗,有時(shí)會(huì )有一種恐懼的感覺(jué)。盡管我已經(jīng)看到了敏捷實(shí)踐上的價(jià)值,但我還不是一個(gè)早期的采納者--我通常是只有在風(fēng)險和利害關(guān)系較低時(shí)的一個(gè)角色?,F在,我已經(jīng)相信這些實(shí)踐在軟件工程師的工具包中有了一個(gè)適當的位置;如果得到正確的使用,他們可以幫助團隊更加優(yōu)秀。要將一個(gè)敏捷的過(guò)程應用到一個(gè)重要的、高風(fēng)險的項目上,如果項目和過(guò)程匹配得很好,我已經(jīng)變得越來(lái)越不困難了。本專(zhuān)欄描述了我考慮這種方式的原因,記錄了從早些年來(lái)通過(guò)最新的(和最近的)XP/敏捷領(lǐng)域的研討會(huì )上的敏捷活動(dòng)中的變化。 我的第一個(gè)敏捷研討會(huì ),XP2001,是在Sardinia與好幾百參與者一起召開(kāi)的。我們中的許多人來(lái)到那里,了解了“敏捷事物”都是關(guān)于什么。我已經(jīng)讀了關(guān)于極限編程(XP)的許多書(shū)和文章,但是還沒(méi)有接觸過(guò)使用過(guò)XP的任何人。 在那時(shí),XP和敏捷活動(dòng)有一群差不多類(lèi)似下面的信徒--他們使用一些可笑的縮寫(xiě)詞,如YAGNI和DTSTTCPW。 1 我一直在等待有人向我說(shuō)明這個(gè)神秘符號。盡管一些軟件開(kāi)發(fā)中的舊的守護者用類(lèi)似的事物來(lái)談?wù)撁艚莘椒ㄕ?,但通常它都是作為一種將被忽略的瘋狂想法被摒棄掉了。 許多XP2001的參與人是咨詢(xún)者,他們討論將XP出售給客戶(hù)組織的工作和他們碰到的問(wèn)題。有些人討論有關(guān)提升XP用于大的項目,但是還沒(méi)有人證明它可以以小的配置重復地工作。這些咨詢(xún)者都是非常聰明的、受人尊重的人,包括Kent Beck、Martin Fowler和Robert Martin。這些人很了解如何構建軟件。他們中的一個(gè)人,Heck,寫(xiě)了一本流行的有關(guān)UML的書(shū)。 2 因此我認為他們值得聽(tīng)聽(tīng)。 我離開(kāi)研討會(huì )時(shí),對敏捷和XP有了一個(gè)比較好的理解,盡管還不完全。我知道你可以在某些軟件開(kāi)發(fā)項目上有效地使用XP。我也明白你不需要使用所有的XP實(shí)踐,或者按照一種傳統的方式使用它們,以得到一些益處。事實(shí)上,我多年以來(lái)使用過(guò)幾種實(shí)踐,用一種方式或另一種方式。并且我清晰地看到,XP與Rational統一過(guò)程,RUP,有很多相同的東西。 3 第二年,XP/敏捷領(lǐng)域研討會(huì )在芝加哥的郊區召開(kāi)。研討會(huì )再次吸引了許多咨詢(xún)者,他們中的一些人是會(huì )議發(fā)起人。在那時(shí),Rational軟件公司是敏捷聯(lián)盟的一個(gè)成員;Grady Booch代表公司,并且我們出席了此次研討會(huì )。盡管Rational仍然看起來(lái)像一個(gè)局外人,但是它正在團體中形成聯(lián)盟,并從中學(xué)習。這個(gè)研討會(huì )也吸引了一些著(zhù)名的學(xué)術(shù)和研究團體成員。南加利福尼亞大學(xué)的Barry Boehm(以COCOMO和螺旋生命周期聞名的Barry Boehm)提交了一個(gè)主旨,并且Watts Humphrey,在軟件工程組織的能力成熟度模型(CMM)發(fā)展中的一個(gè)關(guān)鍵人物,提交了另外一個(gè)。 在他的談話(huà)中,Boehm說(shuō)他認為敏捷運動(dòng)對于產(chǎn)業(yè)是一股新鮮空氣的氣息。這個(gè)簡(jiǎn)單的陳述包含著(zhù)敏捷運動(dòng)的許多內容;它打開(kāi)了與不同的敏捷相關(guān)問(wèn)題集對話(huà)的方式。盡管堅定的追隨者仍然不愿意承認XP不是一個(gè)銀彈,但有些表現為更適度的位置。Humphrey的談話(huà)甚至激起了更激烈的辯論。他談?wù)摿硕攘?,為對?huà)引入了一種工程和控制觀(guān)點(diǎn),并最終培養了更多思想啟發(fā)。 在研討會(huì )上的經(jīng)驗式的專(zhuān)題會(huì )議上,許多參與者,大多數是來(lái)自學(xué)術(shù)界,一些來(lái)自產(chǎn)業(yè)界,表達了收集數據和進(jìn)行試驗的興趣,以幫助確定敏捷方法的效力。在這之前,Laurie Williams在有關(guān)配對編程的有效性方面的度量工作是我們唯一看到的有關(guān)敏捷方法上的研究。她的結果說(shuō)明配對編程是有益的,但是需要更多的數據以證實(shí)她的決定。許多人看起來(lái)都很熱心于收集有關(guān)于此的數據和其它流行的敏捷實(shí)踐。 4 在下一次的XP/敏捷領(lǐng)域研討會(huì )于2003年8月在新奧爾良召開(kāi)時(shí),出席的人數下降了。經(jīng)濟萎靡不振,并且此研討會(huì )之前不久在猶他州召開(kāi)了敏捷開(kāi)發(fā)研討會(huì ),吸引了否則可能要到新奧爾良的參與者。我也發(fā)現這個(gè)研討會(huì )是令人氣餒的;看起來(lái)就像是自上次會(huì )議后沒(méi)發(fā)生過(guò)什么,而上次會(huì )議喚起了敏捷方法傳播的希望。但是方法學(xué)似乎仍然是咨詢(xún)者的領(lǐng)域,他們互相慶賀另一年將敏捷帶給了大眾。盡管有像Ivar Jacobson這樣人的關(guān)鍵提示,他們注意到有多少敏捷原理在XP出現很久之前就已經(jīng)有了,在我看起來(lái),這個(gè)社團沒(méi)有得到多少進(jìn)展。 然而,更多的公司--包括微軟--派出了代表,并且這種經(jīng)驗式的研討會(huì )也有可取之處。我們討論很多實(shí)踐,包括了加拿大國家研究委員會(huì )的Hakan Erdogmus的一項實(shí)踐。在一項實(shí)踐中,他顯示了確定首先測試編程或TFP的效率的趨勢。 5 他得到了與我的學(xué)生在一次實(shí)驗中所得到的比較相似的結果,那次實(shí)驗是在我的軟件工程實(shí)踐課中進(jìn)行的。TFP看起來(lái)改進(jìn)了代碼質(zhì)量,但是結果從統計上看并不足以支持對此效果的確信。Erdogmus告訴我們,需要更多的實(shí)驗才能確證他的發(fā)現。 在這次研討會(huì )上的教育家的對話(huà)也很平常。我將要轉到學(xué)術(shù)界上,想找出哪些教育家正在他們的課程中進(jìn)行敏捷方法。據許多報告,他們正在嘗試許多不同的方法將方法引入到他們的課程中,但是要這樣做他們不得不將一些東西從課程中砍掉。 在研討會(huì )后,我認識到缺少了什么。我們有大量的咨詢(xún)者和學(xué)院派,但是卻很少有真正使用XP和敏捷方法的用戶(hù)。一個(gè)值得注意的顯著(zhù)的例外是實(shí)施和維護Saber航線(xiàn)預定軟件的公司的一位副總裁。他報告說(shuō),他的團隊已經(jīng)成功使用了XP,但很少有用戶(hù)往前進(jìn)一步。我想知道,這些方法真正影響到商業(yè)環(huán)境了嗎?
今年,我得到了答案。XP/Agile Universe2004,第四次XP/敏捷領(lǐng)域研討會(huì ),于8月在加拿大Alberta的卡爾加里市召開(kāi)。(另兩個(gè)研討會(huì )集中在敏捷開(kāi)發(fā)上--XP200n, 6 最早從2000年在歐洲召開(kāi),以及敏捷開(kāi)發(fā)研討會(huì )開(kāi)始于2003年--也在今年召開(kāi)了)。 在這次研討會(huì )上,很明顯,敏捷時(shí)代正在來(lái)臨。首先,事情有了一個(gè)不同的感覺(jué),因為它包括了許多用戶(hù)-看到的所有論文的四分之一都來(lái)自用戶(hù)。也有更多學(xué)院派(一半論文),并且很多都工作在重要的問(wèn)題和想法上,這些將會(huì )影響方法論的未來(lái)。 在一個(gè)有關(guān)腳本化Web測試的指南中,我的合作伙伴是一個(gè)來(lái)自華盛頓公司的IT部門(mén)的質(zhì)量工程師。用戶(hù)們在會(huì )議中大聲地談?wù)?,?wèn)了很多好的問(wèn)題,并想知道他們如何改進(jìn)他們的組織。他們清楚地感覺(jué)到,敏捷和XP不是他們曾經(jīng)所認為的那么極端。 今年的研討會(huì )的另一個(gè)值得注意的特點(diǎn)是,咨詢(xún)者和專(zhuān)家更多地是在幕后;許多呈現者都是新參加討論會(huì )的,并帶來(lái)了許多新的思想。Kent Beck,Martin Fowler,Ward Cunningham,以及其他老資格的人都沒(méi)有出席。但是,研討會(huì )興旺起來(lái)了。 依我來(lái)看,經(jīng)驗式的研討會(huì )是最能夠給人深刻印象的指示器,這次的事情是不同的。我們有超過(guò)二十個(gè)的參與者,他們中的十三位都是真正的軟件開(kāi)發(fā)專(zhuān)家!我們集中在度量什么以及什么對度量是重要的上面。我們分成了兩個(gè)組,我們分別關(guān)注哪些度量對商業(yè)和實(shí)踐者是重要的。我們的目標是非常雄偉的。我們希望不只是確定我們應當度量的東西,還應當確定我們應當如何度量和分析數據,以及哪些種類(lèi)的實(shí)驗是最合適的。研討會(huì )的結果將馬上被貼出來(lái),并且我將會(huì )在將來(lái)的專(zhuān)欄中包含他們的鏈接。 另一個(gè)有益的跡象是,研討會(huì )比往年吸引了軟件開(kāi)發(fā)團體的更廣泛的領(lǐng)域。進(jìn)行了其它過(guò)程的討論,如RUP和DSDM(動(dòng)態(tài)系統開(kāi)發(fā)方法)。Philippe Kruchten,他在RUP的發(fā)展方面很有影響力,并且現在在Vancouver的大不列顛哥倫比亞大學(xué)授課,提議了一個(gè)有關(guān)XP中體系構架角色的討論,以及在Open Space區域中的其它敏捷方法。 7 參加此次研討會(huì )的大多數人看起來(lái)都認為,體系構架應該單獨進(jìn)行構建,特別是在大的項目中。然而,有少數人爭論說(shuō),體系構架只是在你關(guān)注XP實(shí)踐時(shí)自然而然地進(jìn)行發(fā)展。 在整個(gè)研討會(huì )中,都是參與者之間的有益辯論和對話(huà)。Mary Poppendieck談?wù)摿松鐖F為了跨越分歧而討論主要方面應當關(guān)注哪些內容。她談到,關(guān)鍵是要獲取好的用戶(hù)參考。早期沒(méi)有采用的組織將會(huì )做出一個(gè)采購決定,該決定是基于在他們的地區中一直使用一個(gè)產(chǎn)品的其它組織有多成功,而不管其它數據銷(xiāo)售商可能展現了什么。 與Mary Poppendieck形成對比的是,Craig Larman主張,收集有關(guān)實(shí)踐有效性的實(shí)際數據是獲得更多用戶(hù)的關(guān)鍵。依我來(lái)看,她結束時(shí)的主要講話(huà)是研討會(huì )的重點(diǎn)。他談?wù)摿嗣艚葸^(guò)程的“歷史和根據”,回顧了瀑布模型,螺旋模型,以及DoD的 8 2167和2167A生命周期模型。他仔細地看了一下像Winston Royce這樣人的想法如何被誤解了,以及Royce后來(lái)是如何由于將瀑布模型強行用于產(chǎn)業(yè)界而受到了不公正的懲罰。Craig指出了一些人們被錯誤引用的詳細地方,導致了多年的誤解和錯誤傳播。 真正使得他的談話(huà)那么重要的是他沒(méi)有同樣地去推動(dòng)敏捷。他真正關(guān)心的是人們成為高質(zhì)量軟件的有效開(kāi)發(fā)人員;敏捷實(shí)踐只是工具包中的工具。他的主要觀(guān)點(diǎn)是,隱藏在敏捷后面的許多概念已經(jīng)存在了一段時(shí)間了,現在我們正在重新發(fā)現它們--即使許多人在這些年里迷了路。
一個(gè)成熟的XP將會(huì )導致更寬廣的過(guò)程采用 我前面提及到,XP/Agile Universe 2004是最新的XP/敏捷領(lǐng)域研討會(huì )。這是好的。下一年,它將會(huì )與敏捷開(kāi)發(fā)研討會(huì )合并,成為敏捷方法方面的主要研討會(huì )。讓兩個(gè)研討會(huì )分開(kāi)會(huì )傷害敏捷活動(dòng)。許多人承認這一點(diǎn),但是還需要花時(shí)間將所有會(huì )議匯集在一起,形成一個(gè)單一的研討會(huì )。 明年我會(huì )有兩個(gè)預測。首先,敏捷實(shí)踐的使用將會(huì )有一個(gè)非常顯著(zhù)的增長(cháng)。敏捷方法,特別是XP,非常適用于小團隊,并且像Grady Booch幾年以前說(shuō)明的那樣,大多數的軟件開(kāi)發(fā)是由五到九個(gè)人的團隊進(jìn)行的。我的第二個(gè)預測是,隨著(zhù)敏捷實(shí)踐的采用不斷增長(cháng),其它方法和過(guò)程的采用,例如RUP,將會(huì )怎樣呢。為什么?盡管XP在合適的時(shí)候是有效的,但是大多數團隊不能簡(jiǎn)單地采用所有實(shí)踐;它們對于較大的組織不太適合,并且不能覆蓋全部的軟件開(kāi)發(fā)生命周期。 作為替代,許多人將會(huì )看到,裁減一個(gè)像RUP這樣的一個(gè)過(guò)程框架以得到一個(gè)敏捷實(shí)例,進(jìn)行產(chǎn)品的每次發(fā)布,這樣會(huì )變得更容易些。更多的中等規模和大的組織將會(huì )認識到擁有一個(gè)靈活的、可定制的過(guò)程的好處,并且將想要他們的過(guò)程得到可用的最佳實(shí)踐。如果經(jīng)驗論者持續進(jìn)行下去,度量和宣揚這些實(shí)踐可以產(chǎn)生的益處,那么越來(lái)越多的組織將會(huì )看到光明。 ![]() 本文描述了在你采用迭代開(kāi)發(fā)時(shí)可能遭遇的文化上的挑戰,以及如何應對這些挑戰的建議。將來(lái)的文章將處理那些阻礙迭代開(kāi)發(fā)的問(wèn)題(如財務(wù)計劃、資源問(wèn)題、技術(shù)操作等)。在本文中,我們描述:
迭代或者螺旋開(kāi)發(fā)模型已經(jīng)提出超過(guò)十年了,Barry Boehm’的文章“A Spiral Model of Software Development and Enhancement," 1 是把這個(gè)實(shí)踐引入到現代軟件開(kāi)發(fā)的先行者。他的工作解釋了如何開(kāi)發(fā)增量的系統、按照風(fēng)險排列優(yōu)先級、以及反對使用傳統的序列的瀑布模型。 迭代開(kāi)發(fā)是一種軟件開(kāi)發(fā)方法,它的重點(diǎn)在于盡早檢驗可執行的軟件。在瀑布模型中,你在需求分析中產(chǎn)生大量文檔,到設計,再到開(kāi)發(fā),到測試等一系列過(guò)程。與之相對,在迭代開(kāi)發(fā)中,系統從應用程序的一部分的實(shí)際實(shí)現開(kāi)始開(kāi)發(fā),隨著(zhù)時(shí)間推移不斷增加它的功能。每次迭代包括分析、設計、構建、測試的組合過(guò)程。通過(guò)每次迭代,項目組關(guān)心的功能在迭代中通過(guò)對架構和商業(yè)價(jià)值等的風(fēng)險評估中被確認。在每次迭代時(shí),增量的設計,編碼和測試。每次迭代都驗證系統架構,保證需求和干系人的要求,以及軟件質(zhì)量。 迭代開(kāi)發(fā)過(guò)程強調實(shí)際的、產(chǎn)生可見(jiàn)的結果的項目過(guò)程。它給最終用戶(hù)和干系人以可見(jiàn)的項目實(shí)際進(jìn)展情況,而不是感覺(jué)和主觀(guān)的進(jìn)展情況。這是有可能的,因為在每次迭代中都有可用的系統的版本用來(lái)檢查和驗證。這是一個(gè)重要的概念:在迭代開(kāi)發(fā)的實(shí)踐中,軟件組最關(guān)注的是結果。
迭代開(kāi)發(fā)模型已經(jīng)證明是一個(gè)軟件開(kāi)發(fā)的優(yōu)越的方法。但是按照November/December 2003 IEEE Software Magazine 2 的描述,僅有大約30%的軟件開(kāi)發(fā)項目使用了迭代方法。這個(gè)統計讓我們不僅要問(wèn):如果迭代方法那么好,為什么沒(méi)有更多的組織采用呢?答案有四個(gè)方面:1) 很多組織使用瀑布模型已經(jīng)很長(cháng)時(shí)間了; 2) 我們傾向于相信關(guān)于組織變更的神話(huà); 3) 我們過(guò)高估計了我們的變更的能力; 4) 我們過(guò)低估計了變更的阻力。 有很多傳說(shuō)阻礙采用迭代開(kāi)發(fā),并且使組織滿(mǎn)足現狀。 本節討論一些圍繞變更文化的說(shuō)法,并給出對這些說(shuō)法的回應。 神話(huà): 我們宣稱(chēng)我們的組織正在采用標準化的迭代過(guò)程,并且我們的團隊很高興采用它。 現實(shí): 這樣的說(shuō)法相當危險,至少會(huì )碰到一些阻力。有很多組織和個(gè)人的阻礙變更的原因。例如:
我們必須認識到,進(jìn)行任何類(lèi)型的組織變更,包括迭代開(kāi)發(fā),都是困難的,而且經(jīng)常受到抵制。迭代開(kāi)發(fā)不僅僅是一個(gè)只需要理解技術(shù)的內部過(guò)程。它將改變計劃和協(xié)作的方法,因此對商業(yè)組織有很大的影響。因此,你必須把引入迭代開(kāi)發(fā)做為一個(gè)項目進(jìn)行,并給予適當的支持。 所有這些人的問(wèn)題都是非常實(shí)際的對變更的抵抗。下面,我將給出影響抵制變更的具體文化。 神話(huà):銀彈將解決我們所有的問(wèn)題 現實(shí): 這個(gè)傳說(shuō)在我們改善軟件能力的過(guò)程中持續存在。一些組織避免使用過(guò)程,代之以個(gè)人英雄主義和他們開(kāi)發(fā)組的天才發(fā)揮。另一些團隊過(guò)于強調過(guò)程,試圖通過(guò)給團隊過(guò)多的過(guò)程來(lái)保證成功。仍有些組織尋找解決他們的問(wèn)題的包治百病的軟件工具。我們知道,一個(gè)單一的解決方案不能解決任何問(wèn)題。實(shí)際上,最終的成功必須包括所有的單元--在組織和項目之間平衡。 神話(huà):每件事情都很好,我們不需要進(jìn)行全面的改善 現實(shí): 在同意“例外的謬論" 規則后,一些領(lǐng)導者相信他們可以通過(guò)簡(jiǎn)單第改善幾個(gè)關(guān)鍵過(guò)程域就可以得到突破性的結果。幾年錢(qián),一家消費產(chǎn)品公司想要改善它的銷(xiāo)售系統。每個(gè)部門(mén)都有不同的產(chǎn)品線(xiàn),每個(gè)都有它們自己的運送產(chǎn)品到區域銷(xiāo)售中心的卡車(chē)。通過(guò)在每個(gè)部門(mén)內部改善裝載卡車(chē)的后勤工作和運輸包裝,可以獲得一些成本的節約。但是全局的改善證明是更有效的解決方案。公司轉移到一個(gè)集中的服務(wù)多個(gè)產(chǎn)品的銷(xiāo)售機制,可以更好地安排優(yōu)化裝載、行程和倉儲。這樣需要更少的卡車(chē),更少的到零售中心的路程,最后得到更低的成本和更高的效果。 5 與之類(lèi)似,有些組織試圖通過(guò)重組他們的團隊來(lái)改善軟件開(kāi)發(fā)能力,這有些類(lèi)似于在沉船甲板上重新安排座位。最新的一次財富50公司的CTO會(huì )議使我想起了這個(gè)謬論?!叭绻覀儍H僅改善需求獲取的過(guò)程,如果我們僅僅在設計上做的更好,如果我們僅僅做更好的測試工作,我們將最終改善我們軟件的質(zhì)量和發(fā)布的預期?!睋Q句話(huà)說(shuō),CTO們認為他們通過(guò)集中在開(kāi)發(fā)周期每個(gè)領(lǐng)域的內部過(guò)程改進(jìn),組織就可以達到更高的產(chǎn)品質(zhì)量等級。這些改善可能可以一步一步地幫助組織,但是這就錯過(guò)了突破性改進(jìn)的機會(huì )。 很多應用開(kāi)發(fā)問(wèn)題持續存在,因為組織的不同部分優(yōu)化他們的成果而浪費了全局的目標;需求做的更好是有些價(jià)值,如果開(kāi)發(fā)和測試過(guò)程在組織掌握中的話(huà)。你可以采用用例 驅動(dòng)的開(kāi)發(fā)或者采用可視化模型得到一些改善。Jeffrey K. Liker在他的新書(shū) The Toyota Way,中建議說(shuō)這些想法與傳統的過(guò)程改善相關(guān),集中在局部的效率。你可以看到局部的有效的改善,但是很少能夠影響總體的結果。Liker 解釋說(shuō):“這一點(diǎn)特別正確,因為在多數過(guò)程中,很少有價(jià)值累加的步驟,因此改善這些步驟也不能得到更多效果?!?a > 6 要想達到更好的效果需要跨功能的迭代的方法,而不是局部的或者簡(jiǎn)單的過(guò)程改善。使用前面的比喻,所有我們的軟件部門(mén)都需要避免他們的卡車(chē)。 這些常見(jiàn)的說(shuō)法都是在組織文化中根深蒂固的態(tài)度和行為的癥狀。一份Software Engineering Institute (SEI) 的報告提出:“組織已經(jīng)經(jīng)歷了螺旋開(kāi)發(fā)的困難--歸結于過(guò)分松弛的控制,風(fēng)險低估,存在的順序開(kāi)發(fā)的方針,不靈活的財務(wù)機制,根深蒂固的文化,關(guān)于什么是螺旋開(kāi)發(fā)和如何使用它的混淆?!?/p> 本文下一節描述阻礙迭代開(kāi)發(fā)的文化表現,將來(lái)的文章會(huì )描述操作的問(wèn)題。
組織文化是組織中個(gè)體共享的價(jià)值、信念和行為舉止的集合。在開(kāi)發(fā)中采用迭代方法通常需要改變文化。本節中,我將討論理解組織文化的框架和一些支持迭代方法的重要的文化的屬性。 一個(gè)有用的評估組織的行為和文化的框架是由Kim Cameron 和 Robert Quinn提出的Competing Values Framework。它是一個(gè)廣泛應用的用來(lái)理解存在于組織中的基本價(jià)值的方法。如果一個(gè)組織的成員都顯著(zhù)地追隨一個(gè)突出的價(jià)值,這個(gè)維度就很大程度上定義了行為文化。理解組織中的人如何觀(guān)察他們的組織,可以幫助我們預料挑戰,構建我們用來(lái)應對挑戰的結構,甚至可以作為我們制定我們的軟件開(kāi)發(fā)過(guò)程的輸入。表1描述了文化價(jià)值。 表 1:The Competing Values Framework,由 Kim Cameron 和 Robert Quinn提出 ![]() 理解個(gè)體如何看待文化將使你洞察你在處理的組織的類(lèi)型,并因此確定在你采用迭代開(kāi)發(fā)時(shí)哪些行為需要改變。例如,如果你的組織集中在結果上,而忽略如何達到這些結果,這些組織很可能遭受比較低的信任,因此有比較低的士氣。正如我們下一節的討論,這種缺乏信任將導致組織嚴酷地細化合同和規格。這種早期關(guān)注細節將導致與迭代或自適應方法相反的僵化。人們可能害怕自己做決定,并不履行組織的意見(jiàn),這經(jīng)常導致改變現狀。這將導致在突然出現問(wèn)題時(shí)產(chǎn)生阻礙成功的影響,沒(méi)有人想要冒著(zhù)組織責難的風(fēng)險提出組織不想處理的問(wèn)題。在后面的節中,我們給出了一個(gè)評估你的組織文化的方法,以及如何幫助你計劃移植到迭代開(kāi)發(fā)。 現在,讓我們調查阻礙采用迭代開(kāi)發(fā)的文化問(wèn)題。圖1顯示了這些問(wèn)題: ![]() 圖 1: 阻礙采用迭代方法的文化問(wèn)題 不管你的組織有內部的開(kāi)發(fā)組還是有外部第三方的采購項目,在商業(yè)組和開(kāi)發(fā)組的對抗關(guān)系都是存在的。兩個(gè)組經(jīng)常以對抗的態(tài)度共同工作。 缺乏信任經(jīng)常導致一種被文檔中每件事情困擾的文化。組織傾向于過(guò)度在創(chuàng )建合同和規格上工作,而不是在設計、開(kāi)發(fā)和集成上。實(shí)際情況是這些合同從來(lái)不會(huì )產(chǎn)生有意義的結果;他們只是在一旦出現問(wèn)題時(shí)定義一個(gè)同對手作戰的戰場(chǎng)。當你有證據說(shuō)“項目失敗的原因時(shí)我們沒(méi)有正確的需求”時(shí),你的勝利實(shí)際上是沒(méi)有意義的,沒(méi)有人,包括你的用戶(hù),實(shí)際上贏(yíng)了。 不要誤解,我并不是建議文檔沒(méi)有用處,他們是商業(yè)世界生活的一部分。高度的信任并不意味著(zhù)每個(gè)人都必須到處收集,互相聯(lián)合,唱“Kum Ba Ya." 然而,當軟件需求的細節嵌入到合同中時(shí),你的組織可能有信任問(wèn)題。要點(diǎn)是在與其它人的信任和高層文檔協(xié)定之間找到平衡。 我們應該集中在保證我們有的好的工作關(guān)系和通訊上,以便我們不會(huì )在碰到第一個(gè)麻煩時(shí)就結束。如果主要領(lǐng)導者能夠鼓勵好奇新和創(chuàng )造性思維,如果他們集中在共享的前景,你可以創(chuàng )建一個(gè)有開(kāi)放和誠實(shí)的通信的組織。我們下面將討論這一點(diǎn)。 在太多的組織中,文化并不鼓勵它的成員尋找和面對風(fēng)險,揭出那些不愉快的實(shí)施,或者詢(xún)問(wèn)難啃的問(wèn)題。實(shí)事上,在他們聽(tīng)到壞消息時(shí),有一種“干掉報信者”的傾向。為了描述怎樣不和影響組織的殘酷的事實(shí)對抗,Jim Collins, 在他的書(shū) Good to Great中,描述了同Admiral Jim Stockdale, 越戰期間北越最高司令官的會(huì )見(jiàn)。Collins boils 用下面的陳述簡(jiǎn)述了面對事實(shí)的訓練:“你必須從不懷疑你將成功的信念--你從來(lái)不會(huì )負擔失?。诿鎸ψ顨埧岬氖聦?shí)時(shí)保持紀律,不管它們可能是什么” Collins 稱(chēng)這個(gè)訓練為 Stockdale Paradox,并認為這種對矛盾的認可是一個(gè)組織變得偉大的共同特征。這個(gè)訓練也適用于軟件開(kāi)發(fā)領(lǐng)域。很多開(kāi)發(fā)組織開(kāi)始于不切實(shí)際的過(guò)于理想的日程、范圍和預算。與現實(shí)相比,我們更愿意處理希望。這種傾向將導致低信任的環(huán)境,給組織帶來(lái)災難。
有無(wú)數的組織在面對嚴酷的事實(shí)失敗的故事,如失去市場(chǎng)優(yōu)勢,破產(chǎn),和其它財富的逆轉。失敗現在也經(jīng)常出現在軟件開(kāi)發(fā)項目中。這種失敗如何在軟件項目中表現? 高的目標通??梢约钌虡I(yè)組,同時(shí)他們經(jīng)常受挫于工程組。在工程組更加集中在缺乏注意的嚴酷事實(shí)中時(shí),商業(yè)組正在“射月亮”。 在項目進(jìn)展時(shí),沒(méi)有人想要問(wèn)項目是否能夠真正達到它的目標。項目成員習慣于忽略在項目出軌時(shí)應該覺(jué)察到的風(fēng)險。這種滿(mǎn)足,或者至少是如意算盤(pán),是對項目成功的潛在的危害。有點(diǎn)偏執狂是一件好事。正如 IBM Rational的Walker Royce說(shuō)的:“沒(méi)有人挖開(kāi)石頭,尋找下面的丑陋的彎曲的東西?!遍_(kāi)發(fā)和接受預先尋找風(fēng)險的習慣是采用迭代方法的基礎點(diǎn)。 為什么我們不愿意提問(wèn)題?為什么我們象鴕鳥(niǎo)一樣把腦袋埋到沙子中?我涉及的一些項目正在遭受這些問(wèn)題。我們總是讓我們變得太樂(lè )觀(guān)。我們不去問(wèn)諸如:“你怎么知道我們在集成原有系統時(shí)不會(huì )出問(wèn)題?”或者“如果我們必須構建而不是買(mǎi)這個(gè)部件時(shí)會(huì )發(fā)生什么?”這樣的問(wèn)題。不問(wèn)那些棘手的問(wèn)題可以給你自己以錯誤的安全感。僅僅由于你沒(méi)有踩到地雷上并不意味著(zhù)沒(méi)有地雷。 我以前的Georgia州立大學(xué)組織行為學(xué)教授 Dr. Louis St. Peter說(shuō)過(guò), “在我們長(cháng)大時(shí)我們經(jīng)常停止好奇心,是由于我們學(xué)的變得有智慧了,有智慧的意思就是已經(jīng)知道了正確的答案(而不是問(wèn)更好的問(wèn)題)?!?em>BusinessThink 7 的作者也認為,好奇心是找到正確的問(wèn)題的解決方法的基本元素。不幸的是,開(kāi)發(fā)組的成員簡(jiǎn)單接受在他們在開(kāi)發(fā)確實(shí)必要被問(wèn)及的問(wèn)題的解決方案。相對于為客戶(hù)解決理解被處理的問(wèn)題,我們簡(jiǎn)單地“做那些告訴我們的事情”,去構建系統。 當他們真正去問(wèn)那些他們應該問(wèn)的問(wèn)題而收到懲罰時(shí),開(kāi)發(fā)者經(jīng)常學(xué)會(huì )不問(wèn)問(wèn)題。他們也會(huì )因為害怕被人知道他們的無(wú)知或者缺乏專(zhuān)業(yè)知識而不問(wèn)問(wèn)題。我們在會(huì )議中試圖聽(tīng)從那些不理解的講述。我們環(huán)顧房間,我們點(diǎn)頭同意。我們并沒(méi)有認識到身體語(yǔ)言覆蓋的更多的是什么--沒(méi)有人理解那些講述。它給你舉手澄清問(wèn)題的勇氣。 人們也為了避免導致沖突而不問(wèn)問(wèn)題。沖突可以是好事也可以是壞事,依賴(lài)于沖突的類(lèi)型和沖突雙方的回應。正確的沖突形式將導致更好的作決定。這里討論兩種類(lèi)型的沖突: C-型沖突,或者“認知沖突," 集中在問(wèn)題和與問(wèn)題相關(guān)的不同意見(jiàn)上。在這種沖突中,團隊成員不同意主要是由于他們不同的經(jīng)驗和專(zhuān)門(mén)知識引導他們對問(wèn)題和可能的解決有不同的看法。C-型沖突將使人們主動(dòng)檢查、對比、妥協(xié)這些不同之處,并產(chǎn)生最好可能的結果。 A-型沖突, 或者 “情感沖突," 在產(chǎn)生不同意見(jiàn)時(shí)引入了個(gè)人情緒的反應而不是職業(yè)。A-型沖突經(jīng)常導致的結果是:敵意、憤怒、怨恨、不信任、冷嘲熱諷和冷漠。因此,不象C-型沖突,A-型沖突通過(guò)阻止團隊通過(guò)類(lèi)似C-型沖突的活動(dòng)而破壞團隊的效能。這對團隊是關(guān)鍵的問(wèn)題。 8 不管在你的組織中人們出于什么原因不問(wèn)問(wèn)題,要保證迭代開(kāi)發(fā)成功,這種行為必須改變。文化必須培養C-型沖突,并允許任何人問(wèn)尖銳的問(wèn)題并得到真正的、合理的答案。 當然,軟件開(kāi)發(fā)的目標是產(chǎn)生工作軟件。你的過(guò)程--你創(chuàng )建軟件的方法--影響最終產(chǎn)品的質(zhì)量。因此你的過(guò)程就意味著(zhù)產(chǎn)生高質(zhì)量的產(chǎn)品,而不是集中在你的努力上。在本節,我們討論執行和在工作時(shí)遭遇的阻礙。 Larry Bossidy 和 Ram Charan, 在他們的 Execution一書(shū)中,解釋說(shuō):執行是讓事情做起來(lái)的藝術(shù) 9 ,要給面向結果的行動(dòng)而不是對話(huà)或者紙面的承諾以比較高的獎勵。正如個(gè)體生產(chǎn)力專(zhuān)家告訴你的,欺騙你自己認為你是在生產(chǎn)是很容易的;活動(dòng)有錯誤的誘惑力。它將導致你相信保持忙碌就可以產(chǎn)生結果。我們如何判斷我們的政治家的能效?是提出很多立法,產(chǎn)生很多想法,處理很多語(yǔ)言?還是他們實(shí)際通過(guò)了能夠影響他們的支持者的生活質(zhì)量的法律?如果我們用后面的情況判斷,我們就會(huì )集中在結果上,而不是在程序和過(guò)程上。 組織和項目都會(huì )落入同樣的陷阱,混淆活動(dòng)和成果。在軟件開(kāi)發(fā)項目中,缺乏執行表明它們包括了太多的會(huì )議、過(guò)量的文檔和低效的活動(dòng)。 什么因素阻止組織朝向成功?有時(shí),人們害怕行動(dòng),因為他們害怕為他們可能導致的失敗負責。這種對風(fēng)險的排斥嵌入在文化中,結果導致整個(gè)組織的停滯。在更一般的情況下,人們害怕未知的事情。從而,個(gè)體和組織都從在開(kāi)始時(shí)就知道所有答案和風(fēng)險中得到安慰。他們堅持常規,即使有事情可以改善的強烈的可能。不管事情變得多壞,他們總是會(huì )更糟。我們的項目計劃反映了這一點(diǎn)。我們在早期構建詳細的計劃,因為他們能夠給我們一種安全感,即使我們知道這個(gè)早期的計劃很快就會(huì )變成廢紙。 迭代開(kāi)發(fā)是一個(gè)挑戰,因為它承認我們不知道面對的全部事情,它需要我們?yōu)榱宋粗氖虑檎{整計劃。在不鼓勵問(wèn)題的文化中,很難想象迭代開(kāi)發(fā)會(huì )成功。在一個(gè)培養辦公室政治的環(huán)境中,它灌輸害怕大聲說(shuō)、或者鼓勵滿(mǎn)足現狀,低信任的文化。這種特性導致一種文化,真相被幾個(gè)關(guān)鍵人物隱藏。減輕風(fēng)險變得很困難。這種環(huán)境很難有益于引入風(fēng)險驅動(dòng)的、迭代的開(kāi)發(fā)。
指出挑戰要比描述如何去做更容易。幸運的是,有很多書(shū)籍和從數千案例中總結出的經(jīng)驗可以幫助我們。 Bossidy 和 Charan 10 提出,在執行者認識到他們的組織需要改變的時(shí)候,他們經(jīng)常試圖去改變“硬件”。他們花費時(shí)間重新思考戰略計劃、組織架構、角色和職責、高層過(guò)程--換句話(huà)說(shuō),組織的“硬件”。但是正如計算機的硬件如果沒(méi)有正確的軟件就沒(méi)用一樣,一個(gè)組織的硬件(它的策略和架構)如果沒(méi)有軟件,它的人的思想和精神,也就沒(méi)有用處。如果你想改變,你必須處理他們的信念,他們關(guān)心的事情,他們的問(wèn)題。 文化是一個(gè)非常難講清楚的概念。我們可以檢查組織的架構和過(guò)程文檔來(lái)確定可能需要那些改變,哪些值得改變。但是第一步是理解它今天存在和團隊如何相信它需要改變的文化。 在 Diagnosing and Changing Organizational Culture一書(shū)中,Cameron 和 Quinn 提出了一系列稱(chēng)為Organizational Culture Assessment Instrument (OCAI). 11 的問(wèn)題。組織成員回答這些簡(jiǎn)短的問(wèn)卷,通常需要5到10分鐘來(lái)完成,以評估他們對組織當前和期望的文化的看法。 圖 2 顯示了最近在一個(gè)很大的政府機構完成的軟件能力評估的OCAI問(wèn)卷的一部分 ![]() 圖 2: IBM Rantional完成的Organizational Culture Assessment Instrument (OCAI) 的一部分 OCAI評估包括下面幾部分:
每個(gè)團隊成員在每節的四個(gè)描述中分配100點(diǎn),分配最多點(diǎn)的就是組織最合適的描述。 理解關(guān)鍵團隊成員是如何看待組織的是很有意思的,但是它是否有助于我們采用迭代開(kāi)發(fā)?是的,通過(guò)分析文化的概況,我們能夠增加在組織中如何進(jìn)行變更的具體的洞察力。用圖形的方式分析是一個(gè)快速理解數據的方法。對每個(gè)答案組,給出一個(gè)文化的概況,并給出平均值。 讓我們看看從分析這些概況給出的洞察。 分析差距. 在團隊成員今天對文化的感覺(jué)和他們相信他們應該是的之間有多遠?(在圖2中,這個(gè)差距用Now 和 Desired 列描述)我們當前的文化是否是“命令和控制”類(lèi)型,過(guò)度結構化?我們是否需要應我們客戶(hù)的要求更加創(chuàng )新一些?這個(gè)差距告訴我們需要做多少工作。 尋找不一致 分析那些組織說(shuō)是重要的和組織做的。例如,如果管理人員聲稱(chēng)我們最重要的價(jià)值是組織的人,但是我們的領(lǐng)導類(lèi)型和管理員工強調的是嚴格堅持文檔化的程序和規則,會(huì )發(fā)生什么?在這樣的組織中引入變更是困難的,文化的差異可以幫助找到這些問(wèn)題點(diǎn)。 分析重要的不同意見(jiàn) 在不同的個(gè)體和團隊之間發(fā)現文化的不同感覺(jué)是不尋常的。然而,如果在組織不同部分之間有顯著(zhù)的不同,或者沒(méi)有清楚的模式,這是一個(gè)潛在問(wèn)題的信號。例如,假設你注意到,組織認為管理信任的優(yōu)勢文化價(jià)值是Human Relations culture (表 1中的 Collaborate) ,但是員工認為優(yōu)勢價(jià)值是提交結果(完成)。在這種情況下,管理將會(huì )遠離真實(shí),從上到下的改變過(guò)程的努力也將受到阻礙。 既然明確了理解文化如何幫助我們采用迭代開(kāi)發(fā)。沒(méi)有容易的答案。到現在為止,我們只給出了更多的軼聞和定性的證據而不是經(jīng)驗數據。然而,因為我們已經(jīng)開(kāi)始理解Competing Values Framework,我們可以對和迭代軟件開(kāi)發(fā)和它的使用相關(guān)的文化屬性進(jìn)行一些邏輯假設。表2顯示了在前面提到的四個(gè)文化類(lèi)型中工作時(shí)可能正面或者負面的影響。 表 2:在四種文化類(lèi)型中工作時(shí)的可能正面或負面的影響 ![]() 正如經(jīng)典的“先有雞還是先有蛋”的問(wèn)題一樣,有人會(huì )問(wèn):“我們應該先改變文化還是先采用迭代開(kāi)發(fā)?”就象Bossidy 和 Charan說(shuō)的那樣,“我們不把我們自己放到新的行動(dòng)路線(xiàn)上去;我們把自己放到新的思想路線(xiàn)上去?!边@也是Harvard 變革大師,John Kotter的意見(jiàn): “文化不是你能夠容易操縱的東西。試圖抓住它并彎成合適的形狀是不可能的,因為你不可能抓住它。僅僅在你已經(jīng)成功地改變了人們的行動(dòng)后,在新的行為產(chǎn)生了好的結果一段時(shí)間以后,在人們看到新的行動(dòng)和取得的改善之間的聯(lián)系之后,文化才會(huì )改變?!?a > 12 在你必須承認我們已經(jīng)討論的文化和操作問(wèn)題,并且有一個(gè)處理問(wèn)題的計劃時(shí),改變看法的關(guān)鍵是 產(chǎn)生可證實(shí)的結果 。換句話(huà)說(shuō),你不能帶著(zhù)拉拉隊去把他們哄到新的行為上。 基于Bossidy, Charan, 和Kotter提出的很多原因, IBM Rational Software 在部署迭代開(kāi)發(fā)和IBM Rational Unified Process, RUP時(shí)鼓吹adoption through execution。 Kurt Bittner 和 Saif Islam 最近在 Rational Edge 的文章,“Adoption through execution: Project-level mentoring to improve software capability," 13 中,進(jìn)行了詳細的解釋?;旧?,采用迭代開(kāi)發(fā)需要有一個(gè)“從做中學(xué)”的方法。目標是給軟件開(kāi)發(fā)組織示范,在項目組成員協(xié)作中的改變是如何產(chǎn)生更加可預期的結果的。成功的示范一個(gè)迭代開(kāi)發(fā)方法可以提供改變態(tài)度的必要的證據。這個(gè)證據可以帶來(lái)實(shí)際的可工作的軟件,即使在早期階段只能產(chǎn)生部分功能。 一旦我們有了文化評估的結果,我們必須指出如何改變文化。在我最近的報告中,IBM Rational 過(guò)程領(lǐng)導Per Kroll 提出,我們通過(guò)在“old way”和“new way”之間的對比,來(lái)改變我們在軟件開(kāi)發(fā)中思考我們的角色的方法。 Black 和 Gregersen的書(shū), Leading Strategic Change,中附和了這個(gè)觀(guān)點(diǎn),它指出,要改變組織文化,你必須改變個(gè)體的“頭腦圖”。 14 改變我們團隊的頭腦、心臟和靈魂,在我們組織文化中提升新的思維模式, 可以幫助開(kāi)發(fā)更加適合迭代開(kāi)發(fā)的氛圍。表3給出一些你可以用來(lái)挑戰你的團隊的例子 表 3:既然團隊變換到迭代開(kāi)發(fā),項目領(lǐng)導和執行者能夠挑戰他們認為困難的角色和責任 ![]() 是否有一個(gè)理想中的迭代開(kāi)發(fā)的文化的輪廓?這個(gè)問(wèn)題只能在進(jìn)行更多研究后回答;但是,可以有把握地聲稱(chēng),一個(gè)和諧的文化是重要的。不管現存的文化是什么樣子,總有同哪些功能紊亂的文化單元斗爭的路線(xiàn)。下面列出一些文化特征,它們描述了如果我們希望采用迭代開(kāi)發(fā),我們的組織必須構建的文化和環(huán)境的一些特征。
很多試圖采用迭代開(kāi)發(fā)的組織都失敗了,因為這些擁護者在面對組織特有的文化問(wèn)題時(shí)沒(méi)有足夠的準備。你可以通過(guò)在轉變前有效地評估,然后理解文化來(lái)克服這些迭代開(kāi)發(fā)的挑戰。通過(guò)實(shí)際執行來(lái)采用過(guò)程的變更是使變更實(shí)際和能夠為干系人接受的關(guān)鍵因素。文化的改變不是來(lái)自于陳詞濫調和口號,而是來(lái)自于創(chuàng )建新的成功的故事并變成標準。
1Boehm, B. W., “A Spiral Model of Software Development and Enhancement," Computer magazine, May 1988, Vol. 21, Issue 5, pp. 61-72 2Michael Cusumano, Alan MacCormack, Chris F. Kemerer, Bill Crandall, “Software Development Worldwide: The State of the Practice", IEEE Software, November/December Volume 20. No 6, p p. 28-34 3Gordon MacKenzie, Orbiting the Giant Hairball, Viking, 1996 4Joseph H. Boyett, Jimmie T. Boyett, The Guru Guide, Wiley, 2000 5Murray Cantor, from his presentation at the IBM Rational Software Developer and User Conference 2004 6Jeffrey Liker, The Toyota Way: 14 Management Principles From the World’s Greatest Manufacturer, McGraw-Hill, 2003 7Dave Marcum, Steve Smith, Mahan Khalsa, businessThink: Rules for Getting It Right -- Now and No Matter What!, Franklin Covey Co., 2002 8Dr. Louis St. Peter 9Larry Bossidy and Ram Charan, Execution, Crown Publishing, 2002 10Ibid. 11Kim S. Cameron, Robert E. Quinn, Diagnosing and Changing Organizational Culture: Based on the Competing Values Framework, Addison-Wesley, 1999 12John P. Kotter, Leading Change, Harvard Business Press, 1996 13June 2004: http://www.ibm.com/developerworks/rational/library/4866.htm 14J. Steward Black and Hal B. Gregersen, Leading Strategic Change: Breaking Through the Brain Barrier, Financial Times Prentice Hall, 2002 15Adapted from Per Kroll
Kurt Bittner, Murray Cantor, Saif Islam, Walker Royce, 和 Dr. Louis St. Peter的思想和文章都幫助我構思了本文的關(guān)鍵章節。也感謝很多讀過(guò)本文并反饋的其他同事、朋友和客戶(hù)
1YAGNI 意思是 “You Ain’t Gonna Need It," ,并且 DTSTTCPW 意味著(zhù) “Do the Simplest Thing That Could Possibly Work." 2Martin Fowler 是 UML Distilled的作者,曾經(jīng)出版的最流行的UML書(shū)之一。 3我在The Rational Edge的 March 2001 和 April 2001 期刊中寫(xiě)了有關(guān)內容。 4Laurie Williams寫(xiě)的有關(guān)她的度量配對編程的效率和其它實(shí)踐。參見(jiàn)她的Web主頁(yè):http://collaboration.csc.ncsu.edu/laurie/publications.html 5參見(jiàn)The Rational Edge的2002年10月 期刊中的有關(guān)實(shí)踐描述信息的文章。 6研討會(huì )的名字每年改一個(gè)數字。第一次研討會(huì )是XP2000,并且今年是XP2004。 7Open Space就是參與者提出討論主題的地方,并且如果有足夠的人感興趣,一個(gè)討論就開(kāi)始了。 8DoD 是美國國防部。
| |||||||||||||||||||||||||||||||||||||||||||||||||
聯(lián)系客服