在連續(xù)封閉N個(gè)月以及再后來的N個(gè)月的加班后,項(xiàng)目終于以延期N個(gè)月的結(jié)果結(jié)束了。不管曾經(jīng)發(fā)生過什么,不管項(xiàng)目是否延期,重要的是項(xiàng)目結(jié)束了,所有的項(xiàng)目成員都可以松一口氣了。曾經(jīng)和同事開玩笑說:在我經(jīng)過過的失敗項(xiàng)目中多了一個(gè)項(xiàng)目,以后就能避免同樣類型的失敗了。同事們聽了,都笑了。在那段時(shí)間里,很久沒有聽到過同事們暢快的笑了。
現(xiàn)在,我以我目前的知識(shí)水平,總結(jié)一下項(xiàng)目中存在的問題,這些問題的出現(xiàn)也不是一兩個(gè)因素造成的。當(dāng)然,專業(yè)水平太低,也總結(jié)不出什么高深的內(nèi)容。不管怎么樣,也算是對(duì)項(xiàng)目的總結(jié)吧。這里先總結(jié)一下我認(rèn)為的問題,項(xiàng)目值得學(xué)習(xí)的方面將在下次總結(jié)。
1. 項(xiàng)目計(jì)劃的制定
我不是很清楚是否在一開始了解過這個(gè)項(xiàng)目的規(guī)模,估算過項(xiàng)目的成本和工期以及資源和技術(shù)的可行性。當(dāng)我進(jìn)入這個(gè)項(xiàng)目的時(shí)候,就被告知項(xiàng)目在3個(gè)月內(nèi)完成,當(dāng)時(shí)我們正在客戶方做業(yè)務(wù)需求了解。(說明一下,3個(gè)月的時(shí)間是在項(xiàng)目開始之前公司決定的,而并沒有經(jīng)過項(xiàng)目組成員根據(jù)功能估算以及項(xiàng)目經(jīng)理的綜合制定) 也不知道了解的情況是不是這樣,但不管怎么樣,在還沒有了解項(xiàng)目的功能就做好了項(xiàng)目的開發(fā)時(shí)間,這樣項(xiàng)目的風(fēng)險(xiǎn)性是否較高呢?這樣導(dǎo)致的結(jié)果是開發(fā)人員按照規(guī)定的時(shí)間制定開發(fā)計(jì)劃,最后發(fā)現(xiàn)項(xiàng)目規(guī)模較大,很多功能也都沒有按期完成,也很難按期完成。不但無(wú)法按期完成,為了趕進(jìn)度,代碼的質(zhì)量也就得不到保證,某些項(xiàng)目組成員有推倒重寫的沖動(dòng)。(代碼質(zhì)量也不止是計(jì)劃導(dǎo)致的,還包括個(gè)人的開發(fā)經(jīng)驗(yàn)) 如果不是項(xiàng)目經(jīng)理超強(qiáng)的管理控制能力,我想項(xiàng)目也不會(huì)有結(jié)束的日子。
2. 開發(fā)團(tuán)隊(duì)的穩(wěn)定
在業(yè)務(wù)了解階段,項(xiàng)目組所需要的人員還在招聘中沒有全部到位。進(jìn)入界面原型開發(fā)階段,項(xiàng)目組新近N人。在封閉開發(fā)期間,又加入N人,同時(shí),也有N人離開。項(xiàng)目在開發(fā)的中前期團(tuán)隊(duì)就沒有得到穩(wěn)定,導(dǎo)致工作進(jìn)度和計(jì)劃的不一致。而且,每次來增加人員后,都得進(jìn)行相關(guān)的培訓(xùn)和業(yè)務(wù)了解。同時(shí),人員變更導(dǎo)致不同的人都接手過同一模塊,造成代碼維護(hù)的難度加大。
3. 需求了解
為了趕項(xiàng)目進(jìn)度,二是對(duì)業(yè)務(wù)的不了解,三是業(yè)務(wù)人員業(yè)務(wù)掌握的差異,在沒有全部了解并消化的情況,項(xiàng)目組進(jìn)行封閉開發(fā)。同時(shí),相關(guān)人員也在繼續(xù)了解其他的業(yè)務(wù)。這所有的情況,導(dǎo)致開發(fā)期間發(fā)生過N次的設(shè)計(jì)變更,程序無(wú)數(shù)次的改動(dòng)。而且,在開發(fā)的后期都發(fā)生過業(yè)務(wù)不斷的改變的情況。
4. 總體設(shè)計(jì)把握
項(xiàng)目缺乏總體設(shè)計(jì)的把握,每個(gè)人都是只了解自己那塊的東西,其他的模塊也不了解,在做設(shè)計(jì)的時(shí)候,也考慮不到其他模塊的影響和需求。當(dāng)兩個(gè)模塊之間有交互時(shí),更多的是兩個(gè)模塊負(fù)責(zé)人之間的溝通和交流。而且模塊之間的交互設(shè)計(jì)是放在各模塊開發(fā)差不多的情況下進(jìn)行的,后面涉及到的改動(dòng)也就不可避免。現(xiàn)在模塊之間的交互,也許是各模塊負(fù)責(zé)人最頭疼的問題了。(當(dāng)然,這個(gè)問題也不的存在也是無(wú)奈,時(shí)間緊迫,而且業(yè)務(wù)不熟,設(shè)計(jì)也就自然存在缺陷。)
5. 引入第三方技術(shù)
引入第三方技術(shù),是受到項(xiàng)目進(jìn)度、業(yè)務(wù)功能和公司所能提供資源的影響,也是不得已而為之 。在經(jīng)過簡(jiǎn)單的測(cè)試后,就投入項(xiàng)目中使用。值得慶幸的是,第三方技術(shù)的引入,還沒有對(duì)項(xiàng)目造成太大的影響。但是,我們也應(yīng)該意識(shí)到引入不熟悉的第三方組件給項(xiàng)目造成的風(fēng)險(xiǎn)。
6. 沒有嚴(yán)格的單元測(cè)試
因?yàn)槊總€(gè)成員經(jīng)驗(yàn)的不同,代碼的質(zhì)量不一樣,單元測(cè)試是很有必要的。也不能說沒有進(jìn)行單元測(cè)試,每實(shí)現(xiàn)一個(gè)函數(shù)都會(huì)進(jìn)行調(diào)用,如果得到想要的結(jié)果,那就算成功了。但這還不夠,我們很少進(jìn)行邊界測(cè)試、不合理數(shù)據(jù)輸入測(cè)試等,最后在系統(tǒng)測(cè)試階段,出現(xiàn)了很多不應(yīng)該出現(xiàn)的錯(cuò)誤,比如什么