PingCode 產品怎麼樣?產品底層邏輯是什麼樣的?


 PingCode作爲國內首款主打智簡研發理念的研發管理產品,經過3年時間的迭代與升級,累計發佈480個版本,上線7款子產品(第8款子產品即將上線)。

PingCode 形成了涵蓋項目管理 Project 、測試管理 Testhub、知識管理 Wiki、效能度量 Insight 、目標管理 Goals 等場景在內的 All-in-One 研發管理工具

本篇文章,我們會重點來聊聊 PingCode 產品設計的底層邏輯。

分層設計體系

在企業數字化轉型的時代,研發管理能力已經成爲一家公司的核心競爭力,研發管理本身又是一個長鏈條的管理過程,包括管理側的需求價值流和工程側的研發工作流,其中涉及到大量的方法論和工具。

這就要求我們的產品從設計上需要考慮使得每個團隊都能夠快速的消除成員之間的隔閡,確保每個人都能夠連接起來並訪問需要的信息,爲專注於業務價值而提供高效的決策。

PingCode 在產品設計上首先採用的是分層式設計體系,分爲應用層、產品層、平臺層:

  1. 平臺層:提供統一的數據模型平臺,在此之上構建產品和連接應用
  2. 產品層:提供矩陣式產品設計,方便團隊進行靈活的構建以實現業務價值,同時每個子產品都採用統一的用戶交互界面。
  3. 應用層:開放式的接入整個研發工具鏈產品,實現數據的統一接入及能力的擴展
資源 1222.png
 
圖 1 PingCode 平臺化設計框架
 

1. 產品層設計

在研發管理過程中,我們需要關注的其實是兩條流:管理側的需求價值流和工程側的研發工作流。我們的研發管理工具,其最終的價值在於讓這兩條流之間實現聯動,自動完成狀態的流轉和信息的同步。

  1. 管理側的需求價值流:以需求特性爲核心,貫穿需求、設計、開發、測試、發佈等階段。
  2. 工程側的研發工作流:以代碼提交爲線索,執行分支創建、代碼提交、編譯、掃描、測試、代碼合併、部署、發佈等活動。

1.1 業務場景矩陣化

PingCode 在產品層的設計上第一個特點是採用矩陣化的設計,每個子產品作爲一個相對獨立的模塊,單獨的解決某一方面的業務場景;

同時各個子產品之間又會相互關聯,比如用戶故事和測試用例、執行用例和缺陷、知識庫的頁面和工作項,工作項與目標之間都會互相關聯,在一個平臺之上實現數據的統一和協作的高效。

WX20220329-134554@2x.png
圖 2 PingCode 基於矩陣化的產品設計
 

每個團隊所面對的業務流程不同,採用的整個研發管理流程也不盡相同,矩陣化的產品設計可以保證每個團隊只根據實際業務場景的需要,購買不同的子產品以保持開箱即用的產品使用體驗。

WX20211101-161908@2x.png
 
圖 3 按需購買產品
 

1.2 基於 Streamlines 的協同

PingCode 在產品層的設計上第二個特點是基於 Streamlines 的協同,要解決管理側的需求價值流和工程側的研發工作流之間聯動,通常有兩種解決方案:

基於單點產品和 Streamlines 的協同解決方案。

  1. 基於單點產品的解決方案:團隊中各個角色通常需要在不同的工具之間切換,各個工具之間的數據不能實現有效的流動。
  2. 基於 Streamlines 的協同解決方案:團隊中所有角色及利益方工作於統一的平臺之上,每個環節產生的數據及有價值的信息都可以無縫的流動到下一個環節。

目前 PingCode 已經發布的產品包括了管理側的每個業務環節,從團隊目標開始,到產品路線圖,收集用戶的反饋以及進入到研發的迭代階段最終通過測試發佈上線。

工程側的研發工作流通過無縫集成第三方工具,使得管理側和工程側產生的數據,都集中在一個統一的數據模型平臺之上,實現兩條流之間的聯動及自動完成狀態的流轉和信息的同步。

圖-2.jpg
圖 4 基於Streamlines 的協同價值流
 

2. 平臺層設計

