Sunspl

          Hello,everyone,i am sun. 天道酬勤,笨鳥(niǎo)先飛.
          隨筆 - 47, 文章 - 0, 評(píng)論 - 24, 引用 - 0
          數(shù)據(jù)加載中……

          什么是“成功項(xiàng)目”:談?wù)勡浖膬r(jià)值(看)

          在開(kāi)始正文之前,我想先講兩個(gè)故事——關(guān)于軟件項(xiàng)目的故事。


          故事一

          有兩個(gè)軟件項(xiàng)目(姑且稱之為“項(xiàng)目 A”和“項(xiàng)目 B”),它們?cè)陂_(kāi)始時(shí)的預(yù)算都是 50 個(gè)人月,時(shí)間是 5 個(gè)月。

          項(xiàng)目 A 在 5 個(gè)月后完工,耗費(fèi)成本 50 人月
          項(xiàng)目 B 在 6 個(gè)月后完工,耗費(fèi)成本 70 人月
          在軟件圈子里摸爬滾打多年的讀者們對(duì)這個(gè)故事一定有自己的判斷——而且我可以大致猜出是什么樣的判斷。不過(guò)先別著急,我們還有另一個(gè)故事。

          故事二

          有兩個(gè)軟件項(xiàng)目(仍然姑且稱之為“項(xiàng)目 A”和“項(xiàng)目 B”),它們?cè)陂_(kāi)始時(shí)的計(jì)劃都是交付 200 項(xiàng)功能。

          項(xiàng)目 A 在項(xiàng)目結(jié)束時(shí)一次性交付了最初計(jì)劃的 200 項(xiàng)功能,但客戶發(fā)現(xiàn)其中大約 30 項(xiàng)功能沒(méi)有太大用處,而另外 30 項(xiàng)有用的功能要等到下一個(gè)項(xiàng)目才能實(shí)現(xiàn)。
          項(xiàng)目 B 在第一個(gè)月結(jié)束時(shí)交付了第一個(gè)版本,此后每?jī)芍芙桓兑粋€(gè)新的版本。在項(xiàng)目進(jìn)行的過(guò)程中,客戶進(jìn)行了一次業(yè)務(wù)調(diào)整,加入了 90 項(xiàng)新的功能,并擱置了 50 項(xiàng)用處不大的功能。最終該項(xiàng)目交付了 240 項(xiàng)功能。
          聰明的讀者大概注意到了,前后兩個(gè)故事講的是同一回事,同樣的兩個(gè)項(xiàng)目。現(xiàn)在我的問(wèn)題來(lái)了:請(qǐng)問(wèn)哪個(gè)項(xiàng)目是更成功的項(xiàng)目?

          這個(gè)問(wèn)題并不容易回答——實(shí)際上它沒(méi)有標(biāo)準(zhǔn)答案。站在很多軟件企業(yè)的立場(chǎng)上,項(xiàng)目 A 是一個(gè)理想的成功項(xiàng)目:按時(shí)間、按成本完成預(yù)先約定的任務(wù)。請(qǐng)注意,我用了“理想的”這個(gè)詞,稍后我還會(huì)解釋這個(gè)有趣的詞,因?yàn)閷?shí)際上的軟件項(xiàng)目往往沒(méi)有那么理想。

          而如果換一個(gè)角度,站在客戶的立場(chǎng)上呢?也許付錢購(gòu)買軟件的客戶會(huì)有一些不同的想法。項(xiàng)目 B 從開(kāi)始之后一個(gè)月便交付了第一個(gè)可工作的版本,從那時(shí)起客戶就開(kāi)始使用這個(gè)軟件的部分功能,并且不斷地把自己使用的感受反饋給開(kāi)發(fā)團(tuán)隊(duì)。在真實(shí)的業(yè)務(wù)運(yùn)營(yíng)過(guò)程中,客戶甚至發(fā)現(xiàn)了一種新的盈利模式,并進(jìn)行了一次大規(guī)模的業(yè)務(wù)調(diào)整,這次調(diào)整的結(jié)果也直觀地體現(xiàn)在軟件項(xiàng)目中。雖然項(xiàng)目B的整體交付速率低于項(xiàng)目 A,但它提供的所有功能都是客戶真正需要的,它們?yōu)榭蛻籼峁?shí)實(shí)在在的價(jià)值——更不用說(shuō),客戶提前好幾個(gè)月就開(kāi)始使用這個(gè)軟件。

          實(shí)際上,這是一篇關(guān)于軟件價(jià)值的文章。和“成功項(xiàng)目”一樣,對(duì)于“軟件的價(jià)值”,不同的人也會(huì)有不同的定義。不過(guò)作為付錢購(gòu)買軟件的客戶,他對(duì)于軟件價(jià)值的定義是一目了然的:他能夠從使用軟件中創(chuàng)造多少價(jià)值,軟件能夠?yàn)樗臉I(yè)務(wù)提供多少價(jià)值,這就是軟件的價(jià)值。或者說(shuō)得更簡(jiǎn)明一點(diǎn):

          軟件價(jià)值源自使用
          這正是為什么很多客戶青睞“項(xiàng)目 B”的原因——我并不打算聲稱所有客戶都有同樣的觀點(diǎn),稍后我也會(huì)舉出反例,但至少支持這一觀點(diǎn)的客戶不在少數(shù)。因?yàn)樗麄兲幵谝粋€(gè)殘酷而快速變化的商業(yè)環(huán)境中:他們的供應(yīng)商在變化,他們的客戶在變化,他們所處的經(jīng)濟(jì)環(huán)境和政策環(huán)境也在變化。這一切的變化迫使他們的業(yè)務(wù)也要隨之變化。更要命的是,今天這個(gè)經(jīng)濟(jì)全球化的時(shí)代是一個(gè)“快魚(yú)吃慢魚(yú)”的時(shí)代,客戶迫切希望新的軟件系統(tǒng)為他們帶來(lái)競(jìng)爭(zhēng)優(yōu)勢(shì)——哪怕這個(gè)軟件系統(tǒng)尚未完成,只要能夠投入使用。最后,客戶對(duì)于新的軟件系統(tǒng)究竟應(yīng)該是什么樣子并沒(méi)有百分之百的把握,他們的想法往往要在真正使用軟件之后才會(huì)浮現(xiàn)成型。幾方面的因素加在一起,使得這些客戶更愿意盡快開(kāi)始使用軟件、提出反饋、并不斷完善軟件,而不是提出一組需求、然后坐等幾個(gè)月之后原封不動(dòng)地拿到這些功能。

          一個(gè)真實(shí)的案例

          在 ThoughtWorks 的一個(gè)項(xiàng)目中,開(kāi)發(fā)者們?cè)陧?xiàng)目開(kāi)始之后一個(gè)月內(nèi)就發(fā)布了第一個(gè)版本——只有一些簡(jiǎn)單的數(shù)據(jù)采集功能。在發(fā)布展示會(huì)上,發(fā)生了這樣的對(duì)話……

          開(kāi)發(fā)者:這是我們的第一個(gè)功能。我們從文本文件、Excel 數(shù)據(jù)表和遺留數(shù)據(jù)庫(kù)采集數(shù)據(jù),現(xiàn)在我們的數(shù)據(jù)庫(kù)中有這些數(shù)據(jù)……(展示數(shù)據(jù)庫(kù)結(jié)構(gòu))
          客戶:唔……有意思。要是你能做這樣一個(gè)查詢(寫出查詢要求),得到的結(jié)果可能會(huì)有用。
          開(kāi)發(fā)者:可是我們的界面上沒(méi)有地方做這樣的查詢操作。
          客戶:啊,我不需要操作界面,只要每天深夜做一次查詢,把報(bào)表發(fā)到我的信箱就可以了。
          開(kāi)發(fā)者:這樣嗎……另一個(gè)問(wèn)題是,這需要花我們幾天時(shí)間。
          客戶:不要緊,把別的任務(wù)往后放幾天好了,我很想看到這份報(bào)表。
          開(kāi)發(fā)者:那好吧,下周我們就會(huì)開(kāi)始提供這個(gè)報(bào)表。
          猜猜結(jié)果怎么樣?一周之后客戶就開(kāi)始每天接收這份報(bào)表,并根據(jù)報(bào)表內(nèi)容做一些分析和決策。僅僅幾個(gè)月之后,這份報(bào)表給客戶帶來(lái)的收益就已經(jīng)超過(guò)了整個(gè)項(xiàng)目的投資——這時(shí)項(xiàng)目其他部分的開(kāi)發(fā)甚至還沒(méi)有完成。

          想想這個(gè)客戶會(huì)怎么定義一個(gè)“成功的軟件項(xiàng)目”?好吧,也許這個(gè)項(xiàng)目超過(guò)了預(yù)期的時(shí)間,也許投入了更多的人力,但這些并不意味著“項(xiàng)目失敗”——只是付出更高的成本。關(guān)鍵在于,他投入的這些成本能夠帶來(lái)多大的收益,他的投資回報(bào)率是否劃算。對(duì)于這個(gè)客戶而言,如果項(xiàng)目能夠隨時(shí)給他提供可用的、能夠創(chuàng)造最大價(jià)值的軟件,能夠隨時(shí)讓——就像故事中提到的——這種有價(jià)值的想法得以實(shí)現(xiàn),這就是一個(gè)成功的項(xiàng)目。

          所以,親愛(ài)的讀者,請(qǐng)你忘記本文標(biāo)題上出現(xiàn)的“敏捷”二字,我們?cè)谶@里所說(shuō)的不是別的,就是一種為客戶創(chuàng)造最大化價(jià)值的軟件開(kāi)發(fā)方法。這樣的方法有很多種,但它們有一個(gè)共同的特點(diǎn):盡快、盡可能頻繁地交付可以工作的軟件,讓客戶盡快開(kāi)始使用軟件,從使用中創(chuàng)造價(jià)值、厘清思路、提出反饋。仍然以 ThoughtWorks 的項(xiàng)目為例,這些項(xiàng)目通常在啟動(dòng)開(kāi)發(fā)階段之后一個(gè)月內(nèi)就會(huì)發(fā)布第一個(gè)版本,隨后每一周或每?jī)芍馨l(fā)布一個(gè)新版本——每個(gè)版本都是一個(gè)可以工作的軟件,每個(gè)版本都比前一個(gè)版本具有更豐富的功能,并且每個(gè)版本都包含客戶認(rèn)為迄今為止最有價(jià)值的那些功能。用軟件開(kāi)發(fā)的“黑話”,“開(kāi)發(fā)下一個(gè)版本”的過(guò)程叫做“迭代”,這些開(kāi)發(fā)方法最大的共同點(diǎn)就是“迭代式開(kāi)發(fā)”——不是一股腦地交付全部功能,而是每次增加一點(diǎn)、漸進(jìn)地交付最有價(jià)值的功能。

          軟件開(kāi)發(fā)的夢(mèng)想與真實(shí)

          回到文章開(kāi)始處的兩個(gè)故事。我曾經(jīng)說(shuō)過(guò),對(duì)于很多軟件企業(yè)而言,項(xiàng)目 A 是一個(gè)“理想的”成功項(xiàng)目。那么,是什么讓情況變得不那么理想?

          答案是一個(gè)所有軟件開(kāi)發(fā)者耳熟能詳?shù)脑~:需求變更。在真實(shí)的項(xiàng)目中,客戶通常不會(huì)等到最后一天再照單全收整個(gè)項(xiàng)目,因?yàn)樗雷约旱臉I(yè)務(wù)正在發(fā)生變化。這時(shí)需求變更就出現(xiàn)了,伴隨著來(lái)回的扯皮和討價(jià)還價(jià)。更糟的是,大量的需求變更發(fā)生在項(xiàng)目晚期——因?yàn)橹钡竭@時(shí)客戶才真正看到、使用到這個(gè)軟件,他的很多想法才真正浮現(xiàn)成型。隨著這種“最后一分鐘的需求變更”,項(xiàng)目超期、超出預(yù)算也就成了家常便飯。能夠像項(xiàng)目A這樣完工交付的,實(shí)在是鳳毛麟角的幸運(yùn)兒。

          為了對(duì)付需求變更這個(gè)噩夢(mèng),軟件開(kāi)發(fā)者們還發(fā)明了另一個(gè)詞:變更控制。這個(gè)有趣的詞暗示著:需求變更是一種“不好”的東西,是需要“控制”的東西。然而站在客戶的角度上想想,他在親身使用了軟件之后提出的要求,難道不是最有價(jià)值的東西嗎?把這種真正創(chuàng)造業(yè)務(wù)價(jià)值的要求“控制”起來(lái),難道是合理的嗎?

          在前面我也暗示過(guò),并非所有的客戶都一定青睞迭代式開(kāi)發(fā)。那么,哪些軟件項(xiàng)目不一定需要迭代式開(kāi)發(fā)呢?從整篇文章的內(nèi)容不難看出,如果客戶的業(yè)務(wù)絕對(duì)不會(huì)變化,如果客戶的需求巨細(xì)靡遺非常明確,如果客戶不需要盡快開(kāi)始使用軟件以便收回成本,那么迭代式開(kāi)發(fā)對(duì)他的幫助就會(huì)小得多。不過(guò),如果讀者認(rèn)真思考的話,這樣的例子也許并不多——也許比你最初認(rèn)為的要少得多。一個(gè)很好的例子是“神州六號(hào)”火箭使用的計(jì)算機(jī)控制系統(tǒng)。還有多少這樣的例子?讀者不妨試著自己想想。

          如果我足夠幸運(yùn)的話,也許一些讀者已經(jīng)被這篇文章吊起了胃口:既然有這么好的軟件開(kāi)發(fā)方法,既然它能夠?yàn)槲覀儎?chuàng)造更大的價(jià)值,那還等什么呢,我們馬上就動(dòng)手吧。事情不會(huì)那么簡(jiǎn)單。為了讓迭代式開(kāi)發(fā)能夠成為現(xiàn)實(shí),為了確保盡快、盡可能頻繁地交付,為了確保每次交付的都是最有價(jià)值的功能,我們——包括軟件開(kāi)發(fā)者、軟件企業(yè)和客戶——需要很多的改變。這里既有職責(zé)與權(quán)利的劃分,也有開(kāi)發(fā)過(guò)程和團(tuán)隊(duì)的重組,還有技術(shù)層面的實(shí)踐指導(dǎo)。這些正是敏捷方法學(xué)所涵蓋的內(nèi)容。缺少了這些東西,“為客戶創(chuàng)造最大價(jià)值”就只能成為一句空話。在后續(xù)的文章里,我們將結(jié)合 ThoughtWorks 的實(shí)踐經(jīng)驗(yàn),逐步介紹敏捷方法的方方面面。

           

          posted on 2008-06-15 15:35 JavaSuns 閱讀(312) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 潼关县| 德化县| 峨眉山市| 治县。| 内乡县| 洛阳市| 玉龙| 南宁市| 天津市| 资阳市| 云林县| 邳州市| 新宁县| 平山县| 丰台区| 昌图县| 农安县| 出国| 和田市| 常德市| 义乌市| 嘉善县| 巴楚县| 五河县| 库尔勒市| 娱乐| 永善县| 肥乡县| 贵港市| 右玉县| 西安市| 高清| 色达县| 都兰县| 固安县| 双城市| 恩平市| 加查县| 焉耆| 调兵山市| 阳谷县|