AllianceProject Handbook
← Knowledge

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.

Cập nhật 14/09/2026nguyên tắcsố liệuđo lường

Ý 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:

  1. Câu này bị vi phạm thì ta biết bằng cách nào?
  2. 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

  1. Ý kiến

    "App phải nhanh" — không ai làm sai được, và cũng không ai làm đúng được

  2. Con số

    "Cold start nhóm 95% ≤ 2,0s trên máy Tier 1 low-end" — kiểm chứng được

  3. 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ằngNhịpAi đọcĐịnh nghĩa và ngưỡng ở
App có chạy được khôngCrash-free sessions, ANR rate, tỷ lệ lỗi API theo endpointHằng ngàyNgười trựcProduction monitoring, quy tắc cảnh báo
App có nhanh khôngCold 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ảiMỗi releaseChủ kỹ thuậtPerformance budget
Chịu được quy mô 500.000 khôngNgườ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útTrước release lớnChủ kỹ thuậtTest tải và quy mô
Hàng rào chất lượng có hoạt động khôngDefect leakage, flaky test rate, thời gian phản hồi CI, tỷ lệ pass regressionHằng thángChủ kỹ thuậtQuality metrics, Shift Left
Người dùng có làm được việc khôngTỷ lệ hoàn thành luồng, tỷ lệ bỏ dở theo bước, thời gian tới giá trị đầu tiênHằng tuầnChủ sản phẩmĐo lường sản phẩm, analytics event
Đội giao hàng nhanh chậm thế nàoTầ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ụcHằng thángQuản lý dự ánĐo lường sản phẩm
Bản đang ra có an toàn khôngBốn chỉ số ở mỗi nấc rollout, cắt theo app versionSau mỗi nấcNgười cắt bảnRelease từng phần, yêu cầu báo cáo
Còn được phép release nhanh khôngNgân sách lỗi tháng đã tiêuHằng thángChủ kỹ thuậtChấ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ấtMỗi release, soát lại hằng quýChủ kỹ thuậtDevice matrix, danh sách máy
Sự cố có được xử lý đủ nhanh khôngThờ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ángQuản lý dự ánSự cố và on-call
"Xong" có đúng nghĩa xong khôngSố waiver đã ký trong bản, điều kiện DoD nào liên tục bị bỏ quaMỗi releaseNgười ký releaseDefinition of Done, checklist trước release
Bản release có đạt nền bảo mật khôngSố mục checklist chưa đạt, số SDK bên thứ ba chưa ràMỗi releaseChủ kỹ thuậtSecurity baseline
Nợ kỹ thuật đang tăng hay giảmPhần năng lực mỗi kỳ thật sự dùng để trả nợ, số hạng mục nợ đang gây đauHằng thángChủ kỹ thuậtRủi ro và nợ kỹ thuật
Thay đổi có thật sự tốt hơn khôngChỉ số chính và chỉ số bảo vệ, khai báo trước khi chạyMỗi thử nghiệmChủ sản phẩmThử nghiệm có kiểm chứng
Đội có đang kiệt sức khôngTỷ lệ commit ngoài giờ, ngày phép chưa dùng, việc chen ngang mỗi sprintHằng quýQuản lý dự ánSứ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

  1. Viết mục tiêu

    Trường outcomes phả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êu

  2. Viế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

  3. 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

  4. Đặ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

  5. 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:content khô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.