Nền tảng
Vai trò và trách nhiệm
Mỗi thứ trong dự án có đúng một người chịu trách nhiệm. Bài này nói rõ ai quyết gì, ai làm gì, và khi nào phải hỏi ai.
Nội dung bài
Nguyên tắc gốc
Một thứ, một người chịu trách nhiệm. Không có việc nào thuộc về "cả đội". Thuộc về cả đội nghĩa là không thuộc về ai, và sẽ không ai làm cho tới lúc nó thành sự cố.
Chịu trách nhiệm không có nghĩa là tự tay làm hết. Nó có nghĩa là: nếu thứ đó hỏng, người này là người phải trả lời câu hỏi "vì sao hỏng và bao giờ xong".
Các vai trò
| Vai trò | Quyết định cuối cùng về | Không được quyết |
|---|---|---|
| Chủ sản phẩm | Làm gì, thứ tự ưu tiên, acceptance criteria, phạm vi cắt bớt | Cách làm, ước lượng, chuẩn kỹ thuật |
| Chủ kỹ thuật | Kiến trúc, chuẩn code, công nghệ, cách chia việc kỹ thuật | Độ ưu tiên nghiệp vụ, hạn giao |
| Chủ module | Chất lượng và tiến độ trong phạm vi module của mình | Thứ vượt ra ngoài ranh giới module |
| Lập trình viên | Cách hiện thực một hạng mục cụ thể | Bỏ qua quality gate, đổi phạm vi |
| Người test | Bản này đủ chuẩn để release hay chưa | Ép thêm phạm vi vào bản release |
| Người trực vận hành | Xử lý sự cố đang diễn ra, quyền rollback ngay lập tức | Thay đổi tính năng khi đang trực |
Một người có thể giữ nhiều vai trong đội nhỏ. Nhưng vai trò vẫn phải tách bạch: lúc đang đội mũ test thì đánh giá theo tiêu chí test, không nể bản thân lúc viết code.
Ai quyết cái gì — bảng tra nhanh
| Tình huống | Người quyết | Người phải được hỏi ý kiến |
|---|---|---|
| Thêm một tính năng vào quý này | Chủ sản phẩm | Chủ kỹ thuật (về sức chứa) |
| Hoãn một tính năng để sửa nợ kỹ thuật | Chủ sản phẩm | Chủ kỹ thuật đề xuất và giải thích |
| Đổi thư viện hoặc kiến trúc lõi | Chủ kỹ thuật | Các chủ module bị ảnh hưởng |
| Đổi giao diện công khai giữa hai module | Chủ kỹ thuật | Cả hai chủ module |
| Chặn một bản release | Người test hoặc chủ kỹ thuật | Chủ sản phẩm được báo ngay |
| Rollback bản đang chạy khi có sự cố | Người trực | Báo sau, không cần xin phép trước |
| Nhận thêm việc gấp giữa tuần | Chủ sản phẩm | Người đang bị đổi việc |
Điều quan trọng nhất trong bảng này: quyền chặn release và quyền rollback không cần xin phép. Người giữ chất lượng phải dùng được quyền đó ngay, nếu không thì chất lượng chỉ là khẩu hiệu.
Chủ module là gì
Mỗi module có đúng một chủ. Người đó:
- Biết rõ nhất phần đó đang có nợ gì, chỗ nào mong manh.
- Là người review bắt buộc cho mọi thay đổi chạm vào ranh giới module.
- Trả lời khi số liệu chất lượng của module xấu đi.
- Viết và giữ cho tài liệu module của mình đúng thực tế.
Chủ module không phải người duy nhất được sửa module đó. Ai cũng sửa được, nhưng chủ module phải biết và phải duyệt.
Khi không rõ ai chịu trách nhiệm
Đây là tình huống nguy hiểm nhất, và nó xảy ra thường xuyên — nhất là ở các điểm ba module chạm nhau. Cách xử lý:
- Không tranh luận quá 10 phút. Đưa lên chủ kỹ thuật.
- Chủ kỹ thuật chỉ định một người trong vòng một ngày làm việc.
- Ghi kết quả vào tài liệu, để lần sau không hỏi lại.
Thời gian mất vì không rõ chủ luôn đắt hơn thời gian mất vì chỉ định nhầm người.
Điều không ai được làm
Bất kể vai trò gì, những việc sau là vượt quyền:
- Merge code vào branch main khi quality gate tự động đang đỏ.
- Tắt một bài test đang thất bại thay vì sửa nguyên nhân.
- Đưa thay đổi lên bản release mà không qua review.
- Sửa dữ liệu thật trên môi trường chạy thật bằng tay, không có người thứ hai chứng kiến.
- Đổi acceptance criteria sau khi việc đã làm xong, để việc đó được tính là đạt.
Năm điều trên không có ngoại lệ vì gấp. Gấp là lý do để cắt phạm vi, không phải lý do để bỏ quality gate.

