敏捷開發團隊:如何打造高軟件質量的應用
本文將主要針對Android軟件開發進行詳細分析討論,從現有敏捷團隊的問題及解決方法進行分析,希望能給各位帶來幫助。
敏捷團隊,一個以產品功能迭代為核心驅動力的團隊,他們的目標是快速迭代出用戶需要的新功能。這個目標當然沒有問題,但是卻與開發高質量的軟件這個目標相沖突。合理的化解這個沖突,改善軟件開發質量,這就是本文的重點。
1.現狀
在闡述問題之前,有必要先說明一下當前團隊的結構與運作過程。為了能更細致的說明問題,本文將主要針對Android軟件開發進行詳細分析討論,以下是當前的人員組成結構圖:
1.1.當前存在的問題
功能迭代只見樹木,不見森林
身處于迭代開發的軟件開發人員,往往只了解自身功能的需求,然后根據對應的需求進行設計,容易導致一些不合理的設計,輕則導致后期維護問題,或者一些小概率事件導致的bug問題,重則導致功能重新設計開發,影響迭代速度。
功能完成為主要業績,軟件高質量為次要業績
功能完成是一個比較容易考察的指標,而軟件高質量卻不是,如果還主次有別,軟件高質量將無法有效的執行完成。
忽視性能問題,總是事后處理
以快速完成功能為目標,往往為了進度在性能這塊做妥協,總是在出現很明顯的性能問題時,才進行對應的優化,導致應用性能越來越差。
隨著開發團隊規模變大,規范推動執行難度也越來越大
受限于溝通成本,人員迭代功能的實際工作任務,審查的復雜度的增加,這塊越來越難以實際執行。
工作量評估不準確
由于參與實際迭代的開發人員個人能力的差異,不能很好的量化實際工作量。
交互不合理時,不能有效的溝通,提供合理的建議
開發人員與交互溝通時,往往會向交互妥協,或者直接否定,導致一些不合理的交互設計方案出現。
部分可重用的組件,重復開發
開發人員受限于對團隊的了解情況,受限于共用庫的維護情況,受限于個人的意愿,導致部分重復開發工作。
單元測試基本無法實際執行
受到開發進度的逼迫,以及考核的指標的影響,單元測試無法實際執行。
1.2.總結
問題有很多,其中最大的問題是對軟件人員的業績評估方向出了問題,或者軟件人員的工作重心出了問題。當前Android開發人員以完成迭代功能為主要工作重心,認為自己的迭代功能完成了,業績也就實現了。所以,解決這個根本性問題,才能有效的開發出高質量的應用。方向不正確,再多的努力也起不到應有的效果。
2.理想中的工作狀態
夢想還是要有的,萬一現實了呢?想要在某一方面有所成就,就需要持續不斷的在某個領域進行研究和思考。想要提升應用開發的效率,提升應用的運行性能,提升應用的可靠性等,都需要在應用開發上做持續深入的研究,不是一個人研究,而是整個團隊持續不斷的深入研究,逐漸沉淀,持續改進。
人們眼中的天才之所以卓越非凡,并非天資超人一等,而是付出了持續不斷的努力。1萬小時的錘煉是任何人從平凡變成超凡的必要條件。–丹尼爾·科伊爾
- 產品問題隨著時間的推移越來越少。
- 開發效率隨著技術的沉淀不斷積累,不斷的提升。
- 不做重復的優化工作。
- 不踩同樣的坑。
- 開發人員的專業領域越來越深入,找到個人成就感。
- 開發人員之間可以互相支持,人員之間互相備用,基本不受人員流動影響。
- 產品都是通過了單元測試、接口測試的。
- 軟件開發方案均得到充分的評估,不因為方案問題而返工。
- 規范都能實施到位。
- 性能優化,開發質量等問題大部分都能在開發過程中解決。
3.向著理想奮斗
敢想敢做,目前需要對現有團隊結構做一定的調整,具體的調整如下:
看似小的調整,卻有著本質的不同,以前的Android開發團隊只提供共有的開發類庫,其他事情均有對應的開發人員搞定,引起了很多不確定因素。現在由領域小團隊全權接手,Android組裝者的工作更多的是小部分業務邏輯,任何一個功能基本上都有多個專業團隊的人協作完成。以前一個功能負責人需要完成90%的代碼,10%的代碼由團隊提供,經過這樣的調整過,我們希望達到功能負責人只需要完成10%的代碼,其余90%由各領域團隊提供,讓專業的人做專業的事。
3.1.調整的意義
- 調整考核指標,后期Android團隊以開發人員在其所在領域的成就為主要考核指標,敏捷迭代功能的開發工作為次要指標。
- 將Android團隊所有領域細分化,并分配到幾個領域小組中進行持續研究和開發,不僅僅限于公共庫,也包括業務功能邏輯的開發。
- 明確各自的職責,也明確了各自的業績和自身的發展方向。
- 專業領域由專業的人做,降低功能開發時設計的缺陷,也讓整個團隊的能力能有效的提高。
- 領域專業化,每個領域都有幾個開發人員,形成人員互備,降低人員流動風險。
- 領域專業化后,更有利于推動單元測試、接口測試、代碼審查、性能優化、規范執行等事項。
3.2.細分領域
以下是目前領域細分的一個范本,它僅僅代表了一個方向,領域的細分不是一蹴而就,需要逐步完善。
4.調整后的主要問題
經過這樣調整后,一個app的開發往往有一個功能負責人和幾個領域的相關人員參與需求評審,然后幾個開發人員根據需求和自身的專業領域共同設計和執行開發。領域團隊的人員負責提供對應的開發庫,或者提供對應的技術支持協作開發。這樣做,增加了部分溝通成本。但是,我相信隨著該模式的持續運作和改善,隨著各個領域逐漸的專業化,軟件的整體的開發效率和穩定性會相比于現在有明顯的提高,值得一試。
本文由 @空穴來風 原創發布于人人都是產品經理。未經許可,禁止轉載。
邏輯不清晰
同感,前后邏輯有問題,而且并沒有針對敏捷做真正的說明,或者所說的事情和敏捷沒有什么關系
已在你樓下的評論中回復,不知道我解釋清楚沒,對你們產生的誤導深表歉意,我不是標題黨。。。
請問,你的標題是不是有問題。你是不是想表達“如何打造高質量軟件的應用”
好吧,看來邏輯真有問題,我是想說,敏捷開發導致開發人員更多的關注功能迭代完成,導致軟件變得越來越臃腫,質量也得不到有效的控制。因此,軟件團隊不能簡單的以接功能的方式對接敏捷團隊,軟件團隊需要以領域化為核心,敏捷迭代功能為簡單任務來實施敏捷開發,不知道我解釋清楚沒?
我再看下