Menu
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đang tải...

Metrics for PO — Lead Time, Cycle Time, Throughput

Chương Trình Thạo Product Owner Có Chứng Chỉ Bài 38/60

Mở đầu — vì sao bài này quan trọng

Có một câu hỏi mà gần như mọi stakeholder đều hỏi Product Owner ở Việt Nam: "Tính năng này bao giờ xong?" Và rất nhiều PO trả lời bằng cảm tính — "chắc khoảng 2 tuần", "team đang cố gắng", "sắp rồi anh". Những câu trả lời đó không sai về ý định, nhưng chúng vô dụng về mặt dữ liệu. Khi bạn không đo lường được dòng chảy công việc (flow) của team, bạn đang lái xe trong sương mù: vẫn đi được, nhưng không biết mình nhanh hay chậm, không biết chỗ nào kẹt, và không thể hứa hẹn điều gì có cơ sở.

Bài học này tập trung vào ba thước đo nền tảng của flow: Lead Time, Cycle TimeThroughput — được hệ thống hóa rõ ràng nhất bởi Daniel Vacanti trong cuốn Actionable Agile Metrics for Predictability. Đây không phải là những con số để báo cáo cho đẹp. Chúng là công cụ để PO trả lời ba câu hỏi sống còn: việc đi qua hệ thống mất bao lâu, phần nào của hành trình đó nằm trong tầm kiểm soát của team, và mỗi đơn vị thời gian team hoàn thành được bao nhiêu việc.

Một điều cần làm rõ ngay từ đầu: bài này KHÔNG bàn về velocity hay throughput dưới góc độ "đo flow theo Sprint" (đó là chủ đề riêng của Bài 24), cũng không đi sâu vào Cumulative Flow Diagram (Bài 39) hay forecasting xác suất (Bài 48). Ở đây chúng ta xây nền móng: hiểu thật chắc bản chất của ba metric flow, cách tính, cách diễn giải, và cách dùng chúng để ra quyết định hằng ngày.

Khái niệm cốt lõi

Tư duy về một "hệ thống công việc"

Trước khi nói đến metric, hãy hình dung công việc của team như nước chảy qua một đường ống. Mỗi item (story, bug, task) là một giọt nước đi vào ống ở một đầu và đi ra ở đầu kia khi nó được ship. Flow metrics chính là cách bạn đo tốc độ và hiệu suất của đường ống đó. Có ba mốc thời gian quan trọng cần định nghĩa rõ ràng cho mọi item:

  • Commit point — thời điểm team cam kết sẽ làm item này (thường là khi nó được kéo vào trạng thái "In Progress" hoặc bắt đầu được code).
  • Arrival / request point — thời điểm item xuất hiện trong hệ thống dưới dạng một yêu cầu được ghi nhận (thường là khi nó vào backlog hoặc được chấp nhận để xem xét).
  • Done / departure point — thời điểm item thực sự đem lại giá trị, tức là đã ship/release tới người dùng.
Mọi nhập nhằng về metric đều bắt nguồn từ việc team không thống nhất ba mốc này. Vì vậy nguyên tắc số một: định nghĩa rõ điểm bắt đầu và điểm kết thúc của từng metric, viết ra, dán lên tường.

Lead Time — góc nhìn của khách hàng

Lead Time đo khoảng thời gian từ khi một yêu cầu được ghi nhận trong hệ thống (vào backlog, được khách hàng đặt ra) cho đến khi nó được ship. Đây là con số mà khách hàng và stakeholder thực sự cảm nhận — họ không quan tâm developer mất bao lâu để code; họ quan tâm từ lúc họ đề xuất ý tưởng đến lúc dùng được là bao lâu.

Lead Time bao gồm cả thời gian item nằm chờ trong backlog (wait time) lẫn thời gian được xử lý. Đây chính là lý do Lead Time thường dài hơn nhiều so với Cycle Time. Một story có thể chỉ mất 3 ngày để code xong (Cycle Time), nhưng nếu nó nằm chờ trong backlog 6 tuần trước đó, thì Lead Time của nó là gần 7 tuần.

Cycle Time — góc nhìn của team

Cycle Time đo khoảng thời gian từ khi team thật sự bắt đầu làm việc trên item (commit point — kéo vào "In Progress") cho đến khi ship. Đây là phần hành trình nằm trong tầm kiểm soát của team delivery. Cycle Time cho bạn biết: một khi team đã xắn tay vào làm, mất bao lâu để xong?

Sự khác biệt giữa Lead Time và Cycle Time là một trong những insight quý giá nhất cho PO. Nếu Lead Time = 40 ngày nhưng Cycle Time chỉ = 5 ngày, thì 35 ngày còn lại là item nằm chờ — và đó là vấn đề về ordering backlog và quản lý dòng vào, không phải vấn đề team làm chậm. Ngược lại, nếu Lead Time và Cycle Time gần bằng nhau và đều dài, thì nút thắt nằm ở khâu thực thi.

Throughput — nhịp đập của hệ thống

Throughput là số lượng item team hoàn thành (ship) trong một đơn vị thời gian — ví dụ "8 item mỗi tuần" hoặc "30 item mỗi Sprint". Lưu ý quan trọng: throughput đếm số item, không phải story point. Đây là điểm phân biệt với velocity. Throughput đếm "có bao nhiêu thứ đi ra khỏi ống" một cách trần trụi, không cần ước lượng kích thước trước.

Throughput trả lời câu hỏi về năng lực (capacity): với nhịp hiện tại, trong một tháng tới team sẽ hoàn thành được khoảng bao nhiêu việc? Đây là input trực tiếp cho mọi cuộc trò chuyện về cam kết deadline.

Định luật Little — sợi dây nối ba metric

Ba metric này không độc lập. Chúng được nối với nhau bằng Little's Law, một trong những công thức nền tảng của lý thuyết hàng đợi:

> Average Cycle Time = Work In Progress (WIP) / Throughput

Diễn giải bằng ngôn ngữ đời thường: thời gian trung bình để làm xong một việc bằng số việc đang làm dở chia cho tốc độ hoàn thành. Hệ quả cực kỳ thực dụng cho PO: nếu bạn muốn item ra nhanh hơn (giảm Cycle Time), cách hiệu quả nhất thường không phải bắt team làm nhanh hơn, mà là giảm số việc đang làm dở cùng lúc (giảm WIP). Càng ôm nhiều việc song song, mỗi việc càng lâu xong. Đây là lý do "stop starting, start finishing" trở thành câu thần chú của các team flow tốt.

Tình huống thực tế

Tình huống 1 — Sàn TMĐT giả định "ShopViet": khi Lead Time phơi bày sự thật

ShopViet là một sàn thương mại điện tử tầm trung ở TP.HCM. Team Promotions có một PO tên Trang, thường xuyên bị giám đốc marketing trách là "team dev làm chậm quá". Trang quyết định đo flow metrics trong 2 tháng. Kết quả gây bất ngờ:

  • Cycle Time trung bình: 4,2 ngày — team code rất gọn.
  • Lead Time trung bình: 38 ngày.
  • Throughput: 6 item/tuần.
Khoảng cách 34 ngày giữa Lead Time và Cycle Time chính là thời gian item nằm chờ trong backlog. Khi Trang phân tích sâu, cô phát hiện backlog có hơn 90 item, và những yêu cầu mới từ marketing thường bị chèn lên đầu, đẩy các item cũ lùi lại mãi. Vấn đề hoàn toàn không phải team dev chậm — mà là dòng vào không được kiểm soát và backlog phình to.

Diễn giải: Trang mang chính con số này ra cuộc họp với giám đốc marketing. Thay vì tranh cãi cảm tính, cô chỉ ra: "Team mất 4 ngày để làm xong một việc. Nhưng vì chúng ta đang ôm 90 yêu cầu cùng lúc và liên tục chèn việc mới, mỗi yêu cầu phải xếp hàng trung bình hơn 1 tháng." Cuộc trò chuyện chuyển từ "đổ lỗi cho dev" sang "chúng ta cần kỷ luật về việc nhận bao nhiêu yêu cầu".

Bài học: Lead Time dài + Cycle Time ngắn = vấn đề nằm ở backlog và dòng vào, không phải ở năng lực thực thi. Nếu Trang chỉ nhìn Cycle Time, cô đã không bao giờ thấy được nút thắt thật sự.

Tình huống 2 — Fintech "MoMoPay-style": dùng Throughput để cam kết deadline có cơ sở

Một team tại một ví điện tử lớn (gọi là PayOne) cần trả lời câu hỏi của ban giám đốc: "Tính năng chia hóa đơn (split bill) gồm khoảng 24 story, bao giờ xong?" PO tên Hùng không đoán bừa. Anh nhìn vào dữ liệu throughput của 8 tuần gần nhất:

TuầnItem hoàn thành
17
25
36
48
54
67
76
85
Throughput trung bình ≈ 6 item/tuần, nhưng dao động từ 4 đến 8. Thay vì hứa "4 tuần là xong" (24 / 6), Hùng đưa ra một khoảng có cơ sở: "Trong trường hợp tốt (8/tuần), khoảng 3 tuần; trường hợp xấu (4/tuần), khoảng 6 tuần. Cam kết an toàn của em là 5-6 tuần."

Diễn giải: Hùng không dùng story point hay velocity. Anh chỉ đếm số item thực sự đi ra khỏi hệ thống mỗi tuần — một con số mộc mạc nhưng cực kỳ đáng tin vì nó dựa trên hành vi quá khứ của chính team này, trong chính bối cảnh này. Anh cũng nói thêm với ban giám đốc rằng sự dao động (4 đến 8) là lý do anh không đưa một con số duy nhất.

Bài học: Throughput là input mạnh hơn velocity để trả lời "bao giờ xong", vì nó không phụ thuộc vào độ chính xác của ước lượng. Và việc trình bày bằng khoảng (range) thay vì một con số tuyệt đối giúp PO giữ uy tín khi thực tế có biến động.

Tình huống 3 — Công ty outsourcing tại Đà Nẵng: Little's Law và bài học giảm WIP

Một team 6 người tại một công ty outsourcing ở Đà Nẵng phàn nàn rằng Cycle Time của họ cứ leo thang — từ 5 ngày lên 12 ngày trong vòng một quý, dù không ai tuyển thêm việc gì "lớn hơn". PO tên Linh áp dụng Little's Law để chẩn đoán.

Cô đo WIP trung bình: team đang có 14 item ở trạng thái In Progress cùng lúc (với 6 người!). Throughput vẫn khoảng 7 item/tuần. Áp công thức:

> Cycle Time = WIP / Throughput = 14 / 7 = 2 tuần ≈ 10 ngày làm việc

Con số khớp với thực tế. Nguyên nhân lộ rõ: mỗi developer ôm 2-3 item song song, liên tục chuyển ngữ cảnh (context switching), khiến mọi thứ chậm lại. Linh đặt ra giới hạn WIP = 8, yêu cầu team "ngừng bắt đầu việc mới, tập trung làm xong việc đang dở". Sau 3 Sprint, WIP trung bình giảm còn 7, và Cycle Time tụt xuống còn 5-6 ngày — dù throughput gần như không đổi.

Bài học: Bạn không cần ép team làm nhanh hơn để giảm Cycle Time. Giảm số việc làm song song (WIP) thường là đòn bẩy mạnh nhất, và Little's Law cho bạn cơ sở định lượng để thuyết phục team.

Hướng dẫn từng bước

Đây là quy trình thực tế để một PO bắt đầu đo và dùng flow metrics, kể cả khi team chưa có công cụ phức tạp.

Bước 1 — Thống nhất định nghĩa các mốc thời gian. Cùng team xác định: điểm "bắt đầu Lead Time" (thường là khi item vào backlog hoặc được accept), điểm "bắt đầu Cycle Time" (khi kéo vào In Progress), và điểm "Done" (khi nào coi là ship). Viết ra rõ ràng. Đây là bước quan trọng nhất; bỏ qua nó thì mọi số liệu sau đều vô nghĩa.

Bước 2 — Ghi nhận timestamp. Với mỗi item, ghi lại ngày nó qua từng mốc. Jira, Trello, Azure DevOps đều tự lưu lịch sử chuyển cột. Nếu dùng bảng vật lý, chỉ cần ghi ngày vào và ngày ra trên mỗi sticky note.

Bước 3 — Tính ba metric. Lead Time = ngày Done − ngày vào backlog. Cycle Time = ngày Done − ngày bắt đầu In Progress. Throughput = đếm số item Done trong mỗi tuần/Sprint.

Bước 4 — Dùng số trung vị (median), không dùng trung bình (mean). Dữ liệu flow thường lệch (một vài item kẹt rất lâu kéo trung bình lên cao). Median ("50% item xong trong vòng X ngày") phản ánh thực tế tốt hơn và khó bị bóp méo bởi ngoại lệ.

Bước 5 — Theo dõi phân phối, không chỉ một con số. Thay vì nói "Cycle Time là 5 ngày", hãy nói "85% item xong trong vòng 9 ngày". Cách diễn đạt theo phần trăm (percentile) này chính là nền tảng để sau này bạn làm forecasting (Bài 48).

Bước 6 — Đưa metric vào nhịp làm việc. Mang Cycle Time và Throughput vào Retrospective để hỏi "điều gì khiến item này kẹt lâu?". Mang Lead Time vào trò chuyện với stakeholder để quản lý kỳ vọng.

Bước 7 — Hành động dựa trên insight, không treo số liệu lên cho đẹp. Lead Time dài → xem lại ordering backlog và dòng vào. Cycle Time tăng → kiểm tra WIP và context switching. Throughput sụt → tìm nút thắt (chờ review? chờ QA? chờ môi trường?).

Lỗi thường gặp & mẹo

Lỗi 1 — Nhầm lẫn Lead Time và Cycle Time. Đây là lỗi phổ biến nhất. Hệ quả là PO báo cáo sai và ra quyết định sai chỗ. Mẹo ghi nhớ: Lead Time là góc nhìn của khách hàng (từ lúc tôi yêu cầu), Cycle Time là góc nhìn của team (từ lúc tôi bắt đầu làm).

Lỗi 2 — Đo throughput bằng story point. Throughput là số item. Khi bạn dùng point, bạn lại phụ thuộc vào ước lượng — vốn là thứ flow metrics muốn giúp bạn thoát khỏi. Đếm item đơn giản và đáng tin hơn.

Lỗi 3 — Dùng số trung bình cho dữ liệu lệch. Một item kẹt 60 ngày có thể kéo trung bình lên gấp đôi trong khi median vẫn ổn. Luôn ưu tiên median và percentile.

Lỗi 4 — Biến metric thành công cụ trừng phạt. Nếu team biết Cycle Time được dùng để đánh giá cá nhân, họ sẽ "game" hệ thống (chia nhỏ item giả tạo, đánh dấu Done sớm). Metric flow là để soi hệ thống, không phải soi người. Nói rõ điều này với team.

Lỗi 5 — Bỏ qua các item bị "blocked". Item nằm chờ vì phụ thuộc bên ngoài vẫn đang tích lũy Cycle Time. Đừng tạm dừng đồng hồ — chính thời gian chờ đó là tín hiệu cho thấy hệ thống có vấn đề về phụ thuộc.

Mẹo vàng: Bắt đầu nhỏ. Bạn không cần dashboard hoành tráng. Một bảng tính Google Sheet với cột "ngày vào backlog, ngày start, ngày done" cho 20-30 item gần nhất đã đủ cho bạn những insight đầu tiên có giá trị.

Bài tập thực hành

  • Lấy 20 item gần nhất mà team bạn đã hoàn thành. Ghi lại ba mốc thời gian cho từng item, rồi tính Lead Time và Cycle Time của mỗi item.
  • Tính median của Lead Time và Cycle Time. Khoảng cách giữa hai con số nói lên điều gì về backlog của bạn? Nếu Lead Time lớn hơn Cycle Time nhiều lần, hãy viết ra một giả thuyết về nguyên nhân.
  • Tính throughput theo tuần cho 8 tuần gần nhất. Tìm giá trị nhỏ nhất và lớn nhất. Dùng khoảng này để ước lượng: một feature gồm 18 item sẽ mất khoảng bao nhiêu tuần (trường hợp tốt và xấu)?
  • Áp dụng Little's Law: đếm số item đang In Progress hiện tại (WIP). Với throughput trung bình bạn vừa tính, công thức dự đoán Cycle Time là bao nhiêu? So sánh với Cycle Time thực tế ở bài 2 — chúng có khớp không? Nếu lệch nhiều, hãy đặt câu hỏi tại sao.
  • Viết một câu trả lời mẫu cho câu hỏi "bao giờ xong?" dựa trên dữ liệu throughput, trình bày bằng khoảng thay vì một con số duy nhất, để dùng trong lần trò chuyện tới với stakeholder.

Tóm tắt

Ba flow metrics nền tảng mà mọi Product Owner cần nắm vững là Lead Time (từ lúc khách hàng yêu cầu đến lúc ship — góc nhìn khách hàng), Cycle Time (từ lúc team bắt đầu làm đến lúc ship — góc nhìn team), và Throughput (số item hoàn thành mỗi đơn vị thời gian — nhịp đập năng lực). Khoảng cách giữa Lead Time và Cycle Time tiết lộ vấn đề nằm ở backlog/dòng vào hay ở khâu thực thi. Throughput là input đáng tin để trả lời "bao giờ xong" mà không phụ thuộc vào ước lượng. Và Little's Law (Cycle Time = WIP / Throughput) cho bạn đòn bẩy mạnh nhất: muốn nhanh hơn, hãy giảm việc làm dở song song chứ đừng ép team chạy nhanh hơn.

Hãy đo bằng median và percentile, dùng metric để soi hệ thống chứ không soi người, và bắt đầu từ một bảng tính đơn giản. Khi bạn biến những con số này thành ngôn ngữ chung với team và stakeholder, bạn không còn lái xe trong sương mù nữa — bạn có một chiếc đồng hồ tốc độ và một tấm bản đồ. Đó chính là sự khác biệt giữa một PO đoán mò và một PO ra quyết định có cơ sở.