13.5項(xiàng)目計(jì)劃
我們的項(xiàng)目是日期驅(qū)動的,10月1日是我們項(xiàng)目的正式運(yùn)行日期,現(xiàn)在是4月中旬,我們只有5個(gè)多月的時(shí)間,如何規(guī)劃我們項(xiàng)目的進(jìn)度呢?
可以從項(xiàng)目發(fā)布的日期倒推上來,大家在白板上畫來畫去,最后得出了這樣一幅圖(如圖13-2所示)。
圖13-2項(xiàng)目計(jì)劃
小飛:我們可以把8月和9月上旬都做成開發(fā)里程碑,然后把9月中下旬作為穩(wěn)定和發(fā)布階段,這樣是否可以寫更多的功能?
阿超:這是非常理想的情況,但是根據(jù)目前的技術(shù)水平和管理水平,我們不能做到這一點(diǎn)。而且目前我們沒有設(shè)立任何緩沖區(qū)。在項(xiàng)目的進(jìn)行中,我們還有可能要做設(shè)計(jì)變更(DCR,Design Change Request),這些都需要時(shí)間。
大牛:為什么叫第0里程碑?
大栓:因?yàn)槌绦騿T從0開始計(jì)數(shù)。
阿超:對,更重要的是在這個(gè)里程碑中我們要確定整個(gè)系統(tǒng)的框架,別的里程碑(或者叫迭代)都可以看做是在第0里程碑基礎(chǔ)上的增量開發(fā)。
大牛:有道理,咱們集市里擺攤的都很重視早上開市的第一筆買賣,這就相當(dāng)于第0里程碑。第一筆買賣沒成,一天的生意都受影響。
大栓:那應(yīng)該叫第0筆買賣。
13.5.1檢查點(diǎn)(CheckPoint)
現(xiàn)代軟件開發(fā)的流程并不是軟件團(tuán)隊(duì)在絕大部分時(shí)間里保持絕密狀態(tài),然后某一天突然對領(lǐng)導(dǎo)和同事宣布——某某軟件成功了!把所有人都嚇了一跳。
我們要在軟件開發(fā)的過程中,經(jīng)常發(fā)布軟件,發(fā)布并不是指發(fā)布給最終用戶,而是在一個(gè)階段結(jié)束時(shí),讓用戶 / 領(lǐng)導(dǎo) / 同事看看進(jìn)展,或者是讓我們內(nèi)部使用。
Stone項(xiàng)目中有下面幾個(gè)發(fā)布點(diǎn)、檢查點(diǎn):
(1)6月底,內(nèi)部發(fā)布。對團(tuán)隊(duì)內(nèi)部發(fā)布,主要目的是驗(yàn)證發(fā)布流程,保證以后發(fā)布能自動進(jìn)行。項(xiàng)目的大部分功能還沒有完成。
?。?)7月底,CTP(CommunityTechnical Preview,社區(qū)預(yù)覽版本)發(fā)布。對于特定用戶的一些基本功能已經(jīng)完成,發(fā)布的主要目的是聽取一些用戶對系統(tǒng)的意見。
?。?)8月底,Beta版本發(fā)布。這時(shí)候絕大部分功能都已經(jīng)完成,可以公開向外界宣布,允許不同背景的用戶登錄并收集反饋。
?。?)9月底,正式發(fā)布。正式把系統(tǒng)移交給運(yùn)營單位(目前假設(shè)移山公司繼續(xù)運(yùn)營這一網(wǎng)站)。
由上可見,在項(xiàng)目進(jìn)展的各個(gè)階段,我們需要不同類型的發(fā)布,檢查進(jìn)度,收集反饋,最終保證產(chǎn)品能順利完成。
13.5.2 如何決定各種功能的優(yōu)先級
大牛:Stone項(xiàng)目有這么多功能,每個(gè)功能還有子功能。每天每人還有新的想法,我們的電子郵件里有不少討論。到底哪個(gè)功能更重要?如何決定?我們以前的項(xiàng)目是開發(fā)人員想到什么功能,就做什么功能,隨意揮灑,也沒有考慮功能的完整性,相互依賴關(guān)系和重要性?,F(xiàn)在我們怎么辦?
阿超:這樣是比較亂,我們以前開會討論,達(dá)到共識了么?
二柱:當(dāng)然開過會,不過會上我說這個(gè)功能“相當(dāng)”重要,別人說那個(gè)功能“很”重要,另一個(gè)人說還有一個(gè)功能“特別”重要。還有人說,雖然重要,但是很難做;為啥不先做一些容易的功能呢?也有人說有些事情什么時(shí)候做都可以……最后誰也說服不了誰。
阿超:可以把不同任務(wù)的技術(shù)難度、重要性、緊迫度,以及其他參數(shù)列出來,用數(shù)字來表示不同等級,然后把各個(gè)因子的乘積加以比較。
我們可以考慮功能的“價(jià)值”、“技術(shù)可行性”和“緊迫性”,然后給它們定下級別及數(shù)值??梢杂貌贿B續(xù)的數(shù)來表示價(jià)值的差別,例如1,5,9。
九條:1,5,9聽起來不美,不如1,4,7。
阿超:也可以,這個(gè)表就叫1-4-7表好了,如表13-2所示。
表13-2 1-4-7表
價(jià)值 |
技術(shù)可行性 |
緊迫性 |
|
1 |
可有可無 |
聽說過,沒見過(比如微軟最近宣布的WPF/E技術(shù)) |
也許用戶會感興趣 |
4 |
有點(diǎn)意思 |
見過,試驗(yàn)過 |
有些用戶會喜歡 |
7 |
很重要 |
大路貨,很多人都能做 |
用戶哭著喊著要 |
對于諸多的想法,如果用1-4-7表來處理,結(jié)果就比較一目了然了,表13-3是一個(gè)例子:
表13-3 1-4-7表的實(shí)例
價(jià)值 |
技術(shù)可行性 |
緊迫性 |
乘積 |
|
想法1 |
1 |
7 |
1 |
7 |
想法2 |
4 |
4 |
1 |
16 |
想法3 |
7 |
7 |
7 |
343 |
想法4 |
7 |
1 |
1 |
7 |
想法5 |
1 |
4 |
7 |
28 |
想法6 |
7 |
4 |
4 |
112 |
想法7 |
1 |
4 |
7 |
28 |
想法7 |
4 |
4 |
4 |
64 |
從上表可以看出,對用戶有價(jià)值,技術(shù)上不難做的,用戶迫切需要的功能會從眾多候選想法中脫穎而出。
大牛和蕓蕓就組織了一次功能“海選”,大家暢所欲言,最后所有人都投了票,除了果凍。
果凍:我不高興,我覺得不能用數(shù)學(xué)來搞這些東西,我覺得給一個(gè)“4”,或者“7”沒有意義。我不參與。
蕓蕓:那咋辦?我只能等果凍回心轉(zhuǎn)意?
斯坦:果凍不高興,也許是因?yàn)樗幸獾墓δ艿玫姆謹(jǐn)?shù)不高吧。呵呵,民主聽起來是個(gè)好東西,但是真正實(shí)行,那感覺就不一樣了。
阿超:評比和投票的目的是為了交流意見,不是為了誰打敗誰。這個(gè)選舉沒有失敗者。我們要想辦法理解果凍的擔(dān)心,但是同時(shí)項(xiàng)目必須往前推動,不能停下來。
13.5.3更詳細(xì)的項(xiàng)目計(jì)劃
在開了幾次頭碰頭會議之后,頭兒們終于拿出了項(xiàng)目各個(gè)階段的比較詳細(xì)的計(jì)劃。
1.第0里程碑計(jì)劃階段
這一里程碑的主要目的是完成基本建設(shè),進(jìn)行核心部分的設(shè)計(jì)。其中,數(shù)據(jù)庫的schema設(shè)計(jì)包括:商品數(shù)據(jù)、商家數(shù)據(jù)、用戶數(shù)據(jù)、交易數(shù)據(jù),以及用戶反饋信息數(shù)據(jù)(對產(chǎn)品的評價(jià))和用戶售后服務(wù)數(shù)據(jù)(退貨,投訴)(如圖13-3所示)。
圖13-3第0里程碑
在這一里程碑中,這個(gè)里程碑為期1個(gè)月。結(jié)束條件是什么呢?是——
(1)團(tuán)隊(duì)項(xiàng)目服務(wù)器正常運(yùn)轉(zhuǎn),100%的員工能正常工作。
?。?)各項(xiàng)設(shè)計(jì)通過復(fù)審。
?。?)總的測試計(jì)劃和本階段的測試計(jì)劃通過復(fù)審。
?。?)系統(tǒng)的典型用戶通過初始復(fù)審。
2.第1里程碑(開發(fā)階段)
這一里程碑的主要目的是完成基本功能,達(dá)到內(nèi)部發(fā)布Alpha的要求(如圖13-4所示)。
時(shí)間為一個(gè)月,結(jié)束條件是:
(1)商家能夠注冊,登錄。
?。?)商家能夠上傳產(chǎn)品信息。
?。?)商家能夠修改商品信息。
?。?)用戶能夠注冊,登錄。
?。?)用戶可以瀏覽商品主頁。
圖13-4第1里程碑交付件計(jì)劃
3.第2里程碑(開發(fā)階段)
項(xiàng)目第2里程碑——進(jìn)一步完善功能(分類、搜索、購物車、購物交易、用戶論壇、評估、售后服務(wù)、可擴(kuò)展性),達(dá)到社區(qū)預(yù)覽發(fā)布的標(biāo)準(zhǔn)(如圖13-5所示)。
圖13-5第2里程碑交付件計(jì)劃
4.第3里程碑(開發(fā)階段)
在這一里程碑中,我們要實(shí)現(xiàn)剩余的主要功能:用戶論壇、評估、售后服務(wù),開始效能測試以保證系統(tǒng)的可擴(kuò)展性。在前幾個(gè)階段一直在進(jìn)行的UI設(shè)計(jì)應(yīng)該基本定型。給網(wǎng)站的所有功能提供統(tǒng)一的界面。
這個(gè)階段我們要進(jìn)行CTP發(fā)布,并收集反饋。
大牛:為什么第3里程碑沒有更詳細(xì)的數(shù)據(jù)?
阿超:因?yàn)槲覀兛床磺逦磥?,目前只能這樣了,寫太詳細(xì)了,有時(shí)候還不如不太詳細(xì)。因?yàn)檫^早的詳細(xì)計(jì)劃會給人一個(gè)印象,認(rèn)為事情都搞定了,其實(shí)不然。
阿亨:但是我們需要詳細(xì)的數(shù)據(jù)來幫助測試團(tuán)隊(duì)進(jìn)行計(jì)劃。
大拴:我想起一個(gè)相聲,說是兩個(gè)視力不好的人爭論廟里新掛上的匾額的字寫得如何如何,連匾額的顏色和落款都描述了一番。兩人正爭執(zhí)不下時(shí),一個(gè)和尚路過,說那匾額還沒有掛上去呢!
阿超:阿亨,別往心里去。不過大拴說的有道理,我們有時(shí)花時(shí)間爭論某些功能的細(xì)節(jié),但是這個(gè)功能是否要實(shí)現(xiàn)還是一個(gè)很大的未知數(shù)。
阿杰:有了阿超這句話,看來我可以少寫不少文檔了。
5.第4里程碑(穩(wěn)定階段)
在這一里程碑中,我們要分析用戶的反饋,慎重考慮增加或者刪除功能,進(jìn)行設(shè)計(jì)變更(DCR),完善效能和壓力測試。在里程碑的最后,發(fā)布Beta版本,收集用戶反饋。這時(shí)我們可以對用戶界面進(jìn)行最后的修改,之后,這個(gè)時(shí)候的網(wǎng)站就很接近最后發(fā)布的網(wǎng)站了。
6.第5里程碑(發(fā)布階段)
修改缺陷,最后驗(yàn)證所有功能,準(zhǔn)備發(fā)布工作,10月1日正式發(fā)布。
同時(shí),計(jì)劃下一個(gè)版本的工作。
二柱:阿超,我們真的會有下一個(gè)版本?
阿超:凡事預(yù)則立,不預(yù)則廢。我們不是要成為王屋河流域有影響的網(wǎng)站么?當(dāng)然要經(jīng)過好幾個(gè)版本的努力。