項(xiàng)目管理是一個(gè)非常復(fù)雜和系統(tǒng)性的工作,一個(gè)項(xiàng)目的成功往往能帶來(lái)巨大的經(jīng)濟(jì)效益,一個(gè)項(xiàng)目的失敗也可能浪費(fèi)大量的人力物力。中培偉業(yè)《IT項(xiàng)目管理最佳實(shí)踐》培訓(xùn)專家王老師根據(jù)自己多年的工作經(jīng)驗(yàn),就項(xiàng)目管理失敗的原因談了自己的看法。王老師指出,項(xiàng)目失敗的原因,有技術(shù)上的也有管理上的,以下是導(dǎo)致項(xiàng)目失敗常見的5個(gè)原因。
錯(cuò)誤一:采用平庸的開發(fā)團(tuán)隊(duì)
軟件設(shè)計(jì)是有難度的,而且不幸的是,很多自稱程序員的人確實(shí)不能勝任軟件設(shè)計(jì)。盡管這是項(xiàng)目失敗的首要原因,你也不曾從官方的失敗報(bào)告中得知。在所有的行業(yè),軟件業(yè),物流業(yè),或者客服業(yè),人們對(duì)同事的無(wú)能都太過(guò)寬容。你從來(lái)都不會(huì)聽到有人說(shuō)“我們團(tuán)隊(duì)沒(méi)有足夠的智慧來(lái)完成這件事”。為什么要這樣傷人的心呢?顯而易見的,如果這隊(duì)分得了任務(wù)的人員并不擅長(zhǎng)這份工作,他們的工作會(huì)日復(fù)一日,日復(fù)一日……等等……但軟件卻沒(méi)有做出來(lái)。你也不用太擔(dān)心 HR 會(huì)阻撓你招聘一班廢物。在大多數(shù)的案例里,我向你保證,HR 對(duì)此毫無(wú)建樹。
錯(cuò)誤二:按周來(lái)定目標(biāo)
假設(shè)你想改造你的廚房。你請(qǐng)來(lái)的師傅已經(jīng)搞過(guò)很多廚房,而且不作詳細(xì)藍(lán)圖就能估算出這項(xiàng)工作的成本。但軟件開發(fā)者是在制造前所未有的東西。如果前所已有,他賣張拷貝的光盤給你就行了。因此,粗略的估計(jì)是不可能的。他們需要在寫代碼之前做好詳盡的計(jì)劃。無(wú)論你是客戶還是開發(fā)經(jīng)理,你的責(zé)任就是確保開發(fā)人員帶著詳盡計(jì)劃來(lái)開展工作。當(dāng)你向開發(fā)人員詢問(wèn)計(jì)劃時(shí),他們大多數(shù)人可能只會(huì)給你一份把進(jìn)度按周來(lái)劃分的時(shí)間表。這看似非常合理,但其實(shí)不然。如果你讓軟件團(tuán)隊(duì)提交一份大粒度的時(shí)間表(大是指需要兩天以上的工作),那么你可以認(rèn)定他們沒(méi)有考慮到所有需要實(shí)現(xiàn)的細(xì)節(jié),而這些細(xì)節(jié)將會(huì)積累,導(dǎo)致延期。
錯(cuò)誤三:為截止時(shí)間而談判
還有什么比按周劃分軟件項(xiàng)目更糟糕?就是要求團(tuán)隊(duì)承諾大大地提早完成工作。根據(jù)我的經(jīng)驗(yàn),大多數(shù)開發(fā)者都會(huì)樂(lè)觀地接受你的暗示并參與討價(jià)還價(jià)。然后你會(huì)得到一份友好的協(xié)定時(shí)間表,但卻無(wú)法按時(shí)執(zhí)行。
試想以下情況:海象媽媽會(huì)在懷孕 15 到 16 個(gè)月后,生出小海象。你可能會(huì)叫海象媽媽保證在 15 個(gè)月內(nèi)做到,而她也說(shuō)沒(méi)問(wèn)題。或者你說(shuō),“15 個(gè)月?瘋了吧?我們要在 8 個(gè)月內(nèi)生出”。當(dāng)然,這樣談判是無(wú)法促進(jìn)事成的,而且即使得到一份 8 個(gè)月的進(jìn)度表,我還是告訴你一個(gè)小秘密:這是不可能實(shí)現(xiàn)的。你可以取得一份 11 個(gè)月的時(shí)間表,但你還是要等 15 個(gè)月,因?yàn)樾『O缶褪且?15 個(gè)月才能出產(chǎn),有時(shí)甚至 16 個(gè)月。
錯(cuò)誤四:均分任務(wù)
這里有一個(gè)破壞項(xiàng)目的好方法。列出人們需要做的所有工作,然后給重新均分給各人。如果 Mary 有太多的工作,就分一些給 John。這聽起來(lái)完全合理,使得你不會(huì)被質(zhì)疑。但我向你保證,時(shí)間一長(zhǎng)肯定會(huì)出現(xiàn)問(wèn)題。那是因?yàn)楫?dāng)一個(gè)開發(fā)者去替代另一個(gè)時(shí),我們有理由假設(shè)效率降為十分之一。John 將會(huì)花費(fèi)無(wú)數(shù)小時(shí)去搞清楚 Mary 其實(shí)已經(jīng)熟悉的那部分代碼。而且 John 改 bug 也不及 Mary 快,因?yàn)?Mary 才了解所有的陷阱在哪里。
錯(cuò)誤五:工作到深夜
讓我們假設(shè)有個(gè)項(xiàng)目要每周工作 40 小時(shí),連續(xù)六個(gè)月才能完成。如果你讓所有人每周工作 60 小時(shí),那么持續(xù)四個(gè)月就能完全搞定,軟件團(tuán)隊(duì)可能甚至?xí)邮苓@個(gè)挑戰(zhàn)。
然而現(xiàn)實(shí)是 軟件開發(fā)者花費(fèi)大量的腦力勞動(dòng)。即使是最好的程序員,也很少有能堅(jiān)持幾小時(shí)以上的高強(qiáng)度腦力勞動(dòng)。另外,他們還需要休息一下大腦。這就是為什么你好像總能撞到他們?cè)谏暇W(wǎng)或玩游戲。
強(qiáng)迫他們投入更長(zhǎng)時(shí)間坐在電腦前,并不會(huì)轉(zhuǎn)化為更多的產(chǎn)出——即使會(huì),那都將是劣質(zhì)的產(chǎn)品。當(dāng)軟件開發(fā)者的大腦完全發(fā)燒,他們幾乎做錯(cuò)多過(guò)做對(duì),寫出無(wú)法使用的代碼,或者引入大量的 bug。
一旦你有時(shí)間表在手,不要嘗試提前截止日期。如果項(xiàng)目不能在你能諒解的時(shí)間內(nèi)完成,解決方法不應(yīng)是去交涉一個(gè)“好聽的”時(shí)間表,而應(yīng)該是爭(zhēng)取更多資源,或者推遲上線,或者拿掉一些功能。
當(dāng)項(xiàng)目正在進(jìn)行時(shí),你會(huì)多次被誘導(dǎo)而想重新分配工作。但你要謹(jǐn)慎地重分配。所換的新人需要花不少時(shí)間去駕馭原作者的代碼。我覺(jué)得讓人員在不同崗位上輪換有助于消除不可替代性,但我是謹(jǐn)慎地安排這事,并且在時(shí)間表里加入額外的三周給新人以學(xué)習(xí)新代碼,和額外的一周給舊人去教新人。
最后,鼓勵(lì)你的員工按合理的工時(shí),一周干 40 小時(shí)。在技術(shù)的世界里,應(yīng)該將一個(gè)大項(xiàng)目看成是一次馬拉松,而非一次短跑。