|
發(fā)表在《程序員》雜志2005年第9期52~67頁的原文 編者按:在上期的文章中,我們分享了http://133.項(xiàng)目的實(shí)施過程,然而,一些在時(shí)間之外的內(nèi)容卻被忽略掉,如項(xiàng)目范圍、人才、資金、進(jìn)度、精神因素以及制度(尤其是文檔制度)等各個(gè)方面,本文試圖用一種“橫切面”的方式來關(guān)注項(xiàng)目實(shí)施,也為項(xiàng)目經(jīng)理在管理項(xiàng)目時(shí),提供一些有效的思路。 網(wǎng)站項(xiàng)目成功管理實(shí)踐(下) 記者/孟巖 歐陽璟 背景說明è四個(gè)人的角色分工: 劉振飛:項(xiàng)目經(jīng)理,負(fù)責(zé)整個(gè)項(xiàng)目的規(guī)劃、協(xié)調(diào)工作。 蔡志宏:需求定義,從頭參與規(guī)劃。 朱偉波:開發(fā)組長(zhǎng),并參與規(guī)劃和后臺(tái)管理的需求定義。 張春艷:測(cè)試組長(zhǎng),負(fù)責(zé)北京分公司所有業(yè)務(wù)的測(cè)試工作。 《程序員》:劉振飛,你好。對(duì)于任何一個(gè)項(xiàng)目來說,項(xiàng)目經(jīng)理所面臨的責(zé)任都是最大的。這尤其表現(xiàn)在整個(gè)項(xiàng)目是否有明確的目標(biāo)。請(qǐng)你談?wù)勀惝?dāng)時(shí)對(duì)http://133.這個(gè)項(xiàng)目的看法,而當(dāng)時(shí)明確的項(xiàng)目目標(biāo)是怎樣一步步制定出來的? 劉振飛:明確的目標(biāo)是整個(gè)項(xiàng)目組齊心協(xié)力努力的“指南針”。作為項(xiàng)目組長(zhǎng),首先要把Stakeholder們對(duì)項(xiàng)目的要求吃透、并從技術(shù)上把握可行;然后要讓整個(gè)團(tuán)隊(duì)理解這個(gè)目標(biāo):做什么、為什么、怎么做、如何分工、何時(shí)做出來、分階段到達(dá)什么狀態(tài)。 我是分三步確定目標(biāo)的。首先是了解舊網(wǎng)站的情況。經(jīng)過和原來負(fù)責(zé)舊網(wǎng)站研發(fā)的蔡志宏以及開發(fā)和美工人員深入溝通后,我發(fā)現(xiàn)舊網(wǎng)站是個(gè)“爛泥灘”,所以把實(shí)際情況解釋給管理層,說服他們另起爐灶,推倒重做一個(gè)全新的網(wǎng)站。 第二步是吸取舊網(wǎng)站的教訓(xùn),確定新網(wǎng)站的總體構(gòu)想、設(shè)計(jì)原則、新版“圖紙”。我、蔡志宏、朱偉波還有當(dāng)時(shí)的美工形成一個(gè)“核心小組”,反復(fù)開會(huì)討論,結(jié)合公司現(xiàn)有的業(yè)務(wù)及人力資源情況,逐步明確圖片、鈴聲、文字這三類主要的WAP內(nèi)容如何在網(wǎng)站上有效展示。 第三步是把“核心小組”的整體思路報(bào)告給管理層和項(xiàng)目組成員,聽取大家的反饋意見,逐步明確這個(gè)網(wǎng)站的目標(biāo)和設(shè)計(jì)方案。我分別在 示意圖:整體規(guī)劃統(tǒng)一整個(gè)項(xiàng)目組的前進(jìn)方向 其實(shí)我還跟項(xiàng)目組內(nèi)部講過另外兩個(gè)“非正式”但更長(zhǎng)遠(yuǎn)的目標(biāo): (1)把整個(gè)項(xiàng)目流程管理好,給公司樹立一個(gè)“樣板工程”:項(xiàng)目應(yīng)該這么做; (2)通過這個(gè)項(xiàng)目打造有良好素養(yǎng)的團(tuán)隊(duì),逐步培養(yǎng)大家正規(guī)的項(xiàng)目研發(fā)意識(shí)。 示意圖:用了1個(gè)月的時(shí)間來進(jìn)行規(guī)劃,確定目標(biāo)、統(tǒng)一思想 《程序員》:定義需求的時(shí)候統(tǒng)一的指導(dǎo)思想是什么?在項(xiàng)目進(jìn)行中,需求的變更是怎樣管理的?你是否曾經(jīng)面對(duì)來自上層的壓力,怎樣面對(duì)?需求工程師是否能理解,并按照預(yù)期的規(guī)劃工作? 蔡志宏:我們一開始就意識(shí)到網(wǎng)站的核心功能并不是諸如導(dǎo)航條擺在左邊還是右邊的問題,而是要讓公司產(chǎn)品能夠得到最好的展示,為此確定我們要做展示的幾個(gè)核心部分。我們犧牲掉部分美觀來換取一種整齊劃一的思路。這就像大型超市一樣,也許每一個(gè)貨物區(qū)都有自己的的貨架擺放形式會(huì)更好,但是同一個(gè)形式也有它自己的優(yōu)勢(shì)。 對(duì)于SP的網(wǎng)站來說,關(guān)鍵是你有一張好圖吸引用戶,不是花哨的頁面來蠱惑他,蠱惑用戶將付出超出產(chǎn)品制作本身的很大的精力,這是實(shí)戰(zhàn)經(jīng)驗(yàn)?;ㄉ诘捻撁娌季中问侥軌蛟谧畛跎暇€的時(shí)候讓所有人滿意,但是在運(yùn)作的過程中會(huì)發(fā)生很多的問題,因?yàn)闉榱嘶ㄉ冢L(zhǎng)期下來是要付出技術(shù)、美工等很多精力的。 核心的展示模塊確定之后,我們也面臨了這個(gè)圖標(biāo)放到右邊好看,那個(gè)文字放到左邊好看等一些需求變更建議,有些建議來自于高層,但是這都沒有影響到需求的最終定義。當(dāng)然,一些細(xì)節(jié)上的建議仍然被采納,這個(gè)隊(duì)伍雖然是“武斷”的,但還是個(gè)開放的隊(duì)伍。 盡管在初期的規(guī)劃非常完善,然而限于時(shí)間要求,有些想法在該目前的項(xiàng)目中仍然沒能實(shí)現(xiàn)。 示意圖:把網(wǎng)站各頁面分成模塊,分塊定義,形成需求Spec文檔 朱偉波:以前在別的公司做項(xiàng)目時(shí)就是因?yàn)樾枨蟛粩嘧兏鼏栴},遇到過很大的麻煩,所以這個(gè)項(xiàng)目一開始時(shí)我就再三強(qiáng)調(diào)需求的重要性。目前公司的開發(fā)模式還比較簡(jiǎn)單。領(lǐng)導(dǎo)一句話做什么就做什么,什么需求以及文檔都是開發(fā)人員根據(jù)自己的理解來做,往往在開發(fā)中途可能由于各種原因領(lǐng)導(dǎo)的要求產(chǎn)生了變化。這樣導(dǎo)致需求不斷變更,直接影響了開發(fā)的進(jìn)度。了解了這個(gè)情況后我就直接找過振飛,認(rèn)真地談過這個(gè)問題,并一再強(qiáng)調(diào)要重視它。很高興振飛在這方面很支持我的看法,讓大家都知道不可以隨便改需求。 當(dāng)然在開發(fā)過程中由于公司的業(yè)務(wù)要求,產(chǎn)品經(jīng)理(蔡志宏)有過幾次需求的變更。我的態(tài)度還是比較強(qiáng)硬,大的需求一定不能隨便動(dòng)(因?yàn)轫?xiàng)目時(shí)間很緊,開發(fā)人員遲遲未能到位,需求要是不斷變更,對(duì)開發(fā)人員是致命打擊)。經(jīng)常和蔡志宏溝通,盡量保持一致意見。我記得快做完后臺(tái)管理時(shí)出現(xiàn)了一個(gè)致命的漏洞,極大的壓力也造成了情緒上的不穩(wěn)定,還好在總體設(shè)計(jì)時(shí)我就就注意到了擴(kuò)展的靈活性,所以在大家的精心協(xié)助下很順利的達(dá)成一致的意見,并最終在規(guī)定的時(shí)間里完成了項(xiàng)目的開發(fā)。 劉振飛:完整準(zhǔn)確的需求定義決定著整個(gè)項(xiàng)目的成敗。需求對(duì)項(xiàng)目組的作用就像劇本對(duì)電影劇組的重要性一樣。同樣的,項(xiàng)目一旦進(jìn)入開發(fā)實(shí)現(xiàn)階段時(shí),只能做局部的小改動(dòng)、最好是不要?jiǎng)?。為什么這個(gè)項(xiàng)目規(guī)劃要花掉整體1/4的時(shí)間?我就是要在一開始的時(shí)候,讓大家集思廣益,把各種情況都擺出來、理清楚,把以后可能的潛在變化都消滅在這個(gè)階段。同時(shí)我一再給公司領(lǐng)導(dǎo)、蔡志宏(詳細(xì)需求定義者)灌輸這樣的理念:需求必須明確、大家討論清楚,然后就不能輕易改動(dòng)了,所以多花些時(shí)間在前期規(guī)劃、書寫Spec及討論上是非常劃算的??雌饋?#8220;浪費(fèi)”了不少時(shí)間在文檔書寫和討論上,但卻節(jié)省了未來大量的維護(hù)時(shí)間。 五一節(jié)后按計(jì)劃開始網(wǎng)站前臺(tái)展示的開發(fā)工作,我突然收到部門領(lǐng)導(dǎo)的Email,問能否停止這個(gè)第1步聯(lián)通網(wǎng)站項(xiàng)目,轉(zhuǎn)向原計(jì)劃第2步那個(gè)移動(dòng)網(wǎng)站的研發(fā)。我立即給領(lǐng)導(dǎo)解釋:項(xiàng)目到這個(gè)階段就像登山到了半山腰,所有人都憋著一口氣瞄準(zhǔn)山頂,這個(gè)時(shí)候突然告訴大家“咱們爬錯(cuò)了,趕緊換旁邊那座山”吧,隊(duì)員們會(huì)是什么感覺?所謂“一鼓作氣,再而竭,三而衰”。當(dāng)時(shí)那個(gè)項(xiàng)目還不具備啟動(dòng)的條件;況且我也需要通過這個(gè)項(xiàng)目來磨合隊(duì)伍。還好我說服了他,這件事沒有影響到項(xiàng)目組。 作為項(xiàng)目經(jīng)理,一定要從善意的角度去理解領(lǐng)導(dǎo)的“多變”和需求的變化。但作為一線指揮官,要在項(xiàng)目前期做規(guī)劃和需求定義時(shí)集思廣益,盡可能避免可以預(yù)測(cè)的變化。當(dāng)變化來臨時(shí),要把真實(shí)的狀況摸清楚——一些變化是必須接受的,一些是討論后可以變通接受的,還有一些是要想法拒絕的:你需要拿出負(fù)責(zé)任的決策,不能盲目服從。 《程序員》:在項(xiàng)目規(guī)劃過程中,你是怎樣預(yù)測(cè)進(jìn)度的?最關(guān)鍵的開發(fā)環(huán)節(jié)是如何保證進(jìn)度的?采用了哪些方法來保證進(jìn)度能及時(shí)有效、保質(zhì)保量地執(zhí)行? 朱偉波:作為開發(fā)組長(zhǎng),首先在項(xiàng)目規(guī)劃中就要根據(jù)需求明確可能用到的技術(shù),并初步估算時(shí)間。但最重要的是需要充分的考慮環(huán)境因素,如領(lǐng)導(dǎo)的支持程度、人員的到位時(shí)間、以及需求的精確程度、甚至公司做項(xiàng)目的風(fēng)格(取決于領(lǐng)導(dǎo)的風(fēng)格)等。項(xiàng)目是不是會(huì)經(jīng)常的變動(dòng)、能否得到大家的支持,都是我要事前需要考慮的,有了這些信息,就可以大致估算項(xiàng)目的開發(fā)實(shí)際需要多長(zhǎng)時(shí)間了。 為保證質(zhì)量,我們事先需要認(rèn)真的做總體概要設(shè)計(jì),這樣對(duì)以后的開發(fā)起到了一個(gè)很好的指導(dǎo)作用。采用一個(gè)好的架構(gòu)對(duì)項(xiàng)目成功的重要性不言而喻,對(duì)以后的擴(kuò)展性、維護(hù)都起到很好的作用。在這個(gè)項(xiàng)目里我和振飛都重視這一點(diǎn),振飛特意多給我一天的時(shí)間來做該項(xiàng)目的設(shè)計(jì)工作。 再一個(gè)就是上面提到的,定義需求時(shí)一定要考慮周全、把握好,不能說變就變。 劉振飛:在 當(dāng)項(xiàng)目進(jìn)度明確后,后面就是監(jiān)督落實(shí)的事情了:需求不清楚時(shí),立即請(qǐng)蔡志宏給出解釋;頁面制作落伍時(shí),緊盯美工人員;開發(fā)完一塊功能,就啟動(dòng)測(cè)試工作。尤其在接近尾聲的時(shí)候,一旦發(fā)現(xiàn)延遲的就立即找出原因,如果在Feature和時(shí)間發(fā)生沖突時(shí),我就需要及時(shí)給開發(fā)人員做出抉擇:Cut Feature還是延遲時(shí)間? 示意圖:項(xiàng)目經(jīng)理要每天關(guān)注各個(gè)環(huán)節(jié)推進(jìn)的速度是否和預(yù)期的一樣 《程序員》:當(dāng)時(shí)你對(duì)公司申請(qǐng)了哪些人力資源?在人員方面的預(yù)計(jì)是怎樣計(jì)算的?打算怎樣利用這些資源?招聘過程中的標(biāo)準(zhǔn)分別是什么? 劉振飛:根據(jù)舊網(wǎng)站的實(shí)踐、公司現(xiàn)有人力資源的情況,然后我們“核心小組”依照以前各自的經(jīng)驗(yàn),確定這個(gè)網(wǎng)站研發(fā)需要的人力資源: Ø 前臺(tái)需求定義:1人(蔡志宏) Ø 后臺(tái)需求定義:2人(劉振飛、朱偉波) Ø 美工設(shè)計(jì)制作:1人 Ø 開發(fā)組:3人(組長(zhǎng)朱偉波) Ø 測(cè)試組:5人(組長(zhǎng)張春艷) 其中開發(fā)組有2人是新招聘,考慮到這個(gè)項(xiàng)目及未來的工作要求,對(duì)開發(fā)工程師的要求是:有較豐富的Java開發(fā)經(jīng)驗(yàn),為人踏實(shí)肯干、能吃苦。我很高興把偉波招聘進(jìn)來,他的Java功力很深厚,顧全大局,工作認(rèn)真負(fù)責(zé),團(tuán)隊(duì)意識(shí)很強(qiáng)。 測(cè)試組不僅僅為這個(gè)網(wǎng)站服務(wù),而是為整個(gè)北京分公司的業(yè)務(wù)測(cè)試負(fù)責(zé)。我對(duì)測(cè)試人員的要求是:喜歡測(cè)試工作,有測(cè)試經(jīng)驗(yàn),學(xué)習(xí)能力強(qiáng)(因?yàn)?/SPAN>SP是個(gè)新興行業(yè))。我也很高興招聘到春艷這樣有好幾年經(jīng)驗(yàn)的同事,她對(duì)測(cè)試流程、規(guī)范、測(cè)試文檔都非常熟悉,幫我扛住了“測(cè)試”這一重要環(huán)節(jié)。 志宏比我早加盟公司,對(duì)業(yè)務(wù)非常熟悉,有很豐富的互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn)。在項(xiàng)目規(guī)劃和需求定義的時(shí)候,他經(jīng)常會(huì)冒出很多新鮮的創(chuàng)意和點(diǎn)子。項(xiàng)目結(jié)束的時(shí)候我跟他開玩笑:忙乎了四個(gè)月,其實(shí)就是我?guī)е粠腿税阉南敕鋵?shí)了。 《程序員》:團(tuán)隊(duì)其他同事最初是否對(duì)你制定的目標(biāo)非常認(rèn)同?大家認(rèn)為這個(gè)項(xiàng)目與之前所做的項(xiàng)目區(qū)別將會(huì)是在哪里?你是怎樣維系團(tuán)隊(duì)氛圍的? 蔡志宏:我們是抱有革新態(tài)度在做這個(gè)項(xiàng)目的,它從思想上不同于一般的網(wǎng)站。開發(fā)之前,振飛和公司上層有很好的溝通,使這個(gè)項(xiàng)目從上到下有了很好的共識(shí),所以大目標(biāo)明確,也能得到了公司的全方位支持。大家對(duì)做這個(gè)項(xiàng)目為公司帶來的收益和重要性有了理解,加上對(duì)公司的歸屬感,大家就都比較敬業(yè)。 朱偉波:這個(gè)項(xiàng)目是我來公司不久做的第一個(gè)項(xiàng)目,不知道大家以前是怎樣看待項(xiàng)目開發(fā)的。我曾聽到了很多不同的質(zhì)疑:這是內(nèi)部的項(xiàng)目為什么要這么趕呢?為什么一定要在規(guī)定的時(shí)間里完成?這個(gè)項(xiàng)目并不能直接為公司帶來很多效益為什著急去完成呢等等。也許在原來做項(xiàng)目的思想下,大家心里有很多為什么,對(duì)這個(gè)項(xiàng)目還抱著一種試探,并沒有重視它。 但欣慰的是,領(lǐng)導(dǎo)對(duì)這個(gè)項(xiàng)目還是很重視的。我剛來公司,沒有歷史包袱,還是按我原來做項(xiàng)目的成功經(jīng)驗(yàn)按部就班。事后證明我的判斷是對(duì)的——這個(gè)項(xiàng)目和我原來做過的項(xiàng)目,其區(qū)別就是打破一家公司做項(xiàng)目的風(fēng)格。“打破”就帶來壓力!試想,如果這個(gè)項(xiàng)目失敗了,說明該公司原來做項(xiàng)目的混亂風(fēng)格未嘗不可,而我們的努力也就付之一炬了。 由于每個(gè)人的做事風(fēng)格不一樣,也會(huì)有這樣那樣的問題。但是在振飛的揉和下大家還是能很好的融入到這個(gè)項(xiàng)目團(tuán)隊(duì)中,最終解決問題,完成任務(wù)。 張春艷:剛來公司時(shí),分配給我的任務(wù)就是測(cè)試舊版133新天地網(wǎng)站、熟悉聯(lián)通WAP業(yè)務(wù)。在測(cè)試舊版網(wǎng)站過程中,發(fā)現(xiàn)問題不少如下: 1、內(nèi)容不夠豐富,不吸引用戶; 2、頁面的展現(xiàn)力不強(qiáng),感覺比較枯燥; 3、程序不夠穩(wěn)定,常出現(xiàn)HTTP Error 500、404錯(cuò)誤; 4、有些很重要的功能都沒有實(shí)現(xiàn)(如搜索功能); 5、N久也不會(huì)更新一次內(nèi)容(大概是因?yàn)楦乱淮魏苈闊┌桑。?/SPAN> 6、沒有需求、沒有目標(biāo),測(cè)試屬于沒有目的狀態(tài),需要憑借經(jīng)驗(yàn)和感覺進(jìn)行盲目測(cè)試。 對(duì)于測(cè)試這樣的網(wǎng)站,我認(rèn)為沒有太大意義,早應(yīng)該進(jìn)行改版或推翻重做。所以對(duì)振飛制定的項(xiàng)目目標(biāo)十分認(rèn)同,并希望協(xié)助很好完成。我理解這個(gè)項(xiàng)目與公司其他項(xiàng)目區(qū)別: 1、一個(gè)不賺錢但為公司所有賺錢項(xiàng)目服務(wù)的一個(gè)項(xiàng)目; 2、是公司當(dāng)時(shí)唯一有規(guī)劃的項(xiàng)目,讓每個(gè)人都心中有數(shù),到了哪個(gè)時(shí)間段該做什么事。其他項(xiàng)目基本處于混亂的狀態(tài),只有提交到測(cè)試這邊才知道有這么回事; 3、測(cè)試方法不同與其他項(xiàng)目:a、時(shí)間計(jì)劃安排上的不同:有頭有尾,且留給測(cè)試的時(shí)間足夠充裕,對(duì)測(cè)試的質(zhì)量給了一個(gè)很好的前提。其他項(xiàng)目經(jīng)常處于救火狀態(tài),下午提交測(cè)試,下班前就要求完成,沒有思考和準(zhǔn)備的時(shí)間;b、測(cè)試方案和方法上,在可重用的流程上首先啟動(dòng)了Test Case的概念并加以執(zhí)行;c、需求文檔的準(zhǔn)備給測(cè)試做了很好的鋪墊。 劉振飛:項(xiàng)目的目標(biāo)不是我一個(gè)人拍腦殼想出來的,而是結(jié)合領(lǐng)導(dǎo)的要求、公司的實(shí)際情況逐步從小范圍到大范圍反復(fù)討論后確立的,項(xiàng)目組的每個(gè)人在規(guī)劃階段結(jié)束的時(shí)候,都非常明確兩個(gè)問題的答案:這個(gè)網(wǎng)站做成什么樣、為什么。 大家對(duì)整體規(guī)劃認(rèn)識(shí)一致后,后面需求、美工、開發(fā)、測(cè)試、運(yùn)營(yíng)等各個(gè)環(huán)節(jié)的工作就可以“統(tǒng)一思想”,因?yàn)橛辛嗣鞔_的共同奮斗目標(biāo)。作為項(xiàng)目經(jīng)理,我做的就是定期把各個(gè)環(huán)節(jié)的進(jìn)展告訴整個(gè)項(xiàng)目組,做到信息透明。一個(gè)目標(biāo)明確、互相信任、尊重、團(tuán)結(jié)的隊(duì)伍,再把項(xiàng)目組的信息公開出來,就能夠保持良好的團(tuán)隊(duì)氣氛。 《程序員》:從需求、測(cè)試和開發(fā)各方面看,是否支持你的目標(biāo)?大家對(duì)這個(gè)項(xiàng)目有信心么?信心源自何處?你是怎樣鼓勵(lì)團(tuán)隊(duì)中其他同事的? 蔡志宏:這個(gè)項(xiàng)目中有許多值得討論的事情。首先在各個(gè)環(huán)節(jié)上都有很突出的創(chuàng)新,難得的就是這一點(diǎn),一是因?yàn)楦鱾€(gè)環(huán)節(jié)的負(fù)責(zé)人均是老手,有創(chuàng)新的實(shí)力;二是一些氣氛方面的因素,振飛的專業(yè)精神感染了我們,振飛有時(shí)候比較容易著急,但是他有一個(gè)核心的優(yōu)點(diǎn)就是簡(jiǎn)單,我們基本上不用過多去考慮和他溝通的方式,只要把信息傳達(dá)到了即可,這樣的一個(gè)項(xiàng)目經(jīng)理可以節(jié)約很多的時(shí)間成本和腦細(xì)胞。 現(xiàn)在的一般的公司里面有許多不適合創(chuàng)新性思維的項(xiàng)目經(jīng)理,對(duì)上不會(huì)溝通,對(duì)下也不會(huì)激發(fā),天天板著個(gè)臉,這樣很難做出什么有創(chuàng)新的項(xiàng)目,我覺得程序員寫的是程序,但是程序員并不是一個(gè)程序。 朱偉波:在同一個(gè)目標(biāo)下,我就只有一個(gè)想法是要按時(shí)按質(zhì)的完成項(xiàng)目。很多老員工對(duì)公司原來開發(fā)的模式感覺不是很好,都希望能換一種模式。在這種心理下都希望能很好的完成項(xiàng)目,來證明自己;同時(shí)也可以在規(guī)范法下學(xué)到很多新的做法,所以大家的熱情都比較高,希望通過正規(guī)的開發(fā)流程學(xué)到很多以前學(xué)不到的規(guī)范,這對(duì)參于項(xiàng)目的人員來說是一個(gè)很好的經(jīng)歷。 當(dāng)遇到困難時(shí),我們都能坐下來很好的商量、討論。再有就是領(lǐng)導(dǎo)的大力支持,讓我們對(duì)這個(gè)項(xiàng)目看到了很大的希望,讓大家都能把熱情投入到項(xiàng)目里。 張春艷:從完成這個(gè)項(xiàng)目的測(cè)試來說,信心源自明確的目標(biāo)、合理的計(jì)劃及各部分之間的配合。對(duì)測(cè)試組來說,蔡志宏需求的配合和朱偉波開發(fā)部的配合都不錯(cuò)。測(cè)試組提出的疑問及Bug會(huì)及時(shí)得到開發(fā)組的回復(fù),或是解決或是經(jīng)振飛確認(rèn)可以延期解決或可以不解。不會(huì)出現(xiàn)有一個(gè)問題沒人搭理的情況。 劉振飛:經(jīng)過2004年第一個(gè)網(wǎng)站的實(shí)踐,我非常有信心,可以把在微軟Office組學(xué)到的產(chǎn)品研發(fā)流程和項(xiàng)目管理方法移植到網(wǎng)站項(xiàng)目中。每個(gè)環(huán)節(jié)的同事在每個(gè)階段應(yīng)該做什么事情,要讓每個(gè)人都非常清楚;項(xiàng)目組的任何信息都是公開透明的。同時(shí)作為項(xiàng)目經(jīng)理,不要有任何“官架子”,大家在人格上都是平等的;出了意外情況的時(shí)候我要第一個(gè)及時(shí)做出反應(yīng),給出經(jīng)過認(rèn)真討論、協(xié)商后的可接受的解決方案。 某個(gè)環(huán)節(jié)、某個(gè)人做的好,要在整個(gè)項(xiàng)目組及時(shí)提出表揚(yáng),特別出色的要爭(zhēng)取申請(qǐng)公司的獎(jiǎng)勵(lì);某個(gè)環(huán)節(jié)、某個(gè)人做的不好,私下里要及時(shí)批評(píng),找出原因和解決辦法,避免重復(fù)同樣的錯(cuò)誤。當(dāng)然,關(guān)鍵時(shí)候某個(gè)環(huán)節(jié)比較勞累的時(shí)候,要請(qǐng)相關(guān)的同事撮頓飯、緩口氣,搞研發(fā)的人既是理性的,又是感性的,大家都需要得到認(rèn)可。 《程序員》: 我們看到你的項(xiàng)目管理依賴大量的文檔。目前這種文檔化的方法似乎在開發(fā)人員中不受理解和歡迎,而且在理論界也受到了不少批評(píng),大家怎么看待這個(gè)問題?以團(tuán)隊(duì)成員的親身體驗(yàn)來說,文檔的作用是什么?如何恰當(dāng)?shù)厥褂梦臋n? 蔡志宏:這個(gè)項(xiàng)目在嚴(yán)格的時(shí)間控制下完成的,振飛為每一個(gè)小的環(huán)節(jié)設(shè)置了一個(gè)Deadline,包括一個(gè)小圖標(biāo)的制作,我很佩服他可以這么精確的統(tǒng)計(jì)到工作量,做那么多的Excel表格和PPT來管我們。網(wǎng)站上線之后,我吃驚的發(fā)現(xiàn)在服務(wù)器的CVS目錄里面居然有上百個(gè)這樣的文檔,這些文檔中的有許多是用來記錄每次開會(huì)的情況和隨之而來的工作分配,事無巨細(xì)!我想如果微軟的Office要是這樣做出來的話,那肯定要拿好幾個(gè)電腦來裝這些文件。 朱偉波:文檔是軟件生命周期必不可少的東西。為了讓項(xiàng)目能有一個(gè)清晰且強(qiáng)壯的結(jié)構(gòu),就要做總體設(shè)計(jì),具體到運(yùn)用什么技術(shù),使用該技術(shù)對(duì)我們?nèi)蘸笥惺裁春锰?、要承?dān)那些風(fēng)險(xiǎn),以及采用什么樣的結(jié)構(gòu)來開發(fā)等等,這些都一一記錄下了,為下一步的開發(fā)做好準(zhǔn)備。 在開發(fā)前我們還寫了一份詳細(xì)的概要文檔,這份文檔主要記錄了日后開發(fā)的細(xì)節(jié),比如包路徑、代碼的規(guī)范、需要的輔助類、每個(gè)包下放什么東西、公用類的簡(jiǎn)介、用法等等。這些文檔為日后我們查詢起到了舉足輕重的作用,為后續(xù)補(bǔ)充進(jìn)來的人員起到了很好的引領(lǐng)作用。在開發(fā)過程中依據(jù)這些詳細(xì)的文檔能衡量代碼、判斷思想是否一致、風(fēng)格是否統(tǒng)一等等。 文檔的作用主要是規(guī)范行為和風(fēng)格,讓大家有一標(biāo)準(zhǔn),避免在開發(fā)過程中走一些不必要的彎路。當(dāng)然,在制定文檔時(shí)需要全面考慮——要可實(shí)施。如果事先在寫文檔時(shí)不能考慮周全,那么可能直接導(dǎo)致項(xiàng)目失敗。 張春艷:文檔是主要的工作產(chǎn)品之一,好的文檔可以推進(jìn)后續(xù)的工作順利執(zhí)行。如:好的測(cè)試用例,第一、可以作為執(zhí)行測(cè)試的依據(jù)和參考資料之一;第二、如果公司的測(cè)試人員流動(dòng),新來的測(cè)試人員不會(huì)無從下手;第三、文檔也是公司的財(cái)富之一。 劉振飛:不要去寫那些走形式、對(duì)項(xiàng)目沒有實(shí)質(zhì)意義的文檔,比如變了味的所謂ISO9000或CMM認(rèn)證的那些文檔、極其復(fù)雜混亂的UML文檔:每個(gè)人心里都很清楚那種文檔沒有用處,但還不得不寫,勞民傷財(cái),非常可笑。 文檔的作用就是把問題想清楚、記下來,讓別人能夠看懂、能接手進(jìn)行維護(hù)。比如需求Spec的作用是幫助需求定義人把需求細(xì)節(jié)真正想清楚,對(duì)該模塊進(jìn)行詳細(xì)定義:功能描述、邏輯、界面、如何使用,就是站在用戶的角度去細(xì)化、去說明。需求Spec首先要自己想明白、并以別人能夠理解的文字記錄下來,作為開發(fā)的“合同”。Spec要及時(shí)更新,反映最新的狀態(tài)。 當(dāng)然在實(shí)踐中,中小企業(yè)的項(xiàng)目研發(fā)進(jìn)度都趕的比較急,把文檔細(xì)化到什么程度、如何保持更新,都是比較頭痛的事情。 示意圖:項(xiàng)目有幾十份各種格式的文檔,有效的文檔對(duì)項(xiàng)目成功極其重要 《程序員》:除了文檔,還有那些制度是你在這個(gè)項(xiàng)目中新建立起來的?如何保證這些制度的被理解和被執(zhí)行? 蔡志宏:除了文檔,就是無所不在的BugFree(http://bugfree.)系統(tǒng)了,這讓我想到一句話,“體制化是這樣一種東西,一開始你排斥它,后來你習(xí)慣它,直到最后你離不開它。”開始的時(shí)候大家都比較討厭那個(gè)叫BugFree的那東西,實(shí)在是麻煩,感覺一個(gè)很小的事情都要發(fā)一個(gè)Bug,覺得純粹是在浪費(fèi)時(shí)間。后來發(fā)現(xiàn)這東西有它不可替代的好處,一個(gè)問題從出現(xiàn)開始到最后解決都有它跟蹤,效率反而提高了許多,盡管在后來對(duì)哪些問題應(yīng)該發(fā)Bug進(jìn)行了一些爭(zhēng)論并做了調(diào)整,但是BugFree系統(tǒng)在這個(gè)項(xiàng)目中起到了很重要的作用。 朱偉波:在這次開發(fā)過程中使用了CVS作為我們的版本控制,我們規(guī)定在上傳代碼到CVS時(shí)一定需要寫注釋,以便事后能很快的查詢。在開發(fā)組內(nèi)部開了一個(gè)會(huì)議,我重申了上傳代碼時(shí)寫注釋的重要性,并當(dāng)場(chǎng)上傳了一些不帶注釋的代碼,讓大家來恢復(fù)到我所需要的版本——在這種情況下大家很難一下就恢復(fù)到自己想要的版本。通過這種方法讓大家意識(shí)到自己原先的不規(guī)范的地方,統(tǒng)一認(rèn)識(shí),為保證下一步的研發(fā)打下了堅(jiān)實(shí)的基礎(chǔ)。 還有就是寫程序時(shí)要符合公司的代碼規(guī)范,其實(shí)就是在符合Sun公司的規(guī)范前提下統(tǒng)一我們代碼的規(guī)范性。做到這一點(diǎn)其實(shí)是很難的,大家來著不同的環(huán)境,以前接觸的人也是不同。這就要求大家都堅(jiān)持一個(gè)共同認(rèn)可的標(biāo)準(zhǔn),并嚴(yán)格的執(zhí)行這一標(biāo)準(zhǔn)。我很慶幸的是大家都能很好的堅(jiān)持我們公司制定的代碼規(guī)范,并且在我們公司的代碼檢查中順利的通過了考核。 張春艷:公司在測(cè)試這一環(huán)節(jié)的起步較晚,基本上是在今年的3月份才組建起了一只測(cè)試團(tuán)隊(duì),還有很多人認(rèn)為測(cè)試是一個(gè)可有可無的過場(chǎng)。還好有領(lǐng)導(dǎo)的支持與認(rèn)可,我們測(cè)試組努力把工作做得漂亮,證明自己存在的價(jià)值。用我們的實(shí)戰(zhàn)來告訴大家,測(cè)試不是隨隨便便就能完成的,而是一件有始有終、有流程、有規(guī)范、非常嚴(yán)謹(jǐn)?shù)囊豁?xiàng)保證產(chǎn)品質(zhì)量的工作。 在133網(wǎng)站的測(cè)試中,我們就是這樣證明了測(cè)試組存在的意義: 1、根據(jù)振飛制定的規(guī)劃,我們按時(shí)完成了測(cè)試進(jìn)度,沒有拖延錄入及上線時(shí)間。 2、首次采用Test Case的方法完成下載流程的測(cè)試,并且取得了很好的效果。此次的Test Case還可以移植到以后網(wǎng)站的日常監(jiān)控測(cè)試中。 3、測(cè)試效果體現(xiàn)。(1)保證后期錄入人員在錄入時(shí)不出基本錯(cuò)誤;(2)利用邊界值的測(cè)試方法,提前測(cè)試出錄入后前臺(tái)展示可能不美觀的情況,便于在錄入前給出提示或硬性規(guī)定(如輸入的專題名的長(zhǎng)度等),來保證前臺(tái)的展示效果和錄入的效率;(3)為了使大數(shù)據(jù)量的用戶訪問情況下不出問題,我對(duì)首頁進(jìn)行了100人同時(shí)訪問的壓力測(cè)試。 4、在 劉振飛:除了要求需求、開發(fā)、測(cè)試文檔外,我逐步建立了如下制度: ★ 嚴(yán)格的進(jìn)度控制,每個(gè)環(huán)節(jié)都要遵守自己同意的進(jìn)度 ★ 用CVS來管理文檔和代碼 ★ Java編碼要有規(guī)范 ★ 每一個(gè)功能模塊都必須經(jīng)過測(cè)試 ★ 項(xiàng)目進(jìn)展情況定期通報(bào)給全組同事 ★ 有延遲的時(shí)候要立即提出來,及時(shí)找到補(bǔ)救辦法 ★ 項(xiàng)目完了要及時(shí)總結(jié),驗(yàn)尸報(bào)告不是走過場(chǎng) 當(dāng)然我不可能在短短四個(gè)月中通過這一個(gè)項(xiàng)目把這些制度都打造的很完美。關(guān)鍵是通過這個(gè)項(xiàng)目給大家灌輸這些意識(shí),通過以后的工作實(shí)踐不斷強(qiáng)化,真正形成好習(xí)慣。這些制度其實(shí)都是研發(fā)中的基本素質(zhì)、本來就該這么做,所以面對(duì)這么多人、這么多事,我一個(gè)人有時(shí)難免有疲累、孤獨(dú)的感覺,很多時(shí)候只能抓住大的方面,一些細(xì)節(jié)只能忽略了,是很無奈的事情。 《程序員》:盡管133項(xiàng)目的完成已經(jīng)非常不錯(cuò)了,但在你的項(xiàng)目中仍然會(huì)再次提到“驗(yàn)尸報(bào)告”這個(gè)詞,你認(rèn)為項(xiàng)目還有哪些不足之處。 蔡志宏:我是第一次參與“驗(yàn)尸報(bào)告”,感覺很新鮮。的確在最后結(jié)束的時(shí)候,大家和振飛面對(duì)面的單獨(dú)總結(jié)了各個(gè)環(huán)節(jié)的工作,對(duì)整個(gè)項(xiàng)目的運(yùn)作有了更宏觀的視野,大家都站在一個(gè)更加高的角度來看待我們完成的工作。 朱偉波:我覺得一個(gè)人的成長(zhǎng)是在一件事即將結(jié)束的時(shí)候。在做項(xiàng)目時(shí)我沒時(shí)間過多的考慮去用什么新技術(shù)、用什么新概念、會(huì)有什么不足等等。這些都是在項(xiàng)目結(jié)束階段時(shí)我們總結(jié)所得,回顧項(xiàng)目過程時(shí)能發(fā)現(xiàn)有那些不足,這樣就有時(shí)間來考慮在下一個(gè)項(xiàng)目里用什么東西來彌補(bǔ)不足的地方。 我們開發(fā)組和振飛一起總結(jié)出來項(xiàng)目的不足有:(1)美工的工作進(jìn)度緩慢,在很大的時(shí)間里直接影響到開發(fā)的進(jìn)度。(2)我們不應(yīng)該讓美工的開發(fā)和代碼的開發(fā)并行的來完成,使得很多的代碼重復(fù)。(3)代碼的開發(fā)和測(cè)試的同步也是一個(gè)不可取的做法,在測(cè)試組前期測(cè)出的大量Bug,可是當(dāng)研發(fā)繼續(xù)往下走后這些Bug就不存在了。(4)還有一點(diǎn)就是當(dāng)我們完成這個(gè)項(xiàng)目研發(fā)后,網(wǎng)站營(yíng)運(yùn)人員遲遲不能到位,內(nèi)容跟不上。這是我們事先沒有考慮到的。 張春艷:任何一個(gè)項(xiàng)目都不會(huì)十全十美,就像一個(gè)再好的軟件也不會(huì)沒有Bug一樣。不是只有做得不好的項(xiàng)目才需要“驗(yàn)尸報(bào)告”。我覺得“驗(yàn)尸報(bào)告”是這個(gè)項(xiàng)目中很好的一個(gè)環(huán)節(jié)。不僅可以把好的東西繼承下來,還把不足的地方提出來,給以后的項(xiàng)目作為經(jīng)驗(yàn)。 劉振飛:Everything that has a beginning has an end. 項(xiàng)目總結(jié)最重要作用的就是“承前啟后,繼往開來”,表揚(yáng)與自我表揚(yáng)相結(jié)合、批評(píng)與自我批評(píng)相結(jié)合,不能走過場(chǎng)。不僅要在以后的工作發(fā)揚(yáng)光大成功的地方,更要解決這個(gè)項(xiàng)目中曾經(jīng)存在的問題,真正做到“吃一塹長(zhǎng)一智”。 示意圖:133網(wǎng)站項(xiàng)目的“驗(yàn)尸報(bào)告” 通過我這一年多的實(shí)踐,痛感研發(fā)管理不僅僅是某個(gè)項(xiàng)目?jī)?nèi)部管理的事情,它涉及到整個(gè)公司的發(fā)展戰(zhàn)略、領(lǐng)導(dǎo)層素質(zhì)、員工能力、薪酬體系乃至企業(yè)文化的建設(shè),僅僅從項(xiàng)目管理的層面去解決問題的成效將是非常有限的,這是一個(gè)系統(tǒng)工程,靠一人之力來完善是不現(xiàn)實(shí)的。歡迎《程序員》的讀者朋友就項(xiàng)目管理一起交流心得,我的Email是:liuzf@pku.org.cn 。 |
|
|