亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3961 | 回復(fù): 5
打印 上一主題 下一主題

[轉(zhuǎn)帖]揭開(kāi)極端編程的神秘面紗:重訪“XP 精華”,第 1 部分 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2002-10-21 17:05 |只看該作者 |倒序?yàn)g覽
[這個(gè)貼子最后由cinc在 2002/10/21 05:06pm 編輯]

澄清 XP 的誤解
級(jí)別:入門(mén)


Roy W. Miller(rmiller@rolemodelsoft.com)
軟件開(kāi)發(fā)人員,RoleModel Software, Inc.
2002 年 10 月

使用 Java 語(yǔ)言所進(jìn)行的面向?qū)ο缶幊套兊每涨捌占。它使軟件開(kāi)發(fā)發(fā)生了某種程度的變革。但最近的研究表明,有半數(shù)軟件開(kāi)發(fā)項(xiàng)目滯后,而三分之一的項(xiàng)目超出了預(yù)算。問(wèn)題不在于技術(shù);而是開(kāi)發(fā)軟件所使用的方法。所謂的“靈活”方法,與諸如 Java 之類(lèi)的面向?qū)ο笳Z(yǔ)言的能力和靈活性結(jié)合在一起,或許剛好就是答案。最流行的靈活方法稱(chēng)作極端編程(Extreme Programming),或簡(jiǎn)稱(chēng) XP,但許多人并不真正了解它。對(duì)軟件開(kāi)發(fā)項(xiàng)目使用 XP 可以大大提高成功的機(jī)會(huì)。由 Roy Miller 撰寫(xiě)的這個(gè)新專(zhuān)欄從重訪他受歡迎的文章“XP 精華”開(kāi)始,將消除謠言和誤解,幫助您理解 XP,并解釋為什么它這么重要。Roy 很快還會(huì)在相關(guān)論壇中討論 XP。
自從我和 Chris Collins 共同編寫(xiě)“XP distilled”以來(lái)已有一年了,那以后發(fā)生了很大的變化。極端編程(XP)有些成熟了,而且與以前相比,更多人在他們的組織中實(shí)現(xiàn)它。盡管 XP 得到了發(fā)展并由此產(chǎn)生了各種議論,但對(duì)于 XP 是什么和不是什么還是有許多混淆和爭(zhēng)論。不必驚訝,甚至微軟也把其最新的操作系統(tǒng)貼上“Windows XP”的標(biāo)簽,這更增加了人們的疑惑。

在此后的幾個(gè)月中,我將在本專(zhuān)欄中澄清圍繞 XP 的誤解、誤傳和真正的疑惑。我希望向您提供解答有關(guān) XP 問(wèn)題的實(shí)用資源以及如何在組織中實(shí)現(xiàn)它的思想。本專(zhuān)欄前幾篇文章將是“XP 精華”的擴(kuò)展版本,它們將涉及與 XP 相關(guān)的當(dāng)前實(shí)踐和思想。我的目標(biāo)是向您提供支持進(jìn)一步探索 XP 的扎實(shí)基礎(chǔ)以及解釋它如何給您的公司和職業(yè)生涯帶來(lái)變化。

我從事軟件行業(yè)中的某些工作已有大約十年了。在此期間,我從未看到或使用過(guò)象 XP 那樣令我興奮的軟件開(kāi)發(fā)方法。我相信這是一種自然的編程方法 — 當(dāng)人們開(kāi)始使用時(shí),可能并不是每個(gè)人都能感覺(jué)到自然。但如果有機(jī)會(huì)使用它,您就會(huì)驚訝于您以前怎么會(huì)使用任何其它方法進(jìn)行工作的。

當(dāng)然,XP 并不是開(kāi)發(fā)優(yōu)秀軟件的唯一方法,但我深信兩點(diǎn):

XP 運(yùn)用到實(shí)踐中的原則是正確的原則。
我從未使用過(guò)象 XP 那樣將軟件開(kāi)發(fā)的所有部分結(jié)合起來(lái)的軟件開(kāi)發(fā)方法。
所以,如果您還不了解它,那么我將懷著極大的熱情介紹 XP。最后,我希望您也會(huì)被它所吸引 — 但并不是因?yàn)楦呙鞯氖袌?chǎng)營(yíng)銷(xiāo)。我認(rèn)為讓其他人信服 XP 的最佳方法是據(jù)實(shí)演示 XP,然后讓他們自己決定 XP 方法是否比他們正使用的方法更好。

業(yè)務(wù)問(wèn)題
在發(fā)表“XP 精華”的那一年,企業(yè)管理面臨的最大問(wèn)題(IT 業(yè)內(nèi)和業(yè)外)一直未改變過(guò):企業(yè)領(lǐng)導(dǎo)人如何利用他們的 IT 資產(chǎn)和能力獲得競(jìng)爭(zhēng)優(yōu)勢(shì)?在許多情況下,我們討論的這些“資產(chǎn)和能力”與軟件和開(kāi)發(fā)軟件有關(guān)。那是問(wèn)題的癥結(jié)所在。

50 多年來(lái)程序員一直在艱苦地編寫(xiě)代碼。這期間,寫(xiě)出的代碼“堆積如山” — 有些很好,但大多數(shù)很糟糕。平均起來(lái)很糟糕的原因很簡(jiǎn)單:傳統(tǒng)的軟件開(kāi)發(fā)方法會(huì)導(dǎo)致項(xiàng)目的失敗。最糟糕的是擁有滿(mǎn)腔熱情、努力工作的優(yōu)秀人員看到他們大量的項(xiàng)目都失敗了。在“XP 精華”中,我們給出了有關(guān)項(xiàng)目成功的一些數(shù)字。圖 1 顯示了 2000 Group CHAOS Report 中更新的一些數(shù)字。(順便提一下,我的編輯問(wèn)我是否介意定義一下“CHAOS”。我回答說(shuō),我不會(huì)介意,但 Standish Group 拒絕透露縮寫(xiě)詞的含義。正如我告訴編輯的那樣 — 不,我沒(méi)騙您。您可以在參考資料的 Keeping CHAOS quiet 中讀到有關(guān)的介紹。)

圖 1. 軟件項(xiàng)目過(guò)去和現(xiàn)在的成功和失敗


我在一本軟件雜志的文章中第一次看到與此類(lèi)似的圖。作者將該圖稱(chēng)作“項(xiàng)目顯示穩(wěn)步的提高(Projects Show Steady Improvement)”,而且他們說(shuō)明,1994 年只有 16% 的項(xiàng)目成功了,而在 2000 年有 28% 的項(xiàng)目成功了。盡管 28% 當(dāng)然要比 16% 好,但是結(jié)果還是非常糟糕的。正如我以前說(shuō)過(guò)的,如果您使用標(biāo)準(zhǔn)軟件開(kāi)發(fā)方法,那么即使開(kāi)發(fā) Java 應(yīng)用程序,也要做好失望的準(zhǔn)備。盡管自 1994 第一次發(fā)布 CHAOS Report 以來(lái),已有了一些提高,但幾乎四分之三的項(xiàng)目還是失敗了。難怪公司領(lǐng)導(dǎo)人不愿在軟件項(xiàng)目上進(jìn)行投資。

為什么這些數(shù)字這么糟糕?有多少人問(wèn)此問(wèn)題,可能就有多少種觀點(diǎn),但我認(rèn)為有幾個(gè)主要原因:

