此文寫于2013年7月10日,轉(zhuǎn)自我的開源中國https://my.oschina.net/vell/blog/143770.
以下社區(qū)項目總結(jié):
且聽我從立項到開發(fā)再到測試并上線這個順序來一一道來,其中包含了項目組內(nèi)同學的在總結(jié)會上提出觀點.
一、立項(包含需求階段)
1.沒有明確的產(chǎn)品經(jīng)理
????在社區(qū)項目立項之初,由運營的同學出了份需求文檔,明確了幾個重要的功能模塊,但沒有將文檔出的比較細,需求文檔沒有產(chǎn)品負責人來更新,由此導致開發(fā)和測試的同學對于需求理解很模糊,開發(fā)的功能中有很多細節(jié)沒有關(guān)注到,這又使得開發(fā)人員按自己的思路對開發(fā)的功能進行主觀的判斷,做出了一些非常棒的細節(jié)性功能,但是這樣的細節(jié)性功能有一部分可能違背了產(chǎn)品經(jīng)理的觀點,結(jié)果就導致了一些需求的小變動,開發(fā)人員不斷進行返工,當然由于測試也是在開發(fā)過程中介入的,由此又導致測試同學也出現(xiàn)了類似問題,即不斷的對這些小改動進行驗證,不明確的需求細節(jié)的條件下,也產(chǎn)生了很多主觀上的測試行為,這樣就導致大家經(jīng)常做了無用功,思路根本無法統(tǒng)一,也就是俗話說“費力不討好”。
當然上述問題的產(chǎn)生在互聯(lián)網(wǎng)項目開發(fā)過程中不可避免,而需求的變動是有成本的,這個成本可以歸結(jié)為兩類,一是時間、二是人力,即便是再好的敏捷開發(fā)團隊,也無法保證需求的變更不會對質(zhì)量和進度產(chǎn)生影響,這種變更必然是需要一個角色來承擔責任和義務(wù),那就是產(chǎn)品經(jīng)理,而項目經(jīng)理為了保證進度很可能不會對這種變更進行讓步,這樣便了產(chǎn)品質(zhì)量和周期的矛盾,而要保全這兩者,必然就會讓整個產(chǎn)品研發(fā)團隊做出付出額外的精力,而產(chǎn)品細節(jié)的確定也讓團隊付出了很多溝通的成本。
對于互聯(lián)網(wǎng)的產(chǎn)品研發(fā)過程中,產(chǎn)品經(jīng)理的角色是至關(guān)重要的,如果要做一款成功的產(chǎn)品,必須要有一個能握產(chǎn)品方向,關(guān)注和完善細節(jié)功能,對產(chǎn)品需求、運營計劃做日常管理的產(chǎn)品經(jīng)理來完成這些工作,這樣才會更進一步增強產(chǎn)品互動性和用戶滿意度。
2.協(xié)作、溝通不到位
????開發(fā)過程中前后端的同學沒有良好的配合,主要表現(xiàn)在要在需求明確的情況下接口參數(shù)、數(shù)據(jù)格式前后端沒有即時溝通統(tǒng)一意見,聯(lián)調(diào)的時才發(fā)現(xiàn)問題,這樣也程序的修改成本變大,還有后臺系統(tǒng)之間涉及到的數(shù)據(jù)庫表字段和注釋的修改、系統(tǒng)接口頁面的修改時,都要通知到相關(guān)人,并且得到他的答復后才能執(zhí)行修改操作。
另外,使用svn時,代碼提交前,沒有認真測試,導致其他人服務(wù)器啟動時報錯,所以在更新了別人代碼或提交自己的代碼時一定保證代碼能在本地正常跑起來,抽一部分時間出來自測,會省去很多處理代碼沖突的問題的時間。
3.不重視規(guī)范
????如果我們的編碼規(guī)范、開發(fā)流程能認真的按要求執(zhí)行,有很多溝通、測試的問題都能很好避免,例如業(yè)務(wù)代碼、數(shù)據(jù)庫字段注釋可以讓開發(fā)、測試人員都能第一時間了解細節(jié)到代碼和字段的含義,有效的開展開發(fā)和測試。代碼整理提測之前,如果都能把自己模塊的單元測試跑通,把握好每個模塊和功能之間的耦合,通過自測保證修改后的代碼對整體的功能影響降到最低,這樣既節(jié)約了測試人員的時間,也減少了開發(fā)返工的次數(shù)。
4.程序未充分設(shè)計
????這一點提出來,也是為以后更快、更好的開發(fā)項目做準備,我們在開發(fā)設(shè)計階段,要充分考慮功能模塊組件化思想,不同的模塊可以復用,功能代碼通過組件的形式進行擴展。
組件化編程的關(guān)鍵目的是為了將程序模塊化,使各個模塊之間可以單獨開發(fā),單獨測試。
????基于組件化開發(fā)帶來的優(yōu)勢,首先原有到系統(tǒng)級的粗粒度控制細化到了到組件級別的細粒度控制,一個復雜系統(tǒng)的構(gòu)建就是組件最終進行集成后的一個結(jié)果。每個組件都自己獨立的版本,組件可以獨立編譯,獨立打包和部署。其次產(chǎn)品組件化后可以真正實現(xiàn)完整意義上的按組件進行產(chǎn)品配置和公用,用戶可以選擇購買哪些組件,組件之間可以靈活的進行組裝。另外包括我們說的配置管理,開發(fā),測試,打包,發(fā)布完全控制到組件層面,帶來額外其它很多好處,如我們常說的如果一個組件進行小版本升級,如果提供給外部的接口沒有任何變動,其它組件完全可以不用做任何測試等。
基于組件化的思想開發(fā)的同時,我們在代碼的構(gòu)建可以使用Maven或?Gradle這樣的構(gòu)建工具,加快項目的測試、部署周期。