Nền tảng
Chưa đo được thì chưa kiểm soát được
Nguyên tắc thứ ba của sổ tay, kèm bản đồ đi với nó: mỗi thứ sổ tay tuyên bố kiểm soát được thì chứng minh bằng con số nào, và con số đó nằm ở bài nào.
Nội dung bài
Thuật ngữ trong bài (28)
- acceptance criteria · tiêu chí nghiệm thu
- definition of done · định nghĩa hoàn thành
- quality gate · cổng chất lượng
- sprint · chu kỳ làm việc
- waiver · miễn trừ có kiểm soát
- CI · tích hợp liên tục
- commit · điểm lưu thay đổi
- bug · lỗi
- coverage · độ phủ test
- defect · khiếm khuyết
- device matrix · ma trận thiết bị
- regression · lỗi tái phát
- feature flag · công tắc tính năng
- release · bản phát hành
- rollout · đưa bản mới ra người dùng
- dashboard · bảng theo dõi
- incident · sự cố
- on-call · ca trực
- ANR · app không phản hồi
- cold start · khởi động nguội
- device tier · bậc thiết bị
- low-end · máy cấu hình thấp
- analytics · đo hành vi người dùng
- baseline · mốc nền
- crash-free · tỷ lệ không sập
- API · giao diện lập trình
- endpoint · điểm gọi
- SDK · bộ thư viện tích hợp
Ý tưởng trong một câu
Một câu bắt buộc không có con số đi kèm thì không phải là cơ chế kiểm soát. Nó là một ý định, và ý định không chặn được gì.
Đọc bất kỳ dòng "phải", "bắt buộc", "không được" nào trong sổ tay này rồi hỏi đúng hai câu:
- Câu này bị vi phạm thì ta biết bằng cách nào?
- Biết rồi thì cái gì chặn nó lại?
Không trả lời được câu một: chưa đo được, nên coi như chưa kiểm soát được. Trả lời được câu một mà không trả lời được câu hai: đo được nhưng vẫn chưa kiểm soát — mới chỉ có một con số để nhìn.
Ba nấc của một câu khẳng định
- Ý kiến
"App phải nhanh" — không ai làm sai được, và cũng không ai làm đúng được
- Con số
"Cold start nhóm 95% ≤ 2,0s trên máy Tier 1 low-end" — kiểm chứng được
- Cơ chế
CI đỏ khi vượt ngưỡng — thứ duy nhất chặn được lần vi phạm tiếp theo
Nấc một lên nấc hai là việc của người viết yêu cầu. Nấc hai lên nấc ba là việc của người dựng cổng. Performance budget mở đầu bằng đúng ví dụ này, vì nó là ví dụ dễ thấy nhất.
Dừng ở nấc hai rất dễ chịu: có bảng, có số, họp nào cũng đọc được — nhưng không có gì ngăn lần vi phạm tiếp theo, và con số khi đó chỉ ghi lại thiệt hại sau khi nó đã xảy ra. Câu nguyên tắc chỉ nói tới chặng một lên hai; phần lớn công sức thật nằm ở chặng hai lên ba, và đó là nội dung của quality gate tự động.
Sổ tay đang tuyên bố kiểm soát những gì
Mỗi dòng là một thứ sổ tay nói là kiểm soát được. Cột "đo bằng" chỉ ghi tên con số — đích và ngưỡng nằm ở bài cột cuối.
| Tuyên bố | Đo bằng | Nhịp | Ai đọc | Định nghĩa và ngưỡng ở |
|---|---|---|---|---|
| App có chạy được không | Crash-free sessions, ANR rate, tỷ lệ lỗi API theo endpoint | Hằng ngày | Người trực | Production monitoring, quy tắc cảnh báo |
| App có nhanh không | Cold start và warm start nhóm 95%, render sau khi có dữ liệu, API nhóm 95%, kích thước bản tải | Mỗi release | Chủ kỹ thuật | Performance budget |
| Chịu được quy mô 500.000 không | Người dùng đồng thời, tin nhắn mỗi giây, yêu cầu API mỗi giây, đơn mỗi phút | Trước release lớn | Chủ kỹ thuật | Test tải và quy mô |
| Hàng rào chất lượng có hoạt động không | Defect leakage, flaky test rate, thời gian phản hồi CI, tỷ lệ pass regression | Hằng tháng | Chủ kỹ thuật | Quality metrics, Shift Left |
| Người dùng có làm được việc không | Tỷ lệ hoàn thành luồng, tỷ lệ bỏ dở theo bước, thời gian tới giá trị đầu tiên | Hằng tuần | Chủ sản phẩm | Đo lường sản phẩm, analytics event |
| Đội giao hàng nhanh chậm thế nào | Tần suất triển khai, thời gian từ commit tới production, tỷ lệ thay đổi gây sự cố, thời gian khôi phục | Hằng tháng | Quản lý dự án | Đo lường sản phẩm |
| Bản đang ra có an toàn không | Bốn chỉ số ở mỗi nấc rollout, cắt theo app version | Sau mỗi nấc | Người cắt bản | Release từng phần, yêu cầu báo cáo |
| Còn được phép release nhanh không | Ngân sách lỗi tháng đã tiêu | Hằng tháng | Chủ kỹ thuật | Chất lượng ở quy mô 500.000 |
| Đã test trên đủ máy chưa | Độ phủ Tier 1, số OS version đang phủ, ngày kiểm kê gần nhất | Mỗi release, soát lại hằng quý | Chủ kỹ thuật | Device matrix, danh sách máy |
| Sự cố có được xử lý đủ nhanh không | Thời gian phát hiện, thời gian khôi phục, số sự cố kết thúc bằng một thay đổi cơ chế | Hằng tháng | Quản lý dự án | Sự cố và on-call |
| "Xong" có đúng nghĩa xong không | Số waiver đã ký trong bản, điều kiện DoD nào liên tục bị bỏ qua | Mỗi release | Người ký release | Definition of Done, checklist trước release |
| Bản release có đạt nền bảo mật không | Số mục checklist chưa đạt, số SDK bên thứ ba chưa rà | Mỗi release | Chủ kỹ thuật | Security baseline |
| Nợ kỹ thuật đang tăng hay giảm | Phần năng lực mỗi kỳ thật sự dùng để trả nợ, số hạng mục nợ đang gây đau | Hằng tháng | Chủ kỹ thuật | Rủi ro và nợ kỹ thuật |
| Thay đổi có thật sự tốt hơn không | Chỉ số chính và chỉ số bảo vệ, khai báo trước khi chạy | Mỗi thử nghiệm | Chủ sản phẩm | Thử nghiệm có kiểm chứng |
| Đội có đang kiệt sức không | Tỷ lệ commit ngoài giờ, ngày phép chưa dùng, việc chen ngang mỗi sprint | Hằng quý | Quản lý dự án | Sức khoẻ đội ngũ |
Đọc bảng theo cột cuối thì nó là danh sách bài phải mở khi một con số đi sai hướng. Cột "ai đọc" khớp với vai trò và trách nhiệm: mỗi con số có đúng một người đọc nó theo nhịp, không con số nào thuộc về cả đội.
Đo được không có nghĩa là đang đo
Bảng trên nói phải đo gì. Việc con số đó hôm nay có thật hay không là câu hỏi khác, và câu trả lời hiện tại phần lớn là chưa.
Tám thứ phải dựng mới có số — analytics event, hai dashboard tách nhau, cảnh báo có ngưỡng, bảng trạng thái feature flag, kiểm kê thiết bị, automation đo hiệu năng trên máy thật, CI xuất được số, sổ bug có trường phân loại — cùng thứ tự dựng theo ba đợt nằm ở Yêu cầu báo cáo. Không lặp lại ở đây.
Ví dụ sống ngay trong sổ tay này: chính sách device tier đã đủ chi tiết, nhưng danh sách máy đang rỗng. Chính sách ở nấc hai, độ phủ thật vẫn ở nấc một — nên câu "đã test trên đủ máy" hiện chưa kiểm soát được, dù bài viết về nó đã xong.
Luật áp dụng, khi đang viết một dòng bắt buộc
Viết mục tiêu
Trường
outcomesphải là kết quả đo được, không phải mô tả hoạt động. "Cải thiện trải nghiệm đăng nhập" là hoạt động, "tỷ lệ đăng nhập thành công từ 94% lên 98%" là kết quả — xem mục tiêuViết acceptance criteria
Mỗi tiêu chí phải kiểm chứng được bằng một phép thử, và danh sách analytics event nằm cùng hạng với tiêu chí chức năng — xem viết yêu cầu
Viết một chuẩn bắt buộc
Không đo được thì viết lại cho đo được, hoặc bỏ ra khỏi danh sách bắt buộc. Chuẩn giao diện đã áp luật này: ghi kết quả đo được, không ghi pattern
Đặt một ngưỡng cảnh báo
Ngưỡng phải đọc ra số người chứ không chỉ tỷ lệ — 1% lỗi API là 5.000 người thật. Xem quy tắc cảnh báo
Thêm một chỉ số mới
Trả lời được "khi nó đi sai hướng, ai làm gì" thì mới thêm. Không trả lời được thì bỏ — luật của Quality metrics
Hai cách áp dụng sai, cả hai đều tệ hơn không đo
Đo thứ dễ đo thay cho thứ cần đo
- Tổng lượt tải, thời gian ở trong app, số màn hình mỗi phiên, số commit
- Coverage tổng của repo, vì ép lên bằng test rỗng rất dễ
- Dấu hiệu nhận ra: con số đẹp lên đều đặn mà không quyết định nào đổi theo
- Danh sách đầy đủ ở chỉ số dễ bị lừa
Đo để chấm điểm người
- Chỉ số gắn lên đầu một cá nhân thì ngừng phản ánh sự thật, vì đội sẽ tối ưu con số
- Ba chỉ số ở sức khoẻ đội ngũ đặc biệt dễ bị dùng sai kiểu này
- Dấu hiệu nhận ra: người ta bắt đầu giải thích con số trước khi có ai kịp hỏi
- Dùng số để hiểu hệ thống, không dùng để xếp hạng người
Giới hạn
- Không phải thứ gì cũng đo được, và bịa ra một con số còn tệ hơn để trống. Rủi ro kiệt sức không có cổng máy nào chặn; ba con số ở sức khoẻ đội ngũ là dấu hiệu sớm, không phải thước đo. Chỗ đó nguyên tắc này dừng đúng ở câu chữ của nó — coi như chưa kiểm soát được — và bù bằng luật cứng cùng buổi một-một, không bù bằng một dashboard.
- Chất lượng thiết kế và chất lượng review đo gián tiếp được, đo trực tiếp thì không. Đây chính là nửa còn lại của nguyên tắc "máy kiểm tra được thì đừng bắt người kiểm tra": phần máy không thấy được là phần phải dành sức người.
- Bảng đăng ký ở trên là bản đồ điều hướng, không phải nguồn chân lý. Thêm một chỉ số ở bài
khác mà quên thêm dòng ở đây thì bản đồ thiếu, và
check:contentkhông bắt được loại thiếu đó — nó chỉ bắt link hỏng. Soát lại mỗi quý, cùng lúc với lần soát danh sách mười hai chỉ số ở Quality metrics.