人們不相信他們有問(wèn)題。


人們知道有問(wèn)題,但是擔(dān)心采用其它方法來(lái)解決此問(wèn)題可能會(huì)帶來(lái)風(fēng)險(xiǎn)。


人們知道有問(wèn)題,也愿意設(shè)法解決它,但誤解了設(shè)法解決的問(wèn)題。


人們知道有問(wèn)題,愿意設(shè)法解決它,也理解該問(wèn)題,但受現(xiàn)狀約束。
讓我們簡(jiǎn)要討論這三個(gè)原因。

不相信他們有問(wèn)題
人們總是喜歡自欺欺人。公司和項(xiàng)目的領(lǐng)導(dǎo)人也不例外。軟件開(kāi)發(fā)項(xiàng)目正逐漸消耗著企業(yè)資產(chǎn),而每個(gè)人還確信一切進(jìn)展順利 — 或至少它們看上去如此,這是非常可能的。我在前面提到的數(shù)字已很明顯地指出組織中的軟件開(kāi)發(fā)不順利。當(dāng)然也有例外,但許多組織對(duì)他們自己存在的問(wèn)題一片茫然。

在您的組織中,IT 團(tuán)隊(duì)和“業(yè)務(wù)人員”之間的關(guān)系是否很僵?組織中的企業(yè)領(lǐng)導(dǎo)人是否說(shuō)過(guò)這樣的話:“如果技術(shù)真的是這樣好的話,為什么我從 IT 團(tuán)隊(duì)聽(tīng)到的只是‘不’呢?”如果是這樣,那么您就有問(wèn)題要解決了。如果您不解決,那么“慣性”或許會(huì)使您可以暫時(shí)繼續(xù)工作,但失敗已隱約可見(jiàn)了。

知道存在問(wèn)題,但擔(dān)心解決它會(huì)帶來(lái)風(fēng)險(xiǎn)
更為常見(jiàn)的是,組織中有才能和觀察敏銳的人意識(shí)到他們目前的軟件開(kāi)發(fā)方法不起作用。他們只是擔(dān)心嘗試采用使情況好轉(zhuǎn)的其它方法可能會(huì)帶來(lái)風(fēng)險(xiǎn)。這可以理解。嘗試新事物需要勇氣,而且通常要冒一些風(fēng)險(xiǎn)。而在我們急功近利的文化中,對(duì)您的職業(yè)生涯來(lái)說(shuō),失敗會(huì)產(chǎn)生不利影響,或者甚至是致命的。

由于成功的機(jī)會(huì)渺茫,大多數(shù)人就采用阻力最小的捷徑。這種方法在短期內(nèi)可能會(huì)保護(hù)所從事的工作,但它僅僅推遲了問(wèn)題的出現(xiàn),并使之更復(fù)雜。如果等待時(shí)間太長(zhǎng),小的問(wèn)題也會(huì)變得難以克服。最終將沒(méi)有方法激勵(lì)人們變得勇敢,去冒更多風(fēng)險(xiǎn),但本專(zhuān)欄及相關(guān)論壇中的思想可能幫助您使組織中的人(包括您自己)戰(zhàn)勝對(duì)失敗的恐懼。

知道存在問(wèn)題,也愿意設(shè)法解決它,但誤解了要解決的問(wèn)題
有時(shí)人們知道他們有問(wèn)題,而且愿意設(shè)法解決它,即使那意味要嘗試新事物。但他們嘗試解決錯(cuò)誤的問(wèn)題。例如,他們?cè)O(shè)法解決生產(chǎn)問(wèn)題,假設(shè)(或許是無(wú)意的)開(kāi)發(fā)軟件就象在裝配線上生產(chǎn)產(chǎn)品。讓裝配線上的工人不按照裝配的有效次序和方法進(jìn)行操作,這樣做毫無(wú)意義。軟件之所以不同是因?yàn)樗切律挛。Jim Highsmith 在 XP2002 的演講 Agile Methodologies: Problems, Principles, and Practices(請(qǐng)參閱參考資料)中,描述了軟件中優(yōu)化和探索之間的區(qū)別。軟件中,我們通常探索新領(lǐng)域,并做一些以前未做過(guò)的事情。這使軟件開(kāi)發(fā)成為需要不同解決方案的完全不同的一類(lèi)問(wèn)題。

如果您設(shè)法使軟件開(kāi)發(fā)過(guò)程過(guò)度“機(jī)械化”或過(guò)多控制此過(guò)程,那么您將對(duì)此失去控制。我希望本專(zhuān)欄即將發(fā)表的文章會(huì)有助于清晰地闡明您正試圖解決的軟件開(kāi)發(fā)問(wèn)題。

知道存在問(wèn)題,也愿意設(shè)法解決它,但受現(xiàn)狀約束
最后,人們可能知道存在問(wèn)題,愿意去解決它,也理解了正設(shè)法解決的問(wèn)題,但在組織中卻無(wú)法執(zhí)行。這個(gè)問(wèn)題很令人沮喪,而且解決起來(lái)也很困難,但未必不可能。遺憾的是,解決它需要的勇氣卻不是大多數(shù)人所能擁有的。有時(shí)為了進(jìn)行變革,您不得不去冒犯某些人。我知道說(shuō)比做容易,但如果您是一個(gè)組織中的成員,該組織的領(lǐng)導(dǎo)層拒絕解決危害組織健康發(fā)展的問(wèn)題,那么您可以做如下選擇:要么全力以赴設(shè)法進(jìn)行變革,要么在該組織不堪自身重負(fù)而關(guān)門(mén)大吉之前離開(kāi)。本專(zhuān)欄中的這篇文章及以后的文章會(huì)向您提供一些好的意見(jiàn),以幫助您克服通常阻礙組織內(nèi)新事物(特別是 XP)發(fā)展的阻力。

一個(gè)解決方案:靈活方法
在某種程度上,“極端編程”這個(gè)名稱(chēng)就不太適宜。大多數(shù)人聽(tīng)到 XP 時(shí),可能會(huì)想到極限運(yùn)動(dòng),或 Microsoft 的操作系統(tǒng)。這個(gè)名稱(chēng)背后的思想是軟件開(kāi)發(fā)的最佳實(shí)踐,例如編寫(xiě)單元測(cè)試和代碼復(fù)查。為什么不能一直執(zhí)行這些實(shí)踐呢?當(dāng)您這樣做時(shí),它們就變成類(lèi)似測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)(Test-Driven Development)和結(jié)對(duì)編程(Pair Programming)之類(lèi)的概念,大多數(shù)人認(rèn)為相當(dāng)極端。那就是這個(gè)名字的由來(lái)。它與蘇打、蹦極或比爾·蓋茨無(wú)關(guān)。

可能是為了防止對(duì)該名稱(chēng)不合適和目光短淺的批評(píng),那些認(rèn)為象 XP 之類(lèi)的方法很好的人,已開(kāi)始將這樣的方法稱(chēng)作靈活(agile)方法。您會(huì)聽(tīng)到將 Crystal Method、適應(yīng)性軟件開(kāi)發(fā)(Adaptive Software Development)和(目前最流行的)XP 稱(chēng)為靈活方法。所有這些過(guò)程都有這樣一個(gè)事實(shí),即需要人們共同合作來(lái)開(kāi)發(fā)軟件。成功的軟件過(guò)程必須充分發(fā)揮人們的長(zhǎng)處,而盡量避免他們的缺點(diǎn)。依我看來(lái),XP 做得最好的地方在于它解決了如何互補(bǔ)影響涉及到的人員的所有力量,而且當(dāng)團(tuán)隊(duì)中的程序員編寫(xiě)代碼時(shí),幫助他們完成正確的事情。它還讓他們?cè)诖蟛糠謺r(shí)間內(nèi)編寫(xiě)代碼,而這正是他們喜歡做的。

不管您把您的方法稱(chēng)作靈活的還是其它,這都不重要 — 結(jié)果最重要。目的是均衡所有的力量以有效地開(kāi)發(fā)軟件。依我看來(lái),這個(gè)方法始終需要真誠(chéng)。它要求人們遵守基本的承諾,這樣您就不會(huì)在持續(xù)的壓力下屈服、退出,去采用舊方法完成任務(wù)。這還要用到技巧。

與大多數(shù)人所說(shuō)的相反,我認(rèn)為不是每個(gè)程序員都會(huì)在 XP 團(tuán)隊(duì)中受益。XP 方法需要太多始終如一的真誠(chéng)和謙虛。程序員在學(xué)校中往往不可能學(xué)到這些,而且大多數(shù)的企業(yè)環(huán)境也不鼓勵(lì)這樣做。軟件是由人類(lèi)開(kāi)發(fā)的。我們都有弱點(diǎn),并且我們都有許多相同的弱點(diǎn)。我們需要使人類(lèi)還原本色的方法,一種使人們難以出差錯(cuò)的方法。我認(rèn)為 XP 是我見(jiàn)到過(guò)的任何方法中這一點(diǎn)做得最好的方法。

XP 的價(jià)值
正如我在“XP 精華”中所說(shuō)的,XP 規(guī)定了一組核心價(jià)值和實(shí)踐,可以讓軟件開(kāi)發(fā)人員發(fā)揮他們的專(zhuān)長(zhǎng):編寫(xiě)代碼。XP 消除了大多數(shù)重量級(jí)過(guò)程中不必要的東西,它們減慢開(kāi)發(fā)速度、耗費(fèi)開(kāi)發(fā)人員的精力(例如甘特圖、狀態(tài)報(bào)告,以及大量的需求文檔等),從而偏離目標(biāo)。Kent Beck 在他的書(shū) Extreme Programming Explained: Embrace Change(請(qǐng)參閱參考資料)中概述了 XP 的核心價(jià)值。這些價(jià)值在去年沒(méi)有發(fā)生實(shí)際的更改。我仍用這種方法概述了這些價(jià)值:

交流:項(xiàng)目的問(wèn)題往往可以追溯到某人在某一時(shí)刻沒(méi)有和其他人一起商量某些重要問(wèn)題上。使用 XP,不交流幾乎不可能。


簡(jiǎn)單性:XP 建議:在對(duì)于過(guò)程和編寫(xiě)代碼起作用的方面,總是做最簡(jiǎn)單的事情。按照 Kent 的說(shuō)法,“XP 就是打賭。它打賭今天最好做些簡(jiǎn)單的事,而不是做些較復(fù)雜但可能永遠(yuǎn)也不會(huì)用到的事!


反饋:及早和經(jīng)常從客戶(hù)、團(tuán)隊(duì)和實(shí)際最終用戶(hù)獲得具體反饋意見(jiàn),這提供了更多為您工作方向“掌舵”的機(jī)會(huì)。反饋可以讓您把握住正確的方向,少走彎路。


勇氣:勇氣存在于其它三個(gè)價(jià)值的環(huán)境中。它們相互支持。相信開(kāi)發(fā)過(guò)程中的具體反饋比預(yù)先知道每件事更有價(jià)值,需要一定的勇氣。當(dāng)需要與團(tuán)隊(duì)中的其他人交流,而此時(shí)可能會(huì)暴露您的無(wú)知時(shí),需要有勇氣。使系統(tǒng)保持簡(jiǎn)單,把明天的決定留到明天做,也需要勇氣。而如果沒(méi)有簡(jiǎn)單的系統(tǒng)、沒(méi)有不斷的交流來(lái)擴(kuò)展知識(shí)以及沒(méi)有掌握方向所依賴(lài)的反饋,勇敢也就失去了依靠。
在我與其他人為在意大利撒丁島召開(kāi)的 XP2001 會(huì)議而合著的論文中,我建議在上面的列表中加上“自省”。但當(dāng)在那兒演講此論文時(shí),我意識(shí)到自省實(shí)際上不僅僅是實(shí)踐。堅(jiān)持學(xué)習(xí)作為另一個(gè)價(jià)值被包含進(jìn)來(lái),這個(gè)強(qiáng)大的候選選項(xiàng)是以 Joshua Kerievsky 的一篇論文(請(qǐng)參閱參考資料)為基礎(chǔ)的。在該論文中,他談到對(duì)于一個(gè)健康的 XP 團(tuán)隊(duì)來(lái)說(shuō),持續(xù)學(xué)習(xí)(Continuous Learning)是如何成為必要條件的。我同意。我不知道添加另一種價(jià)值需要 XP 從業(yè)者提供什么樣的支持,但我認(rèn)為它很有意義。

修訂版的需要
當(dāng)我第一次讀到 Extreme Programming Explained 時(shí),我很興奮,幾乎愛(ài)不釋手。我所見(jiàn)過(guò)的大多數(shù)企業(yè)環(huán)境中的軟件開(kāi)發(fā)方法和 Kent 描述的使人耳目一新的方法之間竟存在如此巨大差異,我為此震驚。但我在內(nèi)心還是有點(diǎn)懷疑,書(shū)中留下了對(duì)項(xiàng)目業(yè)務(wù)方面有些過(guò)多的想像,這在接受時(shí)會(huì)產(chǎn)生問(wèn)題。我被一種無(wú)法抗拒的思想給震住了,即 XP 不僅僅是關(guān)于編程的。

幸運(yùn)的是,在有關(guān) XP“12 個(gè)實(shí)踐”的 XP 社區(qū)、因特網(wǎng)新聞組以及其它論壇中都有重點(diǎn)討論。人們正意識(shí)到 XP 的第一個(gè)發(fā)行版似乎過(guò)分強(qiáng)調(diào)了軟件開(kāi)發(fā)的編程方面,而影響了其它方面,并且業(yè)務(wù)方面不是象它應(yīng)有的那樣十分完善;驹瓌t是好的,但是完成軟件開(kāi)發(fā)還要包含一些更多的實(shí)踐。在已修改的實(shí)踐列表(包含 19 個(gè)實(shí)踐,而不是 12 個(gè))中隱含了這樣的認(rèn)識(shí):即 XP 實(shí)際上不僅是關(guān)于編程的。它是關(guān)于為了生產(chǎn)優(yōu)秀軟件所需創(chuàng)建的某種組織性變革。這個(gè)方法當(dāng)然需要嚴(yán)明的編碼紀(jì)律和高超的編碼技能,但它還需要團(tuán)隊(duì)中每個(gè)人在思考創(chuàng)建軟件的方法上有重大轉(zhuǎn)變。這是指團(tuán)隊(duì)中的每個(gè)人,包括用戶(hù)、業(yè)務(wù)分析員以及決策者。新的實(shí)踐在這一點(diǎn)上絕對(duì)清楚,并主要集中在建立可一直生產(chǎn)優(yōu)秀軟件的團(tuán)隊(duì)上。事實(shí)上,它強(qiáng)調(diào)了團(tuán)隊(duì)是 XP 世界發(fā)生變革背后的主要驅(qū)動(dòng)力。Kent Beck 在以 One Team 為主題的論文草稿中說(shuō)道:

Extreme Programming Explained 中最嚴(yán)重的錯(cuò)誤是隱含的假設(shè),即您的技術(shù)團(tuán)隊(duì)只為一個(gè)客戶(hù)提供服務(wù)。
在同一篇論文的后面,他說(shuō)道:

就象“客戶(hù)以同一種聲音告知團(tuán)隊(duì)”中的那樣,使用“團(tuán)隊(duì)”一詞時(shí),就會(huì)提到程序員,這使得在 XP Explained(以及隨后的論文和交談)中,這個(gè)問(wèn)題變得復(fù)雜了。這個(gè)用法總是困擾我,但我不知道對(duì)此該做什么。
新的實(shí)踐和集中于一個(gè)團(tuán)隊(duì)的方針設(shè)法解決那個(gè)問(wèn)題。以對(duì)軟件開(kāi)發(fā)帶來(lái)組織性變革為目標(biāo)的任何方法都必須彌合 IT 團(tuán)隊(duì)和業(yè)務(wù)團(tuán)隊(duì)之間的裂縫。存在裂縫的最主要原因之一首先是因?yàn)閯?chuàng)建軟件涉及的人員不屬于一個(gè)團(tuán)隊(duì)。那么這樣一個(gè)團(tuán)隊(duì)看上去會(huì)象什么呢?在同一篇論文中,Kent 使用了一個(gè)三條腿的凳子作為比喻。開(kāi)發(fā)團(tuán)隊(duì)是程序員,而業(yè)務(wù)(或客戶(hù))團(tuán)隊(duì)是分析員、用戶(hù)、測(cè)試員等等。第三條腿是管理團(tuán)隊(duì),它由回答如下問(wèn)題的人員組成:

項(xiàng)目如何開(kāi)始?
如何增加、減少或終止投資?
如何解決業(yè)務(wù)和開(kāi)發(fā)團(tuán)隊(duì)不能解決的爭(zhēng)論?
在這個(gè)團(tuán)隊(duì)和需要完成的所有其它項(xiàng)目之間如何設(shè)置相對(duì)優(yōu)先級(jí)?
所以現(xiàn)在我們將一個(gè)團(tuán)隊(duì)定義為三個(gè)子團(tuán)隊(duì):程序員、客戶(hù)和管理。

盡管管理團(tuán)隊(duì)對(duì)某些重大業(yè)務(wù)作決策,但管理開(kāi)發(fā)工作并不是由一個(gè)團(tuán)隊(duì)負(fù)責(zé)的。每個(gè)人都屬于一個(gè)團(tuán)隊(duì),不同的人擔(dān)任不同的角色。當(dāng)然,說(shuō)要比做容易。需要有許多人愿意完成不同的工作。有失。ú⒖赡芙K止)的風(fēng)險(xiǎn),但回報(bào)也可能是可觀的。

非常好。我們有了一個(gè)團(tuán)隊(duì)。每個(gè)人做什么呢?就象一年前那樣,所有 XP 實(shí)踐將四個(gè)價(jià)值轉(zhuǎn)換成了作為一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)成員每天應(yīng)該做的工作,不管是不是技術(shù)方面的工作。對(duì)成員而言,不管是否從事技術(shù)工作都沒(méi)有什么十分新的東西。XP 編程實(shí)踐被業(yè)界公認(rèn)為最佳實(shí)踐已經(jīng)有好幾年了,而且更關(guān)注于業(yè)務(wù)的實(shí)踐被認(rèn)為很有效(請(qǐng)參閱參考資料的 Standish Group CHAOS Report 以獲取證據(jù))。極端編程中的“極端”一詞來(lái)自?xún)煞矫,這一點(diǎn)仍然正確:

XP 采取經(jīng)過(guò)證明的業(yè)界最佳實(shí)踐并將其發(fā)揮到極致。
XP 將這些實(shí)踐以某種方式進(jìn)行組合,使它們產(chǎn)生的結(jié)果大于各部分的總和。
如果每個(gè)人都在同一個(gè)團(tuán)隊(duì)中,那么第二點(diǎn)會(huì)令人驚奇。但只要您砍掉凳子的一條腿,那就準(zhǔn)備掉在地上吧。XP 從未保證 — 以后也不會(huì)保證 — 人們始終會(huì)做得正確,但它給予他們嘗試的機(jī)會(huì)。這適用于團(tuán)隊(duì)中所有成員,不管是不是技術(shù)人員。團(tuán)隊(duì)中使用所有實(shí)踐的成員一起工作會(huì)在速度和效率上得到明顯的提高。這些實(shí)踐可以營(yíng)造使組織產(chǎn)生出優(yōu)秀軟件的環(huán)境。是否還有任何其它種類(lèi)的實(shí)踐呢?

修訂的實(shí)踐
XP 的 19 個(gè)實(shí)踐(請(qǐng)參閱表 1)定義了團(tuán)隊(duì)各種成員應(yīng)有的習(xí)慣。這個(gè)月,我們將較深入地研究聯(lián)合(joint)實(shí)踐,因?yàn)樗鼘⒁粋(gè)團(tuán)隊(duì)中的所有成員都聚集在一起。下個(gè)月,我們將討論開(kāi)發(fā)(development)實(shí)踐,它形成了最初的 12 個(gè) XP 實(shí)踐的主體。再下個(gè)月,我們將討論客戶(hù)(customer)和管理(management)實(shí)踐。這將使您更好地理解用 XP 開(kāi)發(fā)軟件意味著什么。

表 1. XP 的 19 個(gè)實(shí)踐
聯(lián)合實(shí)踐 迭代
         公共詞匯表
         開(kāi)放式工作區(qū)
         回顧  
開(kāi)發(fā)實(shí)踐 測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)
         結(jié)對(duì)編程
         重構(gòu)
         集體所有權(quán)
         持續(xù)集成
         YAGNI  
管理實(shí)踐 接受的職責(zé)
         空中掩護(hù)
         季度評(píng)審
         鏡像
         可持續(xù)步調(diào)  
客戶(hù)實(shí)踐 告知來(lái)龍去脈
         發(fā)行規(guī)劃
         接受測(cè)試
         頻繁的發(fā)行版  


在我們討論聯(lián)合實(shí)踐之前,讓我先澄清什么是實(shí)踐,以及什么不是實(shí)踐。實(shí)踐不是 XP。XP 不只是實(shí)踐。事實(shí)上,XP 的價(jià)值也不是 XP。Ken Auer、Erik Meade 和 Gareth Reeves 共同寫(xiě)了一篇稱(chēng)為“The Rules of XP”的文章(請(qǐng)參閱參考資料),其中對(duì)此描述得非常好。他們簡(jiǎn)明扼要地說(shuō):

XP 的價(jià)值使 XP 靈活。XP 的實(shí)踐沒(méi)有定義 XP . . . XP 是由它的規(guī)則定義的。
他們使用 Alistair Cockburn 的游戲作類(lèi)比,接著描述了“交戰(zhàn)規(guī)則”,該規(guī)則說(shuō)明了進(jìn)行有效的軟件開(kāi)發(fā)所需的環(huán)境。然后他們討論了“游戲規(guī)則”,它定義“交戰(zhàn)規(guī)則”框架內(nèi)每一分鐘的活動(dòng)和規(guī)則。他們建議:

“游戲規(guī)則”確保 XP 的唯一性。
遵守“游戲規(guī)則”就是極端編程。
遵守“游戲規(guī)則”和“交戰(zhàn)規(guī)則”就是極端軟件開(kāi)發(fā)。
XP 實(shí)踐很重要,因?yàn)樗鼈儚?qiáng)制了一些行為,這些行為增加了團(tuán)隊(duì)生產(chǎn)出與團(tuán)隊(duì)成員期望值相符的優(yōu)秀軟件的可能性。但 XP 不只是如此。它不僅是編程,還擴(kuò)展至包括整個(gè)軟件開(kāi)發(fā)過(guò)程。修訂的 XP 實(shí)踐考慮到了這一點(diǎn),它們要求所涉及的每個(gè)人都有不同的行為。

XP 實(shí)踐的四個(gè)類(lèi)別正逐漸變得清晰。一個(gè)團(tuán)隊(duì)中的每個(gè)子團(tuán)隊(duì)有一個(gè)集合,而且還有將三個(gè)子團(tuán)隊(duì)聚集起來(lái)的集合。最初 12 個(gè)實(shí)踐中的大多數(shù)都在開(kāi)發(fā)團(tuán)隊(duì)集合中,但有些可能會(huì)去掉。有些名稱(chēng)已改變,主要因?yàn)樽畛醯拿Q(chēng)要么不太合適,要么沒(méi)有反映它們應(yīng)有的意義。有些實(shí)踐沒(méi)有列在最初 12 個(gè)實(shí)踐的列表中。在下一節(jié)(以及以后的文章)中,在每個(gè)名稱(chēng)后,我將附加說(shuō)明該實(shí)踐是新的、未更改的還是到最初名稱(chēng)的映射。請(qǐng)注意這些名稱(chēng)還會(huì)有更改,但原則或許不變。

在描述實(shí)踐之前,闡述我如何看待“‘部分’觀點(diǎn)”,這一點(diǎn)很重要:團(tuán)隊(duì)必須使用所有實(shí)踐,還是只需挑選它所喜歡的呢?作為規(guī)則,XP 假設(shè)團(tuán)隊(duì)一直使用所有實(shí)踐,但團(tuán)隊(duì)可以挑選幾個(gè)實(shí)踐,并成功使用它們(諸如重構(gòu)或結(jié)對(duì)編程)。您可以在您的團(tuán)隊(duì)中隨意這樣做。對(duì)于我的團(tuán)隊(duì),我不選擇這樣做,因?yàn)槲艺J(rèn)為實(shí)踐會(huì)相互補(bǔ)充,一起使用效果好,所以如果我不選一個(gè)或多個(gè)實(shí)踐,那么就會(huì)放棄一些令人驚奇的東西。但應(yīng)由您自己來(lái)作出決定。如果您想嘗試 XP,我建議您暫且一直使用所有實(shí)踐,來(lái)確定您要放棄哪些實(shí)踐。我敢打賭您要放棄的那些實(shí)踐所組成的列表會(huì)很小。

好了,讓我們來(lái)描述實(shí)踐吧。本月我將討論聯(lián)合實(shí)踐來(lái)為所有其它實(shí)踐打基礎(chǔ)。首先我們需要確保我們有一個(gè)使用所有實(shí)踐的團(tuán)隊(duì)。這是先決條件。

聯(lián)合實(shí)踐:建立一個(gè)團(tuán)隊(duì)
這組實(shí)踐適用于每個(gè)人。團(tuán)隊(duì)中的每個(gè)人(程序員、客戶(hù)和管理)需要一直進(jìn)行這些實(shí)踐。這些實(shí)踐使子團(tuán)隊(duì)聚集在一起以建立我們需要的一個(gè)團(tuán)隊(duì)。

公共詞匯表(映射到比喻)
最初的比喻(metaphor)實(shí)踐失敗了。但其思想并非很糟糕:這是一幅控制圖,其中的系統(tǒng)是用每個(gè)人都能理解的術(shù)語(yǔ)描述的,而且賦予該系統(tǒng)一個(gè)統(tǒng)一的主題,該主題使團(tuán)隊(duì)知道新事物適合哪方面。問(wèn)題是,該實(shí)踐確實(shí)偏離了主要目的:對(duì)系統(tǒng)的共同理解。團(tuán)隊(duì)中的每個(gè)人都需要理解它。有時(shí)不能獲得一個(gè)非常好的比喻,或要想出這樣的比喻非常費(fèi)時(shí)。請(qǐng)不要僅僅因?yàn)椴荒軐?duì)您正設(shè)法構(gòu)建的系統(tǒng)找到一個(gè)恰當(dāng)?shù)谋扔髅枋龆R時(shí)間了。應(yīng)將重點(diǎn)集中于每個(gè)人都能使用的共享詞匯表(Ward Cunningham 稱(chēng)之為“名稱(chēng)系統(tǒng)”)。如果比喻有幫助的話,那么就使用一個(gè)。如果您不能找到一個(gè)很好的比喻,那就用共享詞匯表(它列出了類(lèi)、方法等的名稱(chēng))吧。

在 Extreme Programming Explored(請(qǐng)參閱參考資料)中,Bill Wake 也談到了比喻。他說(shuō):

當(dāng)項(xiàng)目已經(jīng)開(kāi)始并有所成果時(shí),在研究階段確定比喻。隨著進(jìn)展來(lái)修改它。讓比喻來(lái)指導(dǎo)您的解決方案。將其名稱(chēng)用于最高級(jí)的類(lèi)。理解那些類(lèi)是如何交互的。
他建議當(dāng)您不能想出一個(gè)更好的名稱(chēng)時(shí),就使用“自然的比喻”(即,讓對(duì)象成為其自身)。真是好建議。

開(kāi)放式工作區(qū)(新)
大部分時(shí)候非正式的交流比正式交流更有效。辦公室小房間使非正式交流比較困難。最佳解決方案是采用開(kāi)放式工作區(qū),其中人們可以在旁邊聽(tīng)到討論,當(dāng)交流的內(nèi)容有意義時(shí),可以一起討論,提出自己的想法,而且還可以對(duì)任何重要的事情進(jìn)行即時(shí)討論。這種群體交互可以產(chǎn)生令人驚奇的意外結(jié)果。我已經(jīng)在工作中看到了成效。“推倒墻壁”。您的團(tuán)隊(duì)將因此而合作得更好。如果您的組織不同意搬動(dòng)家具,那么您就有更大的問(wèn)題了。

對(duì)開(kāi)放式工作區(qū)實(shí)踐的典型反應(yīng)是懷疑一群人在同一個(gè)區(qū)域討論會(huì)相互分散注意力。從經(jīng)驗(yàn)來(lái)說(shuō),這確實(shí)會(huì)發(fā)生。當(dāng)團(tuán)隊(duì)中的成員相互足夠尊重,以致可以在開(kāi)放式工作區(qū)一起工作,而不是濫竽充數(shù)時(shí),開(kāi)放式工作區(qū)就會(huì)發(fā)揮作用。如果有人想偷懶,就讓他到可以偷懶的區(qū)域,那當(dāng)然是另外一個(gè)地方。這并不意味著工作區(qū)不能有樂(lè)趣。它應(yīng)該有樂(lè)趣,但它也應(yīng)該是可以完成工作的地方。如果團(tuán)隊(duì)成員相互關(guān)心并關(guān)注他們正從事的工作,那么他們就能使開(kāi)放式工作區(qū)起作用。您應(yīng)該設(shè)想它不會(huì)有問(wèn)題,并且只在真有問(wèn)題時(shí)才處理它。

我聽(tīng)說(shuō)有人提出開(kāi)放式工作區(qū)實(shí)踐意味著 XP 不適用于大型的團(tuán)隊(duì)。他們認(rèn)為一大群人在一個(gè)大空間(或一些其它開(kāi)放式工作區(qū))的地方會(huì)很混亂?赡芩麄兪菍(duì)的。坦率地說(shuō),我認(rèn)為這個(gè)側(cè)重點(diǎn)是錯(cuò)誤的。他們似乎假設(shè)了兩點(diǎn):您需要大型的團(tuán)隊(duì),以及沒(méi)有支持團(tuán)隊(duì)的協(xié)作式環(huán)境。

可能您需要大型團(tuán)隊(duì)。但是您真的這么認(rèn)為,還是剛有這個(gè)想法?可能在一個(gè)有助于順利完成工作的環(huán)境中共事的一小組優(yōu)秀的開(kāi)發(fā)人員 — 擁有他們需要的支持 — 可以比一個(gè)大型團(tuán)隊(duì)做得更多、更好和更快。也可能不是這樣,但它值得考慮。

假設(shè)您真的需要一個(gè)大型團(tuán)隊(duì)。為此您如何為它建立一個(gè)合作的環(huán)境,而完全沒(méi)有產(chǎn)生混亂呢?如果您有多個(gè)相鄰的開(kāi)放式工作區(qū),彼此處于半隔離狀態(tài)(敞開(kāi)的大門(mén)、半堵墻、在大空間之間有通道等),那么怎么樣呢?有些人指出不能創(chuàng)造支持大型團(tuán)隊(duì)的合作環(huán)境,我認(rèn)為他們中的大多數(shù)通常不太喜歡這個(gè)想法 — 不管是對(duì)于小型團(tuán)隊(duì)還是大型的。假設(shè)開(kāi)放式工作區(qū)不適合大型團(tuán)隊(duì)是個(gè)錯(cuò)誤。

迭代(新)
使用 XP 的人經(jīng)常談?wù)擁?xiàng)目的“節(jié)奏”。這個(gè)節(jié)奏有不同的級(jí)別,但迭代的節(jié)奏級(jí)別簡(jiǎn)直就象心臟跳動(dòng)那樣快。每隔一到三個(gè)星期,團(tuán)隊(duì)就交付具有客戶(hù)要求的新功能的工作系統(tǒng)。那是基本思想。但人們不習(xí)慣以這種方式創(chuàng)建軟件。大多數(shù)方法注重在編寫(xiě)代碼之前先進(jìn)行大量的工作。XP 要求您編寫(xiě)代碼、讓人們使用它,并讓他們的反饋把握項(xiàng)目的方向(我們將在以后的文章中更詳細(xì)地討論這個(gè)概念)。

每次迭代從制定一些規(guī)劃開(kāi)始。我(以及許多其他人)稱(chēng)之為迭代規(guī)劃,我們?cè)诘?guī)劃會(huì)議上完成它。在這個(gè)會(huì)議上制定的規(guī)劃看上去非常象發(fā)行規(guī)劃(我們也將在以后的文章中更詳細(xì)討論這個(gè)概念),只不過(guò)是更詳細(xì)的級(jí)別。我們只關(guān)心下一次迭代。我們?cè)儐?wèn)客戶(hù),“如果項(xiàng)目在下一次迭代之后將結(jié)束,您想要項(xiàng)目具有什么功能?”然后我們估計(jì)構(gòu)建那些功能所需的工作。我們?cè)谶@次迭代中加入可以加入的東西,而推遲完成其它東西?蛻(hù)確定優(yōu)先級(jí);程序員確定成本。那意味著有些事情必須推遲進(jìn)行,讓位給當(dāng)前的迭代。您不能對(duì)此采取折衷辦法。您不可能獲得更多的時(shí)間。

時(shí)間定量(timeboxing)一詞在這里非常重要。時(shí)間定量是對(duì)某些工作設(shè)置完成期限的做法,在未到期限之前,一直從事這些工作,期限到時(shí),就停止,然后評(píng)估您完成了多少。它是一種技術(shù),防止團(tuán)隊(duì)在某些任務(wù)上花的時(shí)間太長(zhǎng),而影響其它需要完成的工作。迭代實(shí)踐不僅僅是關(guān)于時(shí)間定量的。實(shí)際上迭代實(shí)踐是關(guān)于要求人們作出艱難決定的,而這些人最有資格作出相應(yīng)的決定?蛻(hù)決定下一步要構(gòu)建哪些最重要的功能。程序員對(duì)關(guān)于如何構(gòu)建功能以及需要多少工作作出技術(shù)決定。管理層就有關(guān)項(xiàng)目的戰(zhàn)略方向以及該項(xiàng)目如何才能適合于組織的其它部分而作出決定。這涉及項(xiàng)目團(tuán)隊(duì)中的每個(gè)人,但他們堅(jiān)持遵循他們知道的。他們當(dāng)然經(jīng)過(guò)深思熟慮,但還要相信別人也同樣如此。

對(duì)于將這個(gè)實(shí)踐稱(chēng)作什么有些爭(zhēng)論。我們應(yīng)該稱(chēng)它短迭代以強(qiáng)調(diào)迭代的節(jié)奏快,還是該稱(chēng)作迭代規(guī)劃以強(qiáng)調(diào)集合每個(gè)人進(jìn)行規(guī)劃的合作方面?我喜歡短迭代,因?yàn)樗鼜?qiáng)調(diào)使用戶(hù)獲取真正的、有效的軟件以返回具體反饋的需要。

回顧(新)
這是我職業(yè)生涯中很罕見(jiàn)的項(xiàng)目,團(tuán)隊(duì)中每人都花少量時(shí)間進(jìn)行回顧,并公開(kāi)指出什么地方確實(shí)沒(méi)有做好。我必須自己來(lái)完成。當(dāng)我這樣做(如果我有時(shí)間的話)時(shí),我通常發(fā)現(xiàn)如果團(tuán)隊(duì)花一點(diǎn)時(shí)間來(lái)解決項(xiàng)目中的問(wèn)題,那么通常這些問(wèn)題在它們成為“問(wèn)題”之前就被解決了。那就是回顧(Norm Kerth 創(chuàng)造的術(shù)語(yǔ))所要做的。

不反思您正做的工作就繼續(xù)做下去會(huì)使您陷入重復(fù)失敗的境地。團(tuán)隊(duì)中每人都最好反思他自己的工作以及他吸取的經(jīng)驗(yàn)和教訓(xùn),然后與團(tuán)隊(duì)中其他成員分享反思的結(jié)果。正如我和 Chris Collins 在我們的 XP2001 論文 Adaptation: XP Style(請(qǐng)參閱參考資料)中所概述的那樣,我正討論的個(gè)人行為是自省。回顧時(shí),您公開(kāi)您的自省。

思考您在項(xiàng)目中吸取的經(jīng)驗(yàn)和教訓(xùn)。思考哪些做得好,哪些搞砸了。思考團(tuán)隊(duì)是如何運(yùn)行的。思考團(tuán)隊(duì)整體產(chǎn)生了什么?煞駥⒐ぷ魍瓿傻酶茫繛槭裁?更重要的是,怎么做?什么是您做得好的,是您確信要繼續(xù)保持的?該怎么做?這種共同評(píng)審應(yīng)該以有組織的方式至少在每次發(fā)布后進(jìn)行一次,最好在每次迭代之后進(jìn)行。不會(huì)花很長(zhǎng)時(shí)間。在迭代規(guī)劃會(huì)議時(shí)留出頭一到兩小時(shí)用于回顧上一次迭代?赡艿脑捔舫鲆惶欤ɑ驇滋欤┯糜诎l(fā)布后的回顧。不要有任何松懈。在這里您正設(shè)法使團(tuán)隊(duì)更優(yōu)秀,設(shè)法提高您可以對(duì)組織增加的價(jià)值,設(shè)法通過(guò)在工作中添加一點(diǎn)樂(lè)趣使自己的生活更美好。這是至關(guān)重要的。

我和大部分同事都覺(jué)得團(tuán)隊(duì)中的每?jī)蓚(gè)成員結(jié)成對(duì)在每天結(jié)束時(shí)進(jìn)行“迷你回顧”很有幫助。反思只需幾分鐘。如果我們學(xué)到了值得共享的東西,那么我們可以在第二天的團(tuán)隊(duì)會(huì)議中提出。通過(guò)這種方法我們學(xué)到了很多。

回顧當(dāng)然要使一些薄弱環(huán)節(jié)得到有效解決。彌補(bǔ)了團(tuán)隊(duì)的不足后,團(tuán)隊(duì)就變成了一個(gè)更完整的團(tuán)隊(duì)。每個(gè)人都要參與回顧,包括技術(shù)和非技術(shù)成員。如果這需要太多的人,以致在一個(gè)場(chǎng)所容納不下(而且是可能的)時(shí),則子團(tuán)隊(duì)(例如管理)可以進(jìn)行他們自己的回顧,然后派一名代表參加一個(gè)較小型的會(huì)議。關(guān)鍵是吸取經(jīng)驗(yàn)和教訓(xùn),這樣我們就減少了重復(fù)犯相同錯(cuò)誤的機(jī)會(huì)。這就需要一個(gè)團(tuán)隊(duì)和每個(gè)人都全身心地投入其中。

組織性變革
最后,XP 是關(guān)于組織性變革的 — 它只是從軟件開(kāi)始。使每個(gè)人參與同一個(gè)團(tuán)隊(duì),但分配不同的工作,這是我所能想像到的發(fā)生有效變革的最佳途徑。這個(gè)月我們討論了 XP 的聯(lián)合實(shí)踐,它有助于創(chuàng)建為產(chǎn)生那種真正的、持久的組織性變革所需的一個(gè)團(tuán)隊(duì)。

正如我在下幾個(gè)月中每次結(jié)束時(shí)都要談到的,我重申:這里描述的已修改的實(shí)踐未必就是“新”XP 將來(lái)的模樣,這一點(diǎn)很重要。我想我們所有人都必須等待 Kent Beck 的 Extreme Programming Explained: Embrace Change 第二版的發(fā)布以看看下一發(fā)行版是什么樣。

消除業(yè)務(wù)/IT 團(tuán)隊(duì)的隔閡
將企業(yè)需求轉(zhuǎn)變成它實(shí)際使用的軟件是 IT 世界中最難的問(wèn)題之一。讓技術(shù)人員和業(yè)務(wù)人員進(jìn)行持續(xù)且坦誠(chéng)的交流是一個(gè)令人畏縮的挑戰(zhàn)。盡管大多數(shù)公司在口頭上夸夸其談,但他們的行為表明他們實(shí)際不重視交流。他們到處設(shè)置障礙。信息就無(wú)法流通。拉幫結(jié)派的斗爭(zhēng)使他們偏離了需要完成的工作。人們對(duì)于其他組所做的工作一無(wú)所知。項(xiàng)目的啟動(dòng)遙遙無(wú)期,而為了似乎永遠(yuǎn)也不可能達(dá)到的目標(biāo),這些項(xiàng)目艱難地前進(jìn)著,而且它們會(huì)多次中途夭折。

從人們可以記起的那一刻起,情況可能就是這樣了。行為形成了習(xí)慣。業(yè)務(wù)人員已經(jīng)習(xí)慣技術(shù)人員以種種方法向他們說(shuō)“不”,所以他們開(kāi)始新項(xiàng)目時(shí),拋出每個(gè)可能的功能要求,并要求每件事都要擁有高優(yōu)先級(jí),甚至是不需要的時(shí)候。技術(shù)人員以前也經(jīng)歷過(guò)這樣的“游戲”。他們知道業(yè)務(wù)人員實(shí)際上并不需要所有那些功能。背地里,他們認(rèn)為大多數(shù)業(yè)務(wù)人員都很愚蠢和優(yōu)柔寡斷。他們知道業(yè)務(wù)人員會(huì)設(shè)法改變需求(可能在“游戲”的后期),而且他們知道這個(gè)“范圍蔓延”將削弱按接近于業(yè)務(wù)人員期望的準(zhǔn)時(shí)和預(yù)算內(nèi)交付任何項(xiàng)目的能力。所以他們開(kāi)始新項(xiàng)目時(shí),就試圖限制范圍,而且通過(guò)限制“范圍蔓延”來(lái)執(zhí)行項(xiàng)目。這種情況意味著:

業(yè)務(wù)人員認(rèn)為 IT 團(tuán)隊(duì)只知道說(shuō)“不”,而且他們沒(méi)有得到他們想要的軟件。


技術(shù)人員感到受侮辱了,而且他們沒(méi)有生產(chǎn)出他們希望能夠生產(chǎn)出的軟件。
這個(gè)游戲是個(gè)問(wèn)題,但它也是個(gè)病癥。根本原因是人的本性。技術(shù)人員不愿與業(yè)務(wù)人員交流的真正原因是因?yàn)樗麄兺ǔ2幌虢鉀Q業(yè)務(wù)問(wèn)題。他們寧愿玩冷冰冰的玩具,而且就技術(shù)管理而言,要贏取權(quán)利很難。當(dāng)然并非到處都如此,但很普遍。

業(yè)務(wù)人員不愿交流的根本原因是因?yàn)樗麄儾辉富~外的精力幫助技術(shù)人員把事情做好,而且他們不想對(duì)項(xiàng)目結(jié)果負(fù)責(zé)。如果業(yè)務(wù)人員想要技術(shù)人員理解他們真正需要什么以及為什么,那么他們首先需要自己理解它。他們通常沒(méi)有這樣做。如果業(yè)務(wù)人員想讓技術(shù)人員生產(chǎn)“正確的”軟件,那么他們需要花些時(shí)間與技術(shù)人員共同探討,以達(dá)到共同目的。通常他們不愿意(或被不允許)這樣做。大多數(shù)業(yè)務(wù)人員沒(méi)把這看作他們工作的一部分。

這種內(nèi)耗使大多數(shù)軟件項(xiàng)目產(chǎn)生令人不滿(mǎn)意的結(jié)果就不足為奇了。事實(shí)上,我很驚奇的是,在以這種方法進(jìn)行工作的環(huán)境中,有些項(xiàng)目實(shí)際上還是成功了。那么我們要如何修正呢?除了組織性變革以外不需要進(jìn)行任何更改。逐步變革不會(huì)起作用,雖然我愿意幫助組織設(shè)法以這種方式進(jìn)行變革。這種變革的主要催化劑是一種根本不同的軟件開(kāi)發(fā)方法,它要求并使軟件開(kāi)發(fā)團(tuán)隊(duì)的業(yè)務(wù)成員和技術(shù)成員合作。我想那就是 XP 的真正意義所在。

回顧我在前面討論的一個(gè)團(tuán)隊(duì)的概念。如果您是技術(shù)人員,那么您是否通常會(huì)把業(yè)務(wù)人員視為團(tuán)隊(duì)中的一員呢?如果您是業(yè)務(wù)人員,您是否把自己視為軟件開(kāi)發(fā)團(tuán)隊(duì)中的一員呢?要讓生產(chǎn)軟件的方法產(chǎn)生根本變化,我們必須改變?nèi)藗冎g的關(guān)系。XP 要求這樣做,本專(zhuān)欄以后的一篇文章中將描述的客戶(hù)實(shí)踐會(huì)使這一點(diǎn)完全清晰。客戶(hù)要自始至終推動(dòng)過(guò)程。作為程序員,那些客戶(hù)是我團(tuán)隊(duì)中的成員。我們應(yīng)同心協(xié)力。業(yè)務(wù)人員同樣要愿意推動(dòng)開(kāi)發(fā)過(guò)程。他們要對(duì)有關(guān)功能的取舍做出艱難的決定。他們需要能及早并經(jīng)常進(jìn)行發(fā)布,即使當(dāng)系統(tǒng)未“完成”時(shí),這樣團(tuán)隊(duì)才能從真正的用戶(hù)那里得到具體反饋。他們需要以客戶(hù)測(cè)試的形式,確定何時(shí)“完成”某一特定事情。那才是最根本的。

XP 不僅僅是關(guān)于編程的。它是關(guān)于根本的、改變生活的組織性變革。我相信這是治愈滋生在全體 IT 團(tuán)隊(duì)中疾病的唯一良藥。


下個(gè)月
本月的專(zhuān)欄文章概述了 XP 的聯(lián)合實(shí)踐,它可以幫助您建立一個(gè)團(tuán)隊(duì),而不是一些爭(zhēng)論不休的小組。下個(gè)月我們將涉及程序員的實(shí)踐。那些實(shí)踐告訴程序員要?jiǎng)?chuàng)建一個(gè)團(tuán)隊(duì)想要的系統(tǒng),每天要完成的工作。結(jié)對(duì)編程是不是聽(tīng)起來(lái)很奇怪,或甚至很可笑?持續(xù)集成是不是聽(tīng)起來(lái)不可能?下個(gè)月您會(huì)了解到它們的含義,以及了解它們并不是您想象的那樣瘋狂的想法。

參考資料

單擊本文頂部或底部的討論,參與有關(guān)本文的論壇。


請(qǐng)閱讀最初的“XP distilled”(developerWorks,2001 年 3 月)。


Jim Highsmith 在撒丁島的 XP2002 會(huì)議上所作的演講 Agile Methodologies: Problems, Principles, and Practices(PDF)描述了軟件中優(yōu)化和探索之間的區(qū)別。


Joshua Kerievsky 的 XP2001 論文 Continuous Learning (PDF)非常優(yōu)秀。堅(jiān)持學(xué)習(xí)可以成為第五個(gè) XP 價(jià)值。


請(qǐng)參閱 Ken Auer、Erik Meade 和 Gareth Reeves 合著的 The Rules of XP。它還未發(fā)表,請(qǐng)留意。


Chris Collins 和 Roy Miller 合著了 Adaptation: XP Style(PDF)。


Standish Group 的這篇報(bào)道詳細(xì)描述了有關(guān)軟件項(xiàng)目成功率的殘酷事實(shí)。(另外,請(qǐng)閱讀 Keeping CHAOS quiet (PDF) 中有關(guān) CHAOS 的秘密。)


JUnit.org 是由 Erich Gamma 和 Kent Beck 開(kāi)發(fā)的流行測(cè)試框架的豐富資源。


請(qǐng)?jiān)L問(wèn) Xprogramming.com 以?xún)?yōu)先獲取有關(guān)極端編程的信息。


如果您想要了解有關(guān) XP 的詳細(xì)信息,請(qǐng)務(wù)必挑選一本本文所參考的書(shū)籍:
William C. Wake 編著的 Extreme Programming Explored
Ken Auer 和 Roy Miller 編著的 Extreme Programming Applied: Playing to Win
Kent Beck 和 Martin Fowler 編著的 Planning Extreme Programming
Kent Beck 編著的 Extreme Programming Explained: Embrace Change


在 developerWorks Java 技術(shù)專(zhuān)區(qū)可以找到幾百篇 Java 技術(shù)的相關(guān)參考資料。

關(guān)于作者
Roy W. Miller 作為軟件開(kāi)發(fā)人員和技術(shù)顧問(wèn)已有差不多十年了,一開(kāi)始他在 Andersen Consulting(現(xiàn)在是 Accenture)工作,目前在位于北卡羅來(lái)那州的 RoleModel Software, Inc. 工作。他曾經(jīng)使用過(guò)重量級(jí)方法和靈活方法(包括 XP)。他是 Addison-Wesley 出版的 XP 系列書(shū)籍 Extreme Programming Applied: Playing to Win 的合著者,而且目前正在編寫(xiě)有關(guān)復(fù)雜性、新興技術(shù)和軟件開(kāi)發(fā)的書(shū)籍?梢酝ㄟ^(guò) rmiller@rolemodelsoft.com 或 roy@roywmiller.com 與 Roy 聯(lián)系?梢栽L問(wèn)他的個(gè)人網(wǎng)站 www.roywmiller.com。  




論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2002-10-21 17:08 |只看該作者

[轉(zhuǎn)帖]揭開(kāi)極端編程的神秘面紗:重訪“XP 精華”,第 1 部分

IBM 中文網(wǎng)站才翻譯了 第一部分

英文版三部分:
Demystifying Extreme Programming: "XP distilled" revisited
http://www-106.ibm.com/developerworks/java/library/j-xpcol.html

:)

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2002-11-22 09:48 |只看該作者

[轉(zhuǎn)帖]揭開(kāi)極端編程的神秘面紗:重訪“XP 精華”,第 1 部分

怎么沒(méi)有下文了!
   才帶人在門(mén)前晃了一下。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2002-11-22 15:29 |只看該作者

[轉(zhuǎn)帖]揭開(kāi)極端編程的神秘面紗:重訪“XP 精華”,第 1 部分

ibm 中國(guó)網(wǎng)站才翻譯了第一部分,再去 ibm 看看都翻譯完了沒(méi)?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2002-11-22 15:38 |只看該作者

[轉(zhuǎn)帖]揭開(kāi)極端編程的神秘面紗:重訪“XP 精華”,第 1 部分

你為什么不自己動(dòng)手?

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2002-11-22 15:50 |只看該作者

[轉(zhuǎn)帖]揭開(kāi)極端編程的神秘面紗:重訪“XP 精華”,第 1 部分

呵呵,偶當(dāng)時(shí)看的是英文的,后來(lái)才看到有中文的翻譯。
現(xiàn)在找不到中文的地址了。唉。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP