iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Software Development

善用工具,現形你的開發流動系列 第 23

利用工具組合產出順暢度圖表:指標計算與圖表繪製 (1)

  • 分享至 

  • xImage
  •  

第 15 章:指標計算與圖表繪製

指標計算 - Lead Time

今天來製作 Lead Time 與其相關的圖表,順手算一下相近算法的指標。

  • Customer Lead Time: 從 created 到 delivered 過了多久,筆者認為可以用來反應 Product Backlog 的市場反應程度。
  • System Lead Time: 主要關注的時間點,從說要做(committed)到 delivered 過了多久,用來反應開發流動的順暢度。
  • Cycle Time: 從開始做到 delivered 過了多久,用來觀測團隊開發的效率與受干擾的程度。
  • Age Time: 從說要做(committed)到現在過了多久,用在還沒有 delivered 的 PBI 上。
  • Prioritization Time: 從 created 到 committed 過了多久,若還沒 committed 則算到至今,可以輔助讓 PO 去識別是不是有些 PBI 可以拋棄(discard)了。

lead-time-01

首先建立一個放置計算後指標的區塊,把會在圖表上的相關指標都放在這,本文依順序放置了:

  • Story Point
  • Customer Lead Time
  • System Lead Time
  • Cycle Time
  • Age Time
  • Prioritization Time

lead-time-02

接著透過以下公式,去計算各個時間相關指標的數值。筆者將其分成三種類型:

  • Type A:有開始,但要結束才會計算的時間指標
  • Type B:有開始,但只計算還沒結束期間,從開始至今的時間指標
  • Type C:前兩者綜合,如果結束了就已結束時間結算,若還沒結束則算到至今的時間指標
// Type A: Customer Lead Time, System Lead Time, Cycle Time
=IF(OR(起始時間戳儲存格="", 結束時間戳儲存格=""), ,
  DAYS(結束時間戳儲存格, 起始時間戳儲存格)
)

// Type B: Age Time
=IF(OR(起始時間戳儲存格="", NOT(結束時間戳儲存格="")), ,
  DAYS(NOW(), 起始時間戳儲存格)
)

// Type C: Prioritization Time
=IF(起始時間戳儲存格="", ,
  DAYS(
    IF(結束時間戳儲存格="", NOW(), 結束時間戳儲存格), 起始時間戳儲存格)
)

讀者可以搭配本文一開始的圖,以及下方表格去自行更新公式,也算是做個小練習。

F G H I J K L M N
Created refined at selected at began to develop at developed at tested at reviewed at deployed at Updated

筆者透過下圖給予讀者對照,第三列是已經套好公式的儲存格列,第四列則顯示第三列的公式。若讀者完成第三列公式的編寫,就可以直接套用到最底了。

lead-time-03

成果大致如圖

lead-time-04

接下來就要分別產生 Lead Time Run Chart 與 Lead Time Distribution Chart。

圖表繪製 - Lead Time Run Chart

先複習一下前面介紹 Lead Time Run Chart 的概念,這種圖表橫軸是交付的順序,縱軸則是 Lead Time 天數。

lead-time-05

最簡單的版本就是兩欄,一欄順序、一欄天數。這邊做個小變化,將進行中的 PBI 在圖表用不同顏色也涵蓋進來,數值是用 Age Time 取代 System Lead Time。

// Done Order
=IF(AND($R3="", $T3=""), , $A3)

// System Lead Time
=IF($R3="", , $R3)

// Age Time
=IF($T3="", , $T3)

筆者一樣透過下圖給予讀者對照,第三列是已經套好公式的儲存格列,第四列則顯示第三列的公式。若讀者完成第三列公式的編寫,就可以直接套用到最底了。

lead-time-06

成果如下圖

lead-time-07

有了這些圖表用的資料後,就可以準備產生圖表了。筆者為了方便參照圖表與其資料,會另外建立一個工作表,然後引用 Data:Computed 的資料去產生圖表。以這個案例就是建立 Chart: Run 。並且透過以下公式引用資料。資料引用過來時不會把樣式跟著套用,可以再自行做修改。

// A1
=ARRAYFORMULA('Data: Compute'!B2:C)

// C1
=ARRAYFORMULA('Data: Compute'!W2:Y)

lead-time-08

引用完資料後,點選工具列的 Insert Chart

lead-time-09

接著選擇 scatter chart(散佈圖),X 軸設置為 Done Order 欄位,Series(系列)的資料集則選擇 System Lead TimeAge Time ,就可以生成類似下圖的 Lead Time Run Chart 了!筆者有再修改一些樣式讓其更易閱讀,這部分的設定應該不難,就讓讀者去摸索了。

lead-time-10

因為本圖表資料集是用 Chat GPT 生成的,所以分布會比較均勻,實務上的分布可能就不會像是這樣。歡迎讀者將自己生成的圖表分享到留言區囉!

筆者這邊也基於過去於某社搜集的數據,經過做一些資料的調整,做成的圖表分享在這。這邊是根據 work item type 和 size 分別去做上色的圖表,讀者也可以思考看看該如何做到這樣的渲染囉!

lead-time-11

lead-time-12

圖表繪製 - Lead Time Distribution Chart

先複習一下前面介紹 Lead Time Distribution Chart 的概念,這種圖表橫軸是 Lead Time 天數,縱軸則是符合該天數的 PBI 個數 。

lead-time-13

沿用 Run Chart 的設計,最簡單的版本就是兩欄,一欄天數、一欄是第幾天。這邊做個小變化,將進行中的 PBI 在圖表用不同顏色也涵蓋進來,數值是用 Age Time 取代 System Lead Time。

這裡使用的公式相對複雜,筆者在這裡多加解釋。這個圖表每個點都需要一組 X, Y 座標,藉此去放置資料點的位置。

X 座標是天數,也就是下圖的 System Lead Time (AA) 欄位,但因為這邊筆者有把 WIP 的 PBI 也加進來,所以透過 ARRAYFORMULA() 函式的計算功能將 System Lead Time 和 Age Time 相加,因為兩者不會同時存在,所以相加就等於是合併兩欄的資料。又因為避免相加產生 0 的資料,所以就透過 IF() 函式將其過濾掉。

Y 座標是這些 PBI 資料,天數符合 X 座標的個數。筆者將其分為兩系列方便上色區別,分別是代表交付個數的 Delivered Accumulation 以及額外加上 WIP 個數的 WIP AccumulationDelivered Accumulation 是透過 COUNTIF() 函式,去計算現在這列對應的天數,是第一列到目前這列第幾次出現,這樣就可以得到他該定位的個數座標。而 WIP Accumulation 預期是要疊加在 Delivered Accumulation 上面,所以計算個數時也會包含那些已經交付的 PBI。

公式輸入完畢後,就可以將兩欄的 Accumulation 往下套用。

// System Lead Time (AA3)
=ARRAYFORMULA(IF($R3:$R+$T3:$T=0, ,$R3:$R+$T3:$T))

// Delivered Accumulation
=IF($R3="", , COUNTIF($R$3:$R3, $R3))

// WIP Accumulation
=IF($T3="", , COUNTIF($AH$3:$AH3, $AH3))

lead-time-14

套用後的結果如下圖

lead-time-15

同樣的,有了這些圖表用的資料後,就可以準備產生圖表了。一樣建立新的工作表,名為 Chart: Distribution 。並且透過以下公式引用資料。資料引用過來時不會把樣式跟著套用,可以再自行做修改。

// A1
=ARRAYFORMULA('Data: Compute'!B2:C)

// C1
=ARRAYFORMULA('Data: Compute'!AA2:AC)

lead-time-16

引用完資料後,點選工具列的 Insert Chart

lead-time-17

接著選擇 scatter chart(散佈圖),X 軸設置為 System Lead Time 欄位,Series(系列)的資料集則選擇 Delivered AccumulationWIP Accumulation ,就可以生成類似下圖的 Lead Time Distribution Chart 了!筆者同樣有再修改一些樣式讓其更易閱讀。

lead-time-18

筆者同樣也基於過去於某社搜集的數據,經過做一些資料的調整,做成的圖表分享在這。這邊是根據 work item type 和 size 分別去做上色的圖表,讀者也可以思考看看該如何做到這樣的渲染囉!

lead-time-19

lead-time-20


今天示範了如何在 Google Sheet 計算指標並生成對應的簡單圖表,有時間改版時再分享更進階的圖表如何繪製,比如說 Control Chart 或者按照 work item type 和 size 分別去上色的版本。

明天預計會來分享 CFD 如何繪製,這部分會相對複雜一點,但延伸應用也是滿有趣的,敬請期待囉!


上一篇
利用工具組合產出順暢度圖表:資料正規化
下一篇
利用工具組合產出順暢度圖表:指標計算與圖表繪製 (2)
系列文
善用工具,現形你的開發流動31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言