Nền tảng
Hệ điều hành dự án
Bản đồ tổng thể — toàn bộ sổ tay này ghép lại thành một vòng lặp khép kín. Đọc bài này trước, các bài còn lại là chi tiết của từng mắt xích.
Nội dung bài
Thuật ngữ trong bài (10)
Vấn đề bài này giải quyết
Một dự án hỏng hiếm khi vì đội không biết viết code. Nó hỏng vì những thứ nhỏ và tẻ nhạt: không ai biết việc đang nằm ở đâu, hai người sửa cùng một chỗ, một bản release làm gãy thứ đang chạy tốt, một quyết định bị đảo đi đảo lại vì không ai ghi nó xuống.
Cách chữa không phải là họp nhiều hơn. Cách chữa là dựng một vòng lặp có đầu vào, có quality gate, có số đo, rồi chạy vòng lặp đó đều đặn.
Vòng lặp
┌──────────────┐
│ MỤC TIÊU │ quý — vì sao ta làm, đo bằng gì
└──────┬───────┘
│ chia thành
┌──────▼───────┐
│ HẠNG MỤC │ tuần — việc cụ thể, có acceptance criteria
└──────┬───────┘
│ qua quality gate
┌──────▼───────┐
│ KIỂM SOÁT │ ngày — review, test, CI, Definition of Done
└──────┬───────┘
│ đủ điều kiện thì
┌──────▼───────┐
│ PHÁT HÀNH │ từng phần, có feature flag, rollback được
└──────┬───────┘
│ sinh ra
┌──────▼───────┐
│ SỐ LIỆU │ crash, hiệu năng, hành vi người dùng, phản hồi
└──────┬───────┘
│ đối chiếu lại
└──────────► MỤC TIÊU
Vòng lặp này không có chỗ để nhảy cóc. Một hạng mục không qua được cổng kiểm soát thì không ra release, dù ai giục. Một mục tiêu không có số liệu đối chiếu thì cuối quý không ai biết nó đạt hay không.
Bốn câu hỏi phải luôn trả lời được
| Câu hỏi | Trả lời ở đâu | Nhịp kiểm tra |
|---|---|---|
| Ta đang đi đâu và đo bằng gì? | Trang Mục tiêu | Đầu quý, soát lại hằng tuần |
| Việc đang nằm ở đâu, ai giữ? | Bảng công việc | Hằng ngày |
| Thứ sắp ra có an toàn không? | Quality gate tự động + Definition of Done | Mỗi pull request |
| Thứ đã ra có chạy tốt không? | Bảng giám sát + số liệu sản phẩm | Hằng ngày, tổng kết hằng tuần |
Nếu có câu nào không trả lời ngay được, đó chính là chỗ đang mất kiểm soát, và là việc cần sửa trước tiên.
Ba tầng kiểm soát
Kiểm soát không nằm ở chỗ quản lý hỏi han nhiều hơn. Nó nằm ở ba tầng, xếp theo thứ tự ưu tiên:
- Máy chặn. Định dạng code, lỗi tĩnh, test tự động, coverage, kích thước gói. Máy chặn thì không cãi nhau, không nể nang, không quên. Mọi thứ máy chặn được thì không được để người gác.
- Người rà. Review code, test thủ công luồng quan trọng, soát thiết kế. Dành cho thứ máy không thấy: ý định sai, thiết kế sai, trải nghiệm kỳ quặc.
- Nhịp soát. Họp đầu tuần, tổng kết cuối tuần, tổng kết quý. Dành cho thứ chỉ lộ ra khi nhìn nhiều việc cùng lúc: xu hướng xấu, nợ chồng chất, người sắp quá tải.
Tầng dưới không cứu được tầng trên. Nếu máy không chặn, người rà sẽ bỏ sót; nếu người không rà, cuộc họp cuối tuần chỉ còn là nơi thông báo thiệt hại.
Đọc sổ tay này theo thứ tự nào
- Người mới vào đội: đọc hết nhóm Nền tảng, rồi đọc kỹ nhóm Yêu cầu với lập trình viên. Hai nhóm đó là phần bắt buộc.
- Người đã quen việc: dùng như sổ tra cứu. Mỗi bài đứng độc lập được.
- Người quản lý: nhóm Tổ chức công việc, nhóm Kiểm soát chất lượng và nhóm Biểu mẫu là công cụ làm việc hằng tuần.
Khi sổ tay và thực tế lệch nhau
Sổ tay sai thì sửa sổ tay, đừng làm ngược quy định rồi im lặng. Quy trình viết ra là để phục vụ chất lượng, không phải để thờ. Cách sửa: nêu trong buổi retro, thống nhất, rồi cập nhật bài tương ứng trong kho mã. Mọi thay đổi đều có lịch sử, ai cũng truy được vì sao quy định đổi.

