XP編程中最大的謊言:客戶可以隨意變動需求
我原來的項目程序方 式看來就和XP差不多,當然pair programming做不到;但測試是完全做到了。至于說需求 變動,我認?是最不可能的地方。事實上,最經常碰到的故事是user story說了千百遍,大家都沒有異 義,甚至快速原型也做出來了,然後按這個開始開發,各模塊也測試得差不多了,甚至完成最後內部可
用性測試,但用戶一看到出來的樣子,馬上出一大堆新的需求,這也罷了,故事和原來是完全不一樣
的。要適應意味著要推倒重來。
其實傳統不傳統,XP不XP,最大的問題都不是開發開者測試,而是客戶的故事是未定型的。只要故事是 確定的,WINDOWS我也可以把它build出來。另一方面,客戶一邊情況下缺乏對需求的把握,所以常常是
拿幾籮框的界面菜單當成是需求,至于每個菜單?說什?,他自已是稀?糊塗的。要替他想出來,細化
出來。 所以問題就在這?,和編程無關的,就是用戶的需求分析,這才是關鍵。
少 了點什?,對不對?不錯!少了建模(modeling)。程序架構的建模當然是一個技術問題,用戶不需要懂,對用戶也是透明的,但是業務邏輯的建模,就純 粹是信息化中的業務問題,而偏偏這個建模,用戶不懂,不但不懂,而且最通常的情況是不願意懂,不願意承認它的存在(承認了就等于說自已業務能力不足了), 結果,開發者實際上是拿到了一些無建模的“需求線索”,而常常在中國如此惡劣的軟件環境下,建模這一筆成本和時間,大約占了項目的五分之一左右,完全沒有 機會打入預算,除非,你不打算幹這行了。
在中國幹軟件幹得特別累人,這就是最根本的原因。在中國項目預算和時間都沒有辦法准確預計,這也是根本的 原因。.實際情況是時間都很緊,客戶並不了解開發程序需要非常詳細的故事定義,他認?這是技術的東西,他不需要懂;沒有准確的定義, 開發本身就存在著不到位的危險;時間就沒有辦法估計。沒有建模過程,所謂一個項目要花多少時間完全就取決于經驗,而且必須是完全同類同細節的經驗。這還沒 有包括開發者必須探求符合技術趨勢要求的開發和架構範式的所涉及到的不確定性。
上面兩條影響項目估計的最重大因素,在XP編程中都完全沒有涉及, 相信在國外成熟的軟件?業環境下開發者也極少會碰到。在這種條件下所謂推廣XP編程,等同于讓程序員背上不能背的責任,沒有建模過程,沒有成熟範式甚至甚 同類的經驗(不是缺乏開發經驗),卻要承擔所有預測不准的後果。既要馬兒跑,又要馬兒不吃草,莫過于此了。
所以XP說是可以適應客戶需求變化,我看只可能是專業性客戶,象軟件咨詢公司那種本來就是牛人的
需求變化。外國是這樣的,但中國不是這樣的。而且,在中國客戶可以按XP要求開發團隊適應客戶的
需求變化;但公司卻不會適應因此?生的團隊對工資和開發期限的變化。
缺 乏了需求階段性凍結這一條,XP是一堆讓開發團隊受難的屁話。XP最大的疑問是它的基礎,它假定客戶需求基本上是清晰的。而實際上傳統的經驗是無論你如何 和客戶一起商量故事,一直到你把東西做出來?止,客戶才會說那是不對的。這就是傳統軟件管理的基礎:客戶不知道他想幹什?,想要什?,直到他看到不想的, 他知道那是他不想要的,但仍不知道他自已到底要什?。XP編程說了一大堆擦邊球,都是廢話,因?這個最根本的東 西,他碰也沒有碰。
我是這樣看的。
XP編程有些理念值得參考,但所謂可以自由適應用戶需求變化的,沒有真正經受過地就不要站著說話不腰不疼??偏偏,無論是在美國的始倡者,還是在中國內地 的附和者,僅僅從其缺乏細節描述的高調中,我就認?他們都沒有經過那種地獄的磨練的。