身爲產品經理,你懂開發團隊的交付過程嗎?

持續交付是一種軟件工程手法,讓軟件產品的產出過程在一個短週期內完成,以保證軟件可以穩定、持續的保持在隨時可以釋出的狀況。本文作者僅希望通過通俗的語言,來分享自己一點關於“持續交付”的認識。

身为产品经理,你懂开发团队的交付过程吗?

我們都知道,產品交付,是需求實現的“最後一公里”路,但交付不僅僅只是“將代碼部署到測試環境,測試通過後,即可上線”一句話這麼簡單,交付過程涉及到複雜的流程、團隊協作和交付工具等等,任何一點都會影響到產品的整個生命週期。

一般來說,產品經理極少會參與到最後代碼交付過程中去,因為交付主要是由研發、測試和運維等角色在負責,產品經理最多參與進測試階段。

事實上,所有的產品團隊成員,都應該對我們的產品目標負責。一名合格的產品經理,切勿從心理上,就將產品、測試甚至是研發、運維的職責都完全割離開來,從需求的誕生到實現,產品經理應該儘可能的瞭解和知悉每一個過程,才能讓需求實現更加的順暢,促使自己能夠換位思考,掌握全局。

本文主要來討論一個概念——持續交付,我並非技術出身的產品經理,僅希望通過通俗的語言來分享自己一點關於“持續交付”的認識。

持續交付是什麼?

百度百科上的定義:持續交付是一種軟件工程手法,讓軟件產品的產出過程在一個短週期內完成,以保證軟件可以穩定、持續的保持在隨時可以釋出的狀況。

光看這句話是不是一臉懵逼?

關於持續交付的定義,其實早有前人給出了很通俗的解釋:

持續交付是軟件研發人員,如何將一個好點子,以最快的速度交付給用戶的方法。

感覺還是有點抽象?

沒關係,我們來解讀一下這句話:上句中、好點子,就是需求;交付給用戶,就是需求上線,這是一個眾所周知的過程。其實這句話強調的是:最快的速度,也就是說交付過程的重點是效率。

這和敏捷開發的概念是不是有點類似?

什麼是敏捷開發呢?

提到敏捷開發,不得不提到與之相對的一種開發流程:瀑布流開發——即嚴格地將開發分隔成各個階段:需求分析、要件定義、基本設計、詳細設計、編碼、單體測試、結合測試、系統測試等。有點像工廠流水線,前一階段的完成才能開始下一個階段的工作,意味著沒有回頭路,返工代價很大,用戶對需求無法反饋,十分不適應。

這樣的開發方式已經無法適應當前的易變、模糊、不確定的互聯網環境了

就像斯賓塞·約翰遜說過的:

唯一不變的,就是變化本身。

所以敏捷開發方法像淨化空氣的春雨般出現了,敏捷開發方法的核心是迭代,也就是通過2-4周的迭代時間,不斷的交付客戶的需求。每一次迭代都包含需求分析、設計、實現和測試等多個環節,每一次迭代都可以生成一個穩定和被驗證過的軟件版本。

敏捷開發是強調敏捷的軟件開發項目管理方式,而持續交付是強調效率和靈活的一種軟件工程手法,持續交付就可以定義為敏捷開發管理的一個子集。

怎麼看待持續交付?

經過了以上定義,大部分人對持續交付究竟是做什麼的,還很茫然。接下來將結合其他概念,讓大家更深入理解持續交付。

提到持續交付,不得不提到持續集成、持續部署,也就是我們常說的CI/CD。

  • 持續集成:我所理解的持續集成是,在進入開發階段前,會將研發工作進行拆解,可能是拆分成不同的功能模塊,也可能是拆分成若干個任務由不同人員來進行開發。拆分之後,就一定需要將代碼合併起來,形成完整、有效、正常運行的代碼,這個過程叫做集成,反覆持續,就叫持續集成。
  • 持續部署:持續部署是持續交付的最高階段,代碼在經過自動化測試、單元測試或者評審後,自動的部署到正式(目標)環境中,快速安全的交付給用戶使用。

持續交付則是一個承上啟下的過程,它是在持續集成後,通過測試、產品的使用和驗證和反饋後,不斷地對產品進行優化。

身为产品经理,你懂开发团队的交付过程吗?

我們再回顧前面提到的定義:

產品、測試就是所謂的第一個用戶,所以這個定義還是很貼切易懂的。

持續交付,從業務層面來說,其實是存在著決策的過程的,因為它是在部署到正式環境之前,產品經理或領導者需要做業務判斷,判斷代碼是否可正常交付?是否解決業務問題?是否滿足業務需求等等?

那麼持續交付從技術層面,是怎麼實現呢?

持續交付的實現方向

持續交付的具體實現方式要從配置管理、環境管理、構建集成和測試管理等幾個方面入手,僅僅通過一篇文章是無法講述清楚的,並且更適合由研發人員去研究和實踐,感興趣的話可以閱讀《持續交付-發佈可靠軟件的系統方法》這本專業書籍來具體學習。

這裡我僅僅從宏觀的產品角度,來總結持續交付的實現方向:

為令人痛苦的手動步驟,建立起可重複、可靠的自動化過程。每一次的修改都能夠經過一次構建、測試、部署、發佈完整高效的自動化驗證過程,實現高速頻繁驗證,快速解決問題的閉環。

最後的結果就是:小批量/小粒度頻繁的進行持續部署或發佈,從而得以實現持續交付。

當然,在前往這個方向的道路上, 一定要有猛藥去痾的決心,如:

(1)技術層面

  1. 改變dev/ops團隊在PaaS層面所使用的工具和應用方式;
  2. 改變系統架構、部署架構等。

(2)組織層面

  1. 優化調整人員結構;
  2. 打破耗時、完全人工的流程束縛;
  3. ……

產品經理能享受持續交付帶來的好處嗎?

持續交付所帶來的收益和價值是能覆蓋整個產品團隊,而不僅僅是開發人員。

  1. 產品的靈活交付、發佈可控,隨時有一個穩定可發佈的版本,產品人員身為產品前進方向上的主導者,可以有效把控版本發佈節奏。而且,計劃是趕不上變化的,代碼交付、功能點部署,是可以根據業務要求可靈活變換的。
  2. 產品人員是曝光在大眾、用戶目光底下的人,是出現問題故障,要首當其衝化解內外矛盾的人,產品人員對整個產品上線能否正常運行負有重要責任。同時,產品人員還是“產品的第一個用戶”,我們可以享有持續交付的保護,因為持續交付可以保證在迭代中的每個階段或需求變化時,都能夠及時測試驗證,獲得問題反饋。
  3. 因為持續交付,需要持續構建和集成代碼,並且及時部署到測試環境去驗證,產品經理以此可知悉當前開發的進度和質量,及時決策或調整,避免開發人員無故拖延工期所導致的扯皮現象。
  4. 在實施持續交付後,可以做到在保證交付質量的前提下,加快交付速度,從而更快地得到市場的反饋,產品經理就可以儘快做出判斷,更好的引領產品的方向,最終達到擴大收益、提高價值的終極目的。

題圖來自 Pexels,基於 CC0 協議


分享到:


相關文章: