如何提升各开发角色效率,既保证产品质量又能快速上线?
前言
網易杭州研究院 · 葉鋒
當一個產品或項目變得比較大的時候,開發效率就會提上議程。如果項目管理混亂或者某個環節脫節,往往會讓項目進展緩慢,走彎路,甚至失敗。
一個大的產品開發往往包含了項目經理,產品經理,架構師,開發工程師,測試,前端等多種角色。如何提升各個角色的效率,讓產品在保證質量的基礎上,快速上線,很值得研究。本文根據哨兵系統中開發的實際情況,做一些實際經驗總結。
1
產品先行,機動提升
在產品立項之前的一個月或者更長,產品的規劃就應該開始了,首先需要在目標用戶中做充分的調研,形成產品規劃的初稿,然后帶著初稿與用戶繼續溝通提煉,形成最終的可行方案。在項目組的內部也需要充分討論,通過討論相互理解需求,也可以發現產品中存在的問題和不足,利于下一步工作開展。
即使在項目進行中,如果發現原先方案沒有很好地滿足用戶需求,那么不要猶豫,及時做出調整,甚至可以考慮對項目進行大的重構。因為如果為了掩蓋一些設計上的缺陷而做一些特殊適配,往往坑會越埋越大,到時更改的成本會更高。行動的迅速性和機動性,對于項目至關重要。
2
開發高效,多維提升
當項目進入技術的設計開發階段,合理的規劃對于效率的提升十分重要。結合哨兵的開發的實際過程,這里提出一些看法。
1. 開發人員帶著自己思路設計
在這個環節,所有的開發人員都需要參與,通過對需求和功能的理解,開發人員可以構思自己的技術方案,然后跟大家一起討論,最后總結出合理的可執行的方案。每個開發人員都是設計者。
2. ?開發、測試、預發環境搭建
項目進入開發階段,需要搭建和組織高效的開發環境。首先選用業界流行的maven工具管理代碼,將代碼工程模塊化。一般將工程分為common?模塊,業務邏輯模塊,具體應用模塊等等。common模塊封裝總體依賴,內部通信框架,驗證規則,通用數據結構,通用util類等。業務邏輯方面,可以將關系數據或者其他中間件的操作獨立模塊,每個模塊獨立于應用,建立有自己的獨立的單元測試,提升業務層與應用層的耦合效率。具體應用模塊,采用合適的開發插件來提升效率。比如我們應用模塊以web應用為主,采用jetty插件,它具有輕量,內置,高效的特點。可以在一個eclipse容器里面啟動多個實例,并發調試。工程模塊之間建立運行時依賴的關聯關系,如果一個模塊改動,比如業務層,無需build這個模塊,減少調試時間。
在項目開發完成后,合理規劃測試環境,上線之前規劃預發環境。項目復雜度不一樣,環境規劃復雜度不一樣,但是都值得多投入規劃。
3. 代碼層次化,可擴充的設計理念
將代碼分為多個模塊,比如dao層,service層,權限驗證層,controller層,視圖層等等。同時將一些通用的處理方式集成在統一的基礎模塊之中,比如我們的api應用,組件異常處理,api監控等功能集成在入口filter組件,這樣有利于功能開發人員專注業務邏輯的處理,提升效率。
在系統設計的時候要考慮未來的可擴充性。比如哨兵系統中的設備類型前期主要以服務器為主,后期可能會引入網絡設備等多種。那么前期表的設計就可以采用面向對象特性的方式來實現,公有部分放在基礎表當中,擴展屬性放在各自獨立表當中。當增加新的類型時只需要建立新類型獨立表就可以了。
4. 盡量用成熟技術框架
在技術方案的選取上,盡量采用業界比較成熟的,并且支持性比較好的方案。這樣出現問題的時候,可以在互聯網上找到一些解決方案。當然在功能受到限制必須選取一些不常用方案的時候,需要提早進行調研,并且盡早進行性能方面的壓力測試,防止在項目真正上線的時候出現問題。比如我們項目中引入aviator作為表達式的求值引擎,在實際使用的過程中,由于緩存配置不合理,在上線的時候才發現,方法區每過一段時間會滿,造成full gc。調整參數后,問題解決。
5. 良好的版本管理方式
在產品開發初期,由于還沒有上線或者使用人少,功能迭代少,團隊采用一個統一的開發分支,這樣效率會提升。隨著項目正式上線,用戶逐漸增加,功能迭代也會慢慢增加,這樣采用多個分支并發進行比較合適。在多分支開發的時候需要注意需要一次發布的功能在相同的分支內進行,要發布之前進行分支的合并,沖突解決。良好的分支管理方式會讓項目快速迭代,減少錯誤的發生。
6. 及時有效溝通,及時代碼重構
在項目的進行中,由于各個開發人員的風格不統一,導致代碼跟規范不一致,同時編碼中一些特殊邏輯處理的不夠優雅,很想進行重構,但是又怕影響進度。這種情況通常建議及時進行,雖然開始的時候效率下降,但是長遠來講可以大大提升效率,并且可以讓后續的開發人員快速理解業務,也不會被誤導使用不合理的模式。重構需要團隊內部進行及時有效溝通,形成規范,并且如果重構對開發進度造成影響,重構負責人應該考慮加班,這對于長遠效率的提升十分重要。
7. 適當功能上的放棄,留下接口利于下一步提升
當項目上線比較緊張的時候,對于技術方案又沒有明確定論,或者完美方案需要耗費太多資源的時候,可以暴露統一接口,實現上采用臨時方案進行。比如哨兵配置下發,前期采用定時器方式進行,雖然對系統資源消耗多,有延時,但是簡單實現方式快,適合初期趕進度,后期等項目緩解后再用新的實時下發方案。
3
管理跟進,多方提升
1. PM
項目管理中,項目經理PM,要定時跟蹤項目的進展情況,找出系統瓶頸,協調與其他團隊或者項目的關系,爭取到必要的資源。PM要協調的目標方有開發、測試、產品經理、運維、部門負責人以及外部資源等,協調方式包括定期發送項目進度報告,定期召開相關方會議,與重點人員點對點溝通,取得他們的支持和配合。開發人員可以將一些協調的事情交給PM來解決,這樣就可以專注于開發。
2. 產品經理,架構師
產品經理及時把握上線的執行偏移,上線后做實際測試,有問題馬上向開發提出,確保線上產品的最后質量。架構師要及早對方案的可行性進行驗證,編寫示例代碼,形成規范。
3.?測試
測試人員先期就參與方案的評審,盡快了解需求和產品。測試人員不單純的是功能上的測試,對于技術架構也參與討論,提出自己的意見,這樣更能發揮測試對于全局的總體質量的把控,測試更深入。
效率的提升本質上是人的提升。團隊團結一致,相互支持,遵循規范,這樣才具有機動性和戰斗力。人才是效率之根本。
4
平臺集成,自動提升
在產品開發的實際進行中,自動化和平臺化的引入,可以將我們的開發效率大大提升,這需要未來平臺建設的完善。
1. 發布工具來實現代碼分支的自動管理。用戶需要分支的時候可以根據平臺自動創建分支,在測試的時候可以直接利用分支集成測試,支持多個分支并行的測試。在發布的時候工具自動進行沖突檢測,代碼合并,tag創建等。這樣可以大大降低由于人工誤操作導致的效率降低。
2. 配置管理工具。開發,測試,預發,線上環境的配置需要一個集中的管理平臺,防止配置變更導致的錯誤。
3. 代碼review?工具的完善。有助于開發人員相互review代碼,找出錯誤,形成規范,比如可以采用開源的Gerrit等。
?· END ·
【推薦閱讀】
后端Java工程師如何將編碼速度提升10倍?
一場開發與視覺的對話引發的思考
項望烽:移動IM開發那些事兒
網易云信|APP聊天功能1天開發
http://netease.im ? 果斷關注,精彩不斷
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的如何提升各开发角色效率,既保证产品质量又能快速上线?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算将为移动医疗带来哪些新机遇?
- 下一篇: 网易云信欢乐颂(送),领取“五美”送麻麻