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