Bạn mở hai agent cho nhanh: một đứa lo phần xử lý, một đứa lo phần hiển thị. Cả hai, để làm việc của mình, đều sửa cùng một file dùng chung. Đứa thứ nhất sửa xong. Đứa thứ hai mở đúng file đó ra — từ phiên bản trước khi đứa thứ nhất sửa — làm phần của nó, rồi ghi đè. Công của đứa thứ nhất bốc hơi, lặng lẽ, không ai báo lỗi.
Không đứa nào sai. Hai vai của chúng chồng lên nhau ở một điểm, và điểm đó đủ để phá.
01Chồng lấn là nơi tai nạn sống
Khi hai agent có hai cái bàn riêng và cùng được quyền đụng một thứ, bạn không có hai người cộng tác — bạn có hai người viết đè lên nhau mà không hay. Chúng không thấy bàn của nhau (lại đúng cái lý do cũ), nên không đứa nào biết đứa kia vừa chạm vào đâu.
Nên việc đầu tiên của chia vai không phải là "đứa này làm gì", mà là vẽ ranh giới để các vùng không cắt nhau:
✕ Vai chồng lấn
✓ Vai tách rời
Cái chốt nằm ở dòng cuối: thứ dùng chung phải có một chủ duy nhất. Một agent được quyền đổi nó; những đứa khác chỉ được đọc, muốn đổi thì đề nghị qua chủ. Một thứ mà ai cũng đổi được là một thứ sẽ bị đổi loạn.
02Vai gọn dễ kiểm, vai to dễ lạc
Có một lợi ích kép khi cắt vai cho gọn: không chỉ tránh va chạm, mà mỗi mảnh còn vừa với cái bàn của một agent. Nhớ chứ — một agent ôm việc quá lớn sẽ tràn bàn và đánh rơi. Một vai gọn thì nằm trọn trên bàn, nó làm sạch sẽ, và bạn review được mảnh đó trong một lần ngồi.
Phép thử một vai chia đúng: bạn mô tả được nó trong một câu ("đứa này chỉ lo X, chỉ đụng Y"), và bạn chỉ ra được chính xác nó không được đụng vào đâu. Nếu ranh giới của một vai mờ — "đại khái lo phần này" — thì đó đúng là chỗ nó sẽ tràn sang vùng đứa khác, và tai nạn bắt đầu.