淺析項(xiàng)目管理中進(jìn)度不快的問(wèn)題
在現(xiàn)在這個(gè)項(xiàng)目做了有半年的時(shí)間了,發(fā)現(xiàn)進(jìn)度遠(yuǎn)沒有想象中的快,什么原因呢?
我歸納了一下,主要有下面兩點(diǎn):
1.使用敏捷開發(fā)
2.角色分配
敏捷開發(fā),這是現(xiàn)在非常時(shí)興的一個(gè)詞,聽起來(lái)挺牛逼的,敏捷,讓我們感覺用了它就會(huì)“快”。在被這種開發(fā)模式折磨了1年多的我想說(shuō),其實(shí)它跟其他所有的事情都一樣,它有自己適用的領(lǐng)域,假如錯(cuò)誤的以為任何項(xiàng)目用敏捷開發(fā)都能敏捷,那就是自找苦吃。
為什么?敏捷開發(fā)的特點(diǎn)就是根據(jù)用戶的需求迭代,一個(gè)迭代解決一個(gè)迭代的問(wèn)題,對(duì)于一個(gè)對(duì)于架構(gòu)清晰的項(xiàng)目來(lái)說(shuō),這樣每一個(gè)迭代都會(huì)有一些成果。而對(duì)于有些項(xiàng)目而言,比如說(shuō)殺毒軟件,磁盤分析器等等,對(duì)于這種產(chǎn)品類的項(xiàng)目,很多時(shí)候它的需求都是一開始需要定義清楚的,客戶名義上是廣大的PC用戶,實(shí)際上是PM或是PGM,PM說(shuō)這個(gè)項(xiàng)目里面我們要做3個(gè)功能,那我們就需要做3個(gè)功能,多一個(gè)不行,少一個(gè)也不行,如果PGM在你做了3個(gè)功能后告訴你,要加一個(gè)功能,而且這個(gè)功能在舊的架構(gòu)上是很難實(shí)現(xiàn)的,那么這個(gè)PGM就是不合格的,為什么?因?yàn)樗哟罅隧?xiàng)目的成本。所以,我想說(shuō)的是,如果需求是由我們自己定義,而且我們很清楚要做一個(gè)什么東西的時(shí)候了,采用敏捷開發(fā)的風(fēng)險(xiǎn)可能會(huì)加大,因?yàn)樗^(guò)多的依賴于“迭代”,認(rèn)為迭代可以解決大多數(shù)的問(wèn)題,可是實(shí)際情況遠(yuǎn)不如此樂觀!當(dāng)你的PM對(duì)你我們要加這個(gè)新功能,之前的定義的功能不行這個(gè)迭代要改的時(shí)候,作為一個(gè)程序員,我們能做什么呢?去跟PM說(shuō),對(duì)不起,我們之前的底層架構(gòu)不支持這種變態(tài)的需求,PM會(huì)告訴你,我就是代表客戶,這個(gè)功能就得這么做,我說(shuō)了算,為什么不支持,我們不是采用的敏捷開發(fā)嗎,敏捷開發(fā)的特點(diǎn)不是迭代來(lái)解決問(wèn)題嗎?
老實(shí)說(shuō),瀑布模型的好處之一,就是你的PM可以少幾個(gè)變需求的理由,PM一個(gè)星期變一次需求,我們程序員就沒有幸??裳粤?,所以,我想勸有些項(xiàng)目經(jīng)理,別拿需求的變更當(dāng)做理所應(yīng)當(dāng)?shù)?,你不是一個(gè)嬌生慣養(yǎng)的小孩,沒有必要變的需求就不要變,如果你把敏捷開發(fā)的需求變更當(dāng)做是你隔三差五變需求的理由,那下個(gè)項(xiàng)目,當(dāng)你的程序員聽說(shuō)你要用敏捷開發(fā),肯定想抱頭痛哭。你是產(chǎn)品的設(shè)計(jì)師,這個(gè)產(chǎn)品的外觀功能,應(yīng)該一開始就定義好,不要前一個(gè)月說(shuō)要做個(gè)電飯煲,這個(gè)月又說(shuō)要在電飯煲加個(gè)微波爐的功能,如果你手下的程序員任勞任怨,把微波爐的功能真的加進(jìn)了電飯煲,那只能說(shuō)PM幸運(yùn),碰到了技術(shù)牛人,并且技術(shù)確實(shí)是可行的,但是如果功能實(shí)現(xiàn)不了,那么PM可能就怪開發(fā)者,覺得他們技術(shù)不行,心想我用的是敏捷開發(fā),為什么我給了你們時(shí)間缺不能解決問(wèn)題呢?
時(shí)間確實(shí)是可以解決問(wèn)題,但是作為開發(fā)者更希望把時(shí)間多花在需求分析階段,而不是修改舊的代碼上。
開發(fā)模型只是一種工具,依賴敏捷開發(fā)這個(gè)工具,并不是解決所有問(wèn)題的萬(wàn)金油。
作為項(xiàng)目經(jīng)理,你不光要對(duì)客戶負(fù)責(zé),更需要對(duì)產(chǎn)品負(fù)責(zé),對(duì)你手下的程序員負(fù)責(zé)。其實(shí),假如做不到后面兩點(diǎn)***點(diǎn)也不好做到,因?yàn)轫?xiàng)目很可能經(jīng)常delay,到***客戶不滿意,或者產(chǎn)品上線的時(shí)候早已經(jīng)落于市場(chǎng)上其他的產(chǎn)品。
角色分配的問(wèn)題在整個(gè)軟件開發(fā)過(guò)程也是很重要的,說(shuō)簡(jiǎn)單點(diǎn)就是分工要明確,按照博弈論的觀點(diǎn),假如我們每個(gè)人的目標(biāo)都是合理的,那么我們通過(guò)相互的制約很好的推進(jìn)項(xiàng)目的周期,但是如果角色分配的不合理,比如說(shuō)職責(zé)重復(fù),缺少角色等等,那么開發(fā)的過(guò)程中就會(huì)遇到很多利益沖突,解決不好,就容易導(dǎo)致團(tuán)隊(duì)不和諧,沒有凝聚力等等,最嚴(yán)重的情況就是大家各自為政,都聽不進(jìn)別人的意見,大家都是會(huì)為別人著想的人,但是有時(shí)候想得太多,總是會(huì)覺得不合理,不公平,難免影響工作情緒。
在我現(xiàn)在這個(gè)項(xiàng)目就有類似的問(wèn)題,首先,就是沒有一個(gè)架構(gòu)設(shè)計(jì)人員,經(jīng)驗(yàn)豐富的開發(fā)和經(jīng)驗(yàn)較淺的開發(fā)做的事情是差不多的,整體架構(gòu)的設(shè)計(jì)名義上是大家一起來(lái)做,但是在開發(fā)過(guò)程中就發(fā)現(xiàn)了問(wèn)題,對(duì)于一個(gè)架構(gòu)變動(dòng),沒有人有決策能力,TM只會(huì)說(shuō),有問(wèn)題跟我說(shuō),然后你發(fā)現(xiàn)了問(wèn)題告訴他,他卻不知道和誰(shuí)來(lái)商量,經(jīng)過(guò)和一個(gè)個(gè)的開發(fā)者進(jìn)行了討論,認(rèn)為這個(gè)架構(gòu)的變更確實(shí)是必須并且可行的時(shí)候又要開一次會(huì),來(lái)討論怎么來(lái)做這個(gè)變更,由誰(shuí)來(lái)負(fù)責(zé)這個(gè)變更,所以說(shuō),SD是必須的。而在一次會(huì)議上我聽別人說(shuō)做SD必須要有10年的經(jīng)驗(yàn),我覺得有點(diǎn)可笑,有很多優(yōu)秀的開發(fā)在很早就做上了架構(gòu)師,我認(rèn)識(shí)的人里面就有一個(gè),其實(shí)我覺得邏輯思維能力較強(qiáng),有整體架構(gòu)思想,并且對(duì)項(xiàng)目中使用技術(shù)有一定研究就可以做SD了,倒是我不明白現(xiàn)在為什么很多軟件公司都特別在乎工作年限,認(rèn)為做了10年IT就是萬(wàn)金油了,什么事情都可以解決,真是大錯(cuò)特錯(cuò)。
我認(rèn)為,做什么事情都有一個(gè)精與不精的區(qū)別,假如那句什么語(yǔ)言不重要,重要的是思想,一通百通的話我覺得真是沒什么意義。我們都知道C和JAVA.NET的側(cè)重點(diǎn)不一樣,一個(gè)偏向底層,一個(gè)偏向應(yīng)用,讓一個(gè)做C做了10的人去做一個(gè)網(wǎng)站可能都做不好,為什么?因?yàn)樗麤]有對(duì)網(wǎng)站應(yīng)用根本就不了解,用戶需要什么他都不知道,他腦袋想的只是如何使用戶體驗(yàn)更加的絢,但是卻不知道網(wǎng)頁(yè)上能不能實(shí)現(xiàn)這個(gè)絢的效果,網(wǎng)頁(yè)上上傳做個(gè)進(jìn)度條能不能實(shí)現(xiàn),實(shí)現(xiàn)的難度大不大,他都不知道,這樣的架構(gòu)師能做好網(wǎng)站嗎。同樣讓.NET程序員去做JAVA的事情也不一定做的好。聞道有先后,術(shù)業(yè)有專攻,這句話是有道理滴。
角色分配的問(wèn)題還體現(xiàn)在我們不能越庖代廚,如果你是RD,你就不要過(guò)多的去擺弄需求,覺得需求不該這么做,因?yàn)檫@個(gè)問(wèn)題不該你想,想這個(gè)問(wèn)題只是浪費(fèi)時(shí)間,如果你是PM,你就不要過(guò)問(wèn)架構(gòu)和技術(shù)細(xì)節(jié),因?yàn)槟闶冀K不如開發(fā)了解實(shí)際的問(wèn)題,如果你是一個(gè)做了十幾年開發(fā)的PM,自己手下的技術(shù)不如自己,硬要按照自己的想法去做事,那么不要做PM,你可以做個(gè)SD。我以前就碰到過(guò)這樣一個(gè)PM,讓我去做一個(gè)圖片處理的程序,他想讓我把一張圖變清晰,我覺得一張從100K壓縮成了10K的圖你還想讓他變清晰仿佛是不可能的事情,用腳趾頭想問(wèn)題也知道那丟的90K是干什么的,PM要我多測(cè)試幾次,經(jīng)過(guò)測(cè)試確實(shí)是不可行的,但是PM不相信,因?yàn)樗隽艘荒甓嗟拈_發(fā),于是中午不吃飯跑到我的機(jī)器上寫代碼,口中還念念有詞的,等我吃完飯睡好午覺,他終于認(rèn)輸了,雖然如此,但是從這件事上我就覺得有點(diǎn)不痛快,多的就不想說(shuō)了。
上面我對(duì)自己項(xiàng)目中的問(wèn)題做出的一點(diǎn)總結(jié),也算是一點(diǎn)牢騷吧,作為一個(gè)小小的RD只為了讓自己把問(wèn)題記錄下來(lái)在以后的項(xiàng)目中盡量避免,可能想法有些偏激,希望各位網(wǎng)友多多指教,我會(huì)虛心學(xué)習(xí)。
原文鏈接:http://www.cnblogs.com/nero/archive/2011/07/04/2097030.html
【編輯推薦】