软件项目开发过程中主要遇到的核心问题小结
?? 最近在北京組織管理某銀行的現(xiàn)金管理系統(tǒng)項(xiàng)目的開發(fā),對(duì)軟件項(xiàng)目開發(fā)過程中遇到的問題進(jìn)行一些心得體會(huì)小結(jié),怕時(shí)間長了沒及時(shí)寫下來時(shí)間久了被遺忘了,現(xiàn)在趁項(xiàng)目還在開發(fā)過程,把體會(huì)相對(duì)深刻時(shí),感受到的一些問題整理下來,分享給大家同時(shí)也多聽聽大家的建議,也希望給那些將來想當(dāng)項(xiàng)目管理人員的做一些參考,好思想好總結(jié),沒必要將來跟我一起升天人間蒸發(fā)了。
?
?? 01:軟件項(xiàng)目開發(fā)合同的訂立,合同需要對(duì)將來幾個(gè)月甚至幾年需要做的事情有個(gè)明確的定義說明,限定好工作范圍、工作內(nèi)容、承擔(dān)的責(zé)任、項(xiàng)目總費(fèi)用,每個(gè)階段支付的費(fèi)用都需要有明確的說明甚至付款條件等都需要一清二楚,很多東西都沒講明白是將來合作不愉快的導(dǎo)火索,這些都需要白紙黑字寫清楚,其實(shí)從合同上也能看出甲乙雙方的水平在什么層次上的。
?
?? 02:軟件開發(fā)過程中,往往會(huì)發(fā)生客戶不按時(shí)支付費(fèi)用的事情,因?yàn)檐浖_發(fā)不只是腦力活兒,也是強(qiáng)度非常大的體力活兒,難免會(huì)遇到不能按時(shí)交付軟件的可能性,除非遇上非常有經(jīng)驗(yàn)的能相對(duì)準(zhǔn)確評(píng)估工作量、工期的管理人員,參考?xì)v史的開發(fā)經(jīng)驗(yàn)、再按自身團(tuán)隊(duì)的開發(fā)技術(shù)能力、協(xié)調(diào)工作效率,計(jì)劃出一個(gè)合理的工期計(jì)劃來,因?yàn)檎麄€(gè)公司都需要考慮到資金安全、開發(fā)風(fēng)險(xiǎn),需要有一定的水平能說服客戶及時(shí)付款,至少可以支付大部分款項(xiàng)的人,在開發(fā)軟件項(xiàng)目的過程中往往會(huì)發(fā)生需要墊資幾十萬的事情,其間需要做好防備工作需要防止資金鏈斷裂了。
?
?? 03:軟件開發(fā)人員中途離職也是家常便飯,相對(duì)規(guī)范的公司,一年也大概也會(huì)有10%的人員流動(dòng)性,若薪資待遇也不怎么樣、公司管理也不規(guī)范,開發(fā)人員也學(xué)不到知識(shí)、業(yè)務(wù)也不穩(wěn)定的,那估計(jì)有50%的流動(dòng)性也是很正常的事情,連微軟、Google都會(huì)有開發(fā)人員離職現(xiàn)象,更何況一個(gè)不知名的公司,人員離職是很正常的現(xiàn)象,但是人員離職了就得需要有后備開發(fā)人員,公司管理人員需要在最短的時(shí)間內(nèi)招聘到合適的人員,這也需要必備的技能。
?
?? 04:現(xiàn)在已經(jīng)不是單槍匹馬就能搞定中型軟件系統(tǒng)的年代了,一個(gè)軟件項(xiàng)目開發(fā)過程中往往需要N多人參與,客戶對(duì)軟件項(xiàng)目的質(zhì)量要求,功能要求也越來越高,不只是需要把程序?qū)懞?#xff0c;還需要有各種配套文檔,測(cè)試都需要跟上,所以這些人的協(xié)調(diào)工作、及時(shí)溝通也是很大的問題,若一個(gè)項(xiàng)目經(jīng)理的溝通能力有問題也很容易遇到很多沒必要的麻煩,也會(huì)使得項(xiàng)目進(jìn)展會(huì)很不順利的局面,甚至到有敵對(duì)力量產(chǎn)生的程度,一個(gè)公司,一個(gè)項(xiàng)目最怕的是內(nèi)耗,我們國家其實(shí)很多東西也都浪費(fèi)在內(nèi)耗上了,若沒幾千年封建王朝的內(nèi)耗,我們應(yīng)該會(huì)發(fā)展的比美國強(qiáng)大很多。
?
?? 05:合理的安排工作計(jì)劃、有目的有計(jì)劃的做事情,很不容易,項(xiàng)目里需要完成的工作NN多,需要協(xié)調(diào)的人員NN多,需要設(shè)計(jì)實(shí)現(xiàn)的功能NN多,做一個(gè)軟件項(xiàng)目并沒有學(xué)習(xí)編程那么輕松愉快,更不項(xiàng)打網(wǎng)絡(luò)游戲一樣輸了還可以從頭再來,軟件項(xiàng)目開發(fā)是不允許輸了再來的,輸了就需要按合同進(jìn)行經(jīng)濟(jì)賠償、又要丟人、又容易吃官司、還無法在這個(gè)圈子里繼續(xù)生存了,至少會(huì)口碑很差了。
?
?? 06:進(jìn)度的把控比制定工作計(jì)劃更難,我們可以制定個(gè)計(jì)劃2012年開發(fā)好操作系統(tǒng)、2013年開發(fā)好數(shù)據(jù)庫、2014年開發(fā)好編譯器、開發(fā)環(huán)境,看上去很美,其實(shí)更本沒那個(gè)能力實(shí)現(xiàn)這個(gè)計(jì)劃,計(jì)劃計(jì)劃難免會(huì)有變化,計(jì)劃目標(biāo)需要不斷地調(diào)整,但是調(diào)整得太大,那說明這個(gè)計(jì)劃有問題不符合實(shí)際甚至是有些空洞的計(jì)劃瞎搞搞而已,開發(fā)項(xiàng)目過程中需要分工合理,有一定的穩(wěn)定性,例如今天讓你ASP開發(fā),明天PHP開發(fā),后天C#開發(fā),大后面又是JAVA開發(fā),估計(jì)沒幾個(gè)開發(fā)人員不會(huì)被折磨瘋了,工作分配也是一個(gè)道理,需要有一定的穩(wěn)定性。
???及時(shí)的驗(yàn)收確認(rèn)好工作安排也是需要有水平的,若開會(huì)問大家任務(wù)完成了嗎?大部分都會(huì)說“快好了”,快好了可以理解為,已經(jīng)完成了10%?已經(jīng)完成了90%?但是剩下10%是技術(shù)難題,超級(jí)復(fù)雜的功能,那其實(shí)這并不是完成了90%,雖然開發(fā)人員理解為90%,但是可能10%都不到而已。
?
?? 07:高效的會(huì)議,解決問題需要有效率,特別緊急時(shí)需要有站立式會(huì)議,項(xiàng)目緊急時(shí)也需要安排每天的會(huì)議,會(huì)議不適合超過20-30分鐘,甚至10分鐘內(nèi)開好會(huì)議是最理想的,例如我們10個(gè)人參加會(huì)議,會(huì)議開了1天,那其實(shí)是超級(jí)浪費(fèi)生命,如何高效的指揮大家,如何開一個(gè)高效的會(huì)議,責(zé)任明確的,能解決問題的會(huì)議是需要有一些水平的,若以前參與過牛B管理人員主持的會(huì)議,那很容易有經(jīng)驗(yàn)了,參考別人的好處多多。
?
?? 08:及時(shí)的強(qiáng)有力的測(cè)試,人都不可能自己找出自己的缺點(diǎn),寫程序也一樣,能自己找出自己缺點(diǎn)的,能自己測(cè)試出自己程序錯(cuò)誤的人,都是牛人,啥叫牛人?就是這樣的人不多才叫牛人,普通人是還是需要?jiǎng)e人來測(cè)試出問題,反饋給大家的,這個(gè)就是生產(chǎn)里的一個(gè)工序,筆記本生產(chǎn)線上少了一個(gè)測(cè)試檢驗(yàn)的,那會(huì)惹來多少麻煩?天天有客戶投訴,天天有人退款,天天折騰更換本本的事情來回快遞來回折騰,何必呢?增加一個(gè)測(cè)試環(huán)節(jié),減少很多后期麻煩的產(chǎn)生。
?
?? 09:成熟的功能設(shè)計(jì)套路、函數(shù)命名套路、窗體命名、變量命名等等,也會(huì)大大的減少項(xiàng)目的開發(fā)周期,項(xiàng)目前期需要把例子程序都寫好,適當(dāng)?shù)倪M(jìn)行一些培訓(xùn)工作,然后讓大家模仿例子程序就可以了,例子程序不適合寫得超級(jí)復(fù)雜,功能超級(jí)強(qiáng)大,只要能把主要核心思想都表明了就可以了,最好還是拿個(gè)投影講一下比較好,這樣大家的印象也會(huì)更深刻一些。?
?
?? 10:成熟的數(shù)據(jù)庫設(shè)計(jì)套路,其實(shí)數(shù)據(jù)庫設(shè)計(jì)也是一門學(xué)問,看起來簡(jiǎn)單,真正想設(shè)計(jì)好也需要有硬功夫,也需要手藝精湛、技藝高超的。數(shù)據(jù)庫基本上還是目前開發(fā)各種管理系統(tǒng)必不可少的組成部分,甚至現(xiàn)在還是穩(wěn)定的管理信息系統(tǒng)的基石,所以數(shù)據(jù)庫設(shè)計(jì)是否合理、至少30-40%的項(xiàng)目是否順利穩(wěn)定的分量是有的。
?
???11:代碼規(guī)范,代碼質(zhì)量檢查,由于項(xiàng)目不是一桿子買賣,往往還擔(dān)負(fù)著后期的維護(hù),甚至部分運(yùn)行工作,若項(xiàng)目的代碼質(zhì)量不好后期會(huì)有無窮無盡的痛苦,把一些問題扼殺在搖籃里,總比把問題培養(yǎng)大了,再去消滅得麻煩、頭大,所以項(xiàng)目的中后期一定要安排嚴(yán)格的代碼質(zhì)量檢查工作,可以找個(gè)工作效率非常高,做事情又相對(duì)仔細(xì)認(rèn)真的人,來個(gè)地毯式轟炸,從頭到尾把掃一眼,很多有SQL注入漏洞、有重復(fù)功能的代碼、命名不合理的代碼等等還是會(huì)被發(fā)現(xiàn)很多,畢竟項(xiàng)目開發(fā)中參與的人多,人多了就很容易啥鳥都有了。
?
?? 12:系統(tǒng)架構(gòu)重構(gòu)上也花費(fèi)蠻多時(shí)間,由于客戶是要求在分布式環(huán)境里運(yùn)行系統(tǒng),開發(fā)時(shí)又往往是單機(jī)上開發(fā)調(diào)試,又沒充足的時(shí)間慢慢勾畫、慢慢設(shè)計(jì),工作安排往往是排得滿滿的,系統(tǒng)的架構(gòu)有時(shí)候需要進(jìn)行一些調(diào)整,若剛開始開發(fā)時(shí)就架構(gòu)不明確、思路不嚴(yán)謹(jǐn),到項(xiàng)目的中后期,整個(gè)項(xiàng)目就會(huì)大亂,更本經(jīng)不起系統(tǒng)架構(gòu)的重構(gòu),當(dāng)然這里的架構(gòu)架構(gòu)重構(gòu)更多的是小調(diào)整,若真的是大調(diào)整那說明剛開始的架構(gòu)就是非常失敗的,項(xiàng)目由于不是1個(gè)人開發(fā)的,若是一個(gè)人開發(fā)項(xiàng)目那還好說,想怎么調(diào)整就調(diào)整,現(xiàn)在是多個(gè)人開發(fā)項(xiàng)目,雖然不能比喻是航空母艦,至少像個(gè)護(hù)衛(wèi)艦,想怎么拐彎就怎么拐彎不是那么容易的。
?
?? 13:技術(shù)疑難為題外包,項(xiàng)目過程中遇到了一些WCF配置相關(guān)的疑難問題,前后解決了10多個(gè)問題,還是無法順利搞定信息加密傳輸、電子證書SSL安全配置等等,甚至兩臺(tái)電腦之間的TCP方式通訊上也遇到了問題,由于手上有300多個(gè)付費(fèi)用戶,而且他們都是開發(fā)人員,所以把這個(gè)信息一發(fā)布,馬上就有專家響應(yīng),人家2個(gè)小時(shí)就搞定問題了,支付了500元辛苦費(fèi),錢雖然少也是個(gè)心意,我也把問題搞定了,我的付費(fèi)客戶也從我這里賺到辛苦錢了,2個(gè)小時(shí)若都能賺500元,而且是自己擅長的事情,我想也足夠可以了,有時(shí)候選擇花錢辦事比花時(shí)間辦事更爽。
?
???14:項(xiàng)目經(jīng)理的帶頭作用是不可低估的,若碰上一個(gè)天天吃喝嫖賭、天天游手好閑的項(xiàng)目經(jīng)理,那這個(gè)項(xiàng)目的最后的結(jié)局就是等著賠款就可以了,其他人員看到項(xiàng)目是這樣的人沒幾個(gè)SB會(huì)拼命干了,大家頂多裝裝樣子,混混日子找找那里有更好的前途了,這里就是不是久留之地的念頭沒幾天就產(chǎn)生了,我自己曾經(jīng)就遇到過這樣的情況,我沒到半年就跑路了,公司沒兩年就關(guān)門大吉了,因?yàn)檫@樣的領(lǐng)導(dǎo)不是真正干事的,頂多就是轉(zhuǎn)了空子碰到到了狗屎運(yùn)而已長久不來。
??
?? 15:采用成熟的軟件組件也會(huì)大大的促進(jìn)軟件項(xiàng)目的開發(fā)進(jìn)度,這次我們工作流自己開發(fā)了一套B/S的,在網(wǎng)頁上拖拖拉拉就可以設(shè)定好工作流的,自己也比較滿意的效果,但是現(xiàn)在想想有接近足足開發(fā)了5個(gè)月,這個(gè)開發(fā)成本算 開發(fā)人員的工資 + 公司的房租、辦公費(fèi)用 +相應(yīng)的管理費(fèi)用 + 測(cè)試成本?,遠(yuǎn)遠(yuǎn)超過了6萬以上的成本,只是這個(gè)錢沒一次性拿出,而是每個(gè)月一點(diǎn)點(diǎn)的往外付出而已。而且還花費(fèi)了5個(gè)月時(shí)間,還不能確保沒任何錯(cuò)誤,其實(shí)到真正穩(wěn)定好用,至少要燒掉10萬了。若從項(xiàng)目開始開發(fā)就用合理的價(jià)格購買了一套,不用5個(gè)月時(shí)間自己開發(fā),而是用1個(gè)月時(shí)間學(xué)會(huì)怎么用,然后剩下的4個(gè)月時(shí)間放在核心的業(yè)務(wù)系統(tǒng)的開發(fā)上,項(xiàng)目會(huì)相對(duì)來說更輕松、更順利一些,畢竟戰(zhàn)線就縮短了很多了,可以集中優(yōu)勢(shì)兵力重點(diǎn)突破。兵力分散乃大忌也。
?
?? 16:軟件在開發(fā)測(cè)試階段往往會(huì)有客戶的需求變更,甚至有可能會(huì)有大面積的需求變更,每變更一次需求,客戶會(huì)覺得這個(gè)是簡(jiǎn)單的變更,開發(fā)人員會(huì)說是超級(jí)復(fù)雜的需求變更甚至?xí)f前面的工作都白做了,這時(shí)候需要有超級(jí)強(qiáng)的溝通能力,一方面盡量阻止客戶發(fā)生沒必要的變更,甚至徹底想清楚了再變更,每次變更都有文檔記錄,好向客戶追加軟件開發(fā)費(fèi)用,其實(shí)這個(gè)除了大客戶、實(shí)際強(qiáng)的客戶外,想追加費(fèi)用是難于上天的事情。只能是跟客戶處理好關(guān)系、下次客戶還能找你就不錯(cuò)了,客戶的錢也不是飄來的,預(yù)算也是有限的,所以若不想把客戶得罪了,還只能按著客戶的變更來、頂多是把事情都講清楚,這部分變更帶來了多少工作量等等,至少按合同支付費(fèi)用時(shí),能有個(gè)協(xié)商的籌碼對(duì)吧。
?? 開發(fā)人員這里,有再大的牢騷也是沒辦法的事情,為人民服務(wù)、為客戶服務(wù),客戶是上帝,讓客戶滿意,讓客戶用我們的軟件更舒服、爽一些,只能按客戶的要求重新調(diào)整程序,若水平高怎么調(diào)整都沒事,例如用通用權(quán)限管理系統(tǒng)組件來說,我還真希望客戶能提改進(jìn)意見,那會(huì)開心死了,怎么調(diào)整都不怕,因?yàn)榫S護(hù)了7-8年,經(jīng)得起折騰,再說我的開發(fā)技能也是頂呱呱的,不怕客戶折騰,經(jīng)得起折騰,因?yàn)檫@東西是銅墻鐵壁地。
?
?
?
?? 客戶是上帝、客戶既然選擇了我們,客戶燒了錢找我們做軟件開發(fā)了,我們就得讓客戶把這錢燒更舒坦,得更爽。
???昨天晚上調(diào)試優(yōu)化程序又住在辦公室了,今天還得繼續(xù)戰(zhàn)斗,等項(xiàng)目結(jié)束了出去旅游一下,放松幾個(gè)月再戰(zhàn)斗。
???謝謝大家補(bǔ)充完善、有不足之處請(qǐng)指點(diǎn)。
?
總結(jié)
以上是生活随笔為你收集整理的软件项目开发过程中主要遇到的核心问题小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源游戏引擎
- 下一篇: elementui from表单提交_e