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