PingCode 平臺層的設計,使得所有的子產品、應用市場的應用以及第三方服務集成應用,都能夠構建在一個統一數據模型的平臺之上, 而在這個統一平臺的背後有四個核心的技術支撐:自動化、數據洞察、協作和可擴展,我們稱之爲 AICE 模型

微信圖片_20220425145001.png
圖 5 PingCode 平臺層的AICE模型
 

基於AICE 模型的平臺層是整個 PingCode 產品設計的基礎,在此之上構建的各個子產品,以及連接的各種研發場景的應用,都會基於 AICE 去實現。

2.1 Automation 自動化

構建在平臺層中的自動化引擎爲整個 PingCode 產品線的自動化實現提供支撐,幫助用戶專注於那些創造性的工作,頻繁且複雜的手工性的操作交由自動化引擎實現,並且在自動化引擎之上開發了自動化工作流產品 Flow。

在 Flow 中用戶可以通過以下3個概念隨意組合他們想要的自動化工作流,如有這樣一個工作流“當用戶在 GitHub 上提交代碼時,判斷對應的工作項狀態是否爲完成狀態,改變工作項的狀態,發送通知給相關人員”:

  1. Trigger:觸發器是指啓動自動化工作流的一個事件。如當用戶在 GitHub 上提交代碼時就是這個工作流的觸發器。
  2. Action:動作是指在觸發器時發生後執行的任務,每個流可以包含一個或多個動作,具體取決於完成特定流所需的操作。如改變工作項的狀態、發送通知給相關人員等都屬於動作。
  3. Condition:條件指示工作流根據在流中設置的預定邏輯執行動作, 如果滿足某些條件,則會完成一個或多個任務。如判斷對應的工作項狀態是否爲完成狀態。

整個自動化工作流的工作原理可以用如下表達式表示:

When ...(Trigger)... If ...(Condition)... Then ...(Action)...

資源 2222.png
圖 6 PingCode Flow 業務場景示例
 

Flow 中創建自動執行重複性任務的工作流可以有多種選擇,針對不同的自動化業務場景,選擇不同的工作流流類型,目前 Flow 支持三種工作流:

  1. 自動化流:通過特定事件觸發的自動化工作流,如創建工作項、提交代碼、發佈評論等事件。
  2. 計劃流:通過預設的時間定期執行的工作流,如每日上報未解決的缺陷等。
  3. 即時流:通過點擊按鈕運行的工作流,解決重複性的工作,如每次點擊時給團隊成員發送提醒等。

爲了方便用戶更快的開始自動化工作,PingCode 內置了大量的自動化流模板,通過這些模板可以快速創建一個工作流並應用於團隊中。

WX20211029-170516@2x.png
 
圖 7 PingCode Flow 內置自動化流模板

 

2.2 Insights 數據洞察

在今天的軟件開發領域,研發效能是一個不可忽視的話題,從互聯網大廠道中小腰部企業,都在重視研發效能的提升。

大廠們希望通過研發效能實現持續的研發能力提升以應對日益複雜的產品開發,中小腰部企業也希望通過研發效能實現彎道超車,充分發揮後來者居上的優勢。

PingCode 在平臺層面上已經充分考慮了研發效能的問題,保證用戶在使用 PingCode 產品中產生的數據,以及使用第三方研發產品產生的數據,通過平臺的 BI 引擎進行清洗加工,提煉出有價值的信息,進而爲用戶的業務決策提供依據。

在設計研發效能度量體系時,我們着重從如下幾個方面來考察:

  1. 交付效率:促進端到端、儘快的交付,用最短的時間順暢地交付用戶價值
  2. 交付質量:促進端到端高質量交付,避免不必要的錯誤和返工
  3. 交付能力:建設卓越的工程能力,實現持續交付
image.png
圖 8 PingCode 研發效能度量體系設計

 

在平臺層設計好研發度量的指標體系,以及提供數據度量分析的能力之後,只能算是在研發效能領域萬里長征走完第一步,接下來還需要在產品層面提供如何展示報表,最終形成完整的研發效能度量體系。

因爲研發效能度量的過程不僅僅只是一個數據報表的展示過程,而實際上我們要做的是把數據轉化爲信息,然後將信息轉化爲知識,這樣纔可以讓用戶進行分析和洞察。

下圖爲我們研發效能度量產品 PingCode Insight:

Insight-儀表盤.png
圖 9 PingCode Insight 研發效能產品

 

2.3 Collaboration 協作

PingCode 平臺中提供的協作技術,爲上層的產品中實現團隊成員之間高效協作提供支持,讓團隊成員能夠步調一致的進行工作。

在 PingCode Wiki 中,當多人同時編輯同一個頁面時,可以看到當前頁面有哪些協作者參與以及每個協作者正在操作的位置,實時同步每個協作者輸入的內容,以便高效的進行協作。

WX20211029-170844@2x.png
圖 10 PingCode Wiki 多人協同編輯示例

協作性的體現不僅僅在於團隊內部成員之間要高效協作,與團隊外部相關利益方的協作也至關重要,在整個研發研發鏈條上,不應該只有內部的產研角色,外部客戶、合作方也是整個鏈條上非常重要的環節。

PingCode 在平臺層設計用戶體系時充分考慮了這種場景,用戶可以分爲兩大類:

  1. licensed:團隊內部用戶,可以進入系統內部使用產品
  2. unlicensed:外部客戶或合作方,不用進入系統內部,通過提供的Portal功能與內部成員交互

如下圖爲內測中的unlicensed用戶訪問外部的工單Portal,不用進入系統即可與團隊內部成員進行溝通:

娓犻亾_鍒楄〃.png
圖 11 PingCode Ship 產品外部Portal

 

3.4 Extensibility 可擴展

PingCode 在底層設計上就充分考慮了未來產品的擴展能力,可以非常方便的擴展產品功能,以及接入第三方產品的能力,讓團隊能夠專注於快速的解決業務問題。

目前 PingCode 應用市場中已經有20多款應用,這些應用大體可以分爲三類:

  1. 功能擴展:擴展現有產品的功能,使其能夠適配團隊的業務場景,如Commit ID、提醒反饋等
  2. 獨立應用:作爲可以獨立使用的應用存在,解決某一個單點的業務場景,如待辦、甘特圖等
  3. 第三方接入:作爲 PingCode 和 開發生態鏈中其他產品的連接,使其能夠更好的協同一致的工作,如GitHub、Jenkins Plugin、GitLab等

未來還會考慮開放整個應用市場的開發能力,提供相應的Sandbox模型以及Toolkit幫助用戶更加輕鬆地在應用市場中開發自己的應用。

WX20211029-170606@2x.png
圖 12 PingCode 應用市場

 

用戶還可以通過 PingCode REST API 對當前團隊中正在使用的其他研發工具進行接入,實現 PingCode 和其他產品的數據互通,包括開發、構建、發佈等數據。

  1. 開發 Development:發送代碼託管平臺中的數據到 PingCode
  2. 構建 Build:發送構建記錄到 PingCode
  3. 發佈 Release:發送環境和部署數據到 PingCode

這些過程數據在與 PingCode 進行接入後,不僅可以使得過程數據與 PingCode 中的工作項連接起來,更好的協同一致的工作,同時這些數據還可以作爲研發效能度量的數據來源,以提供更有洞察力的研發效能指標。

WX20211101-153955@2x.png
圖 13 PingCode REST API

可擴展性作爲一個貫穿於 PingCode 所有產品的能力,除了通過應用市場和 REST API 能夠對 PingCode 進行擴展之外,在每個單點子產品上同樣也具有擴展能力

如在自動化產品 Flow 中,除了內置的系統連接器以及一些產品連接器外,還可以通過基於 HTTP Webhook 作爲觸發器/動作,這樣也可以通過 HTTP 的方式連接起 PingCode 和其他研發工具。

WX20211101-151822@2x.png
圖 14 PingCode Flow 產品中HTTP連接器

 

4. 總結

本篇文章中我們從整體上探討了 PingCode 的產品設計底層邏輯,分爲平臺層、產品層和應用層。

應用層通過應用市場和第三方集成接入,實現產品的能力擴展;

產品層採用矩陣化的設計以及基於 Streamlines 的協同設計,確保管理側的需求價值流和工程側的研發工作流之間的數據連接和信息同步,並提供統一的用戶交互界面;

平臺層提供了AICE 模型:自動化 Automation、數據洞察 Insights、協作 Collaboration 和可擴展 Extensibility,以及統一數據模型,爲平臺層之上的產品層和應用層提供支撐。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章