Về bản web

caltalys.dev

Bản mơ hồ duyệt trong mười lăm phút. Bản rõ ràng mất ba buổi và vẫn chưa xong.

Mơ hồ không phải một câu chưa viết xong. Nó là chỗ chứa một cuộc đàm phán chưa diễn ra, và làm rõ là gọi cuộc đàm phán ấy về hiện tại.

Caltalys · 10/10/2026 · 13 phút đọc

Cùng một tài liệu, hai phiên bản, cách nhau bốn tháng.

Bản tháng Ba có câu này: “Hệ thống hỗ trợ liên thông dữ liệu với các đơn vị liên quan để phục vụ công tác quản lý.” Cuộc họp duyệt hôm ấy mười lăm phút. Không ai có ý kiến. Ký.

Bản tháng Bảy do Thảo viết lại, sau khi nó đã học được kha khá thứ. Câu ấy thành ba câu: “Hệ thống đẩy dữ liệu hồ sơ sang đơn vị A theo tần suất mỗi ngày một lần, gồm mười hai trường tại Phụ lục 3. Đơn vị A được đọc, không được sửa. Trường hợp dữ liệu lệch giữa hai bên, số liệu của hệ thống một cửa là số liệu gốc.”

Cuộc họp duyệt bản này kéo dài ba buổi và kết thúc mà chưa chốt được.

Buổi một, đơn vị A hỏi vì sao chỉ được đọc - họ vẫn phải cập nhật kết quả xử lý chứ. Buổi hai, phòng nghiệp vụ nói mười hai trường là thiếu, phải có thêm thông tin người nộp. Bộ phận công nghệ nói thêm trường thì đụng dữ liệu cá nhân, phải xin ý kiến. Buổi ba, quay lại câu “số liệu gốc” - nếu số liệu bên mình là gốc thì khi kiểm tra, bên A báo cáo theo số của ai.

Thảo ngồi giữa ba buổi ấy với một cảm giác rất cụ thể: nó vừa làm hỏng một việc mà bốn tháng trước đã xong trong mười lăm phút.

Nó không làm hỏng gì cả. Nhưng để nói được vì sao thì phải nói một chuyện khó chịu hơn.

Bốn bài vừa rồi đều đi theo một hướng: tìm chỗ mọi người tưởng là đã thống nhất mà thật ra chưa. Đọc liền bốn bài như vậy thì rất dễ rút ra một kết luận, và kết luận ấy sai: cứ làm rõ mọi thứ ra là xong.

Ba buổi họp kia là cái giá của việc làm rõ. Và cái giá ấy không phải lúc nào cũng đáng trả.

Hãy nhìn kỹ chuyện đã xảy ra. Bốn cuộc tranh luận kia không phải do bản tháng Bảy sinh ra - cái chắc chắn là nó làm những chỗ phải chọn hiện ra. Có thể một vài quan điểm chỉ hình thành khi người ta nhìn thấy một phương án cụ thể; mình không có cách nào biết tháng Ba trong đầu mỗi người đã có sẵn những gì.

Cái kiểm được nằm ở câu chữ. “Liên thông dữ liệu với các đơn vị liên quan” tương thích với cả bốn cách hiểu ở trên - đọc thành hai chiều cũng được, đọc thành một chiều cũng được, đọc thành đủ trường hay ít trường đều không sai câu nào. Không cách hiểu nào bị câu chữ ấy loại ra.

Bốn cách hiểu ấy không va vào nhau, vì câu ấy không buộc ai phải chọn.

Đây là chỗ cần đóng đinh, và nó ngược với cảm giác thông thường. Một câu mơ hồ không phải là một câu chưa được viết xong. Nó là một câu cho phép nhiều người cùng đồng ý mà không ai phải bỏ đi cách hiểu của mình. Cái làm cuộc họp tháng Ba trôi trong mười lăm phút chính là chỗ nó không rõ.

Và bản tháng Bảy không tạo ra bất đồng nào cả. Nó chỉ làm bất đồng hiện ra - kéo bốn thứ đang nằm im trong bốn cái đầu ra giữa bàn, nơi chúng buộc phải va vào nhau.

Chuyện này có người mô tả kỹ hơn mình nhiều, ở một chỗ nghe chẳng liên quan gì tới dự án phần mềm. Năm 1995, trên tạp chí luật của Harvard, Cass Sunstein đặt tên cho một hiện tượng ông thấy ở các hệ thống pháp lý: thoả thuận chưa được lý thuyết hoá đầy đủ. Ý ông là các bên thường đồng ý được về một kết quả cụ thể mà không cần đồng ý về nguyên tắc nền tảng đứng sau nó, và khi bất đồng ở tầng trừu tượng thì họ đi xuống tầng cụ thể hơn. Với ông đó không phải một khiếm khuyết cần sửa, mà là một cách để những người rất khác nhau cùng sống và cùng làm việc được. Nhưng ông cũng nói rõ ở chỗ khác rằng những ưu điểm ấy chỉ là ưu điểm một phần.

Sunstein viết về toà án và hiến pháp, không viết về đặc tả phần mềm, và mình không định bảo câu tháng Ba là đúng cái ông mô tả. Nhưng hình dạng thì gần: mấy người đồng ý về một dòng chữ, chưa ai đồng ý về cái nằm dưới nó, và cả mấy người đều đi ra khỏi phòng làm việc tiếp được.

Ở bài đầu tiên của loạt này, mình có nói tới bốn dòng gõ lên đầu file, và ô cuối cùng là ô khó nhất: biết gì thì dám chốt. Lúc ấy mình bảo đó là ô mà bạn không tự trả lời hộ được, vì nó nằm trong đầu người sẽ chịu hậu quả.

Bây giờ thì phải bổ sung một chuyện mà hồi đó mình chưa nói. Cái ô ấy giả định một điều: rằng chỗ chặn là thiếu thông tin. Biết thêm cái gì đó thì sẽ dám chốt.

Có một loại chặn khác, và cái ô ấy không chạm tới. Ngay cả khi thông tin đã đủ để nhìn rõ các lựa chọn, vẫn còn một loại chặn mà thêm thông tin không làm biến mất: hai bên muốn hai thứ không cùng tồn tại được. Đơn vị A cần ghi được. Phòng nghiệp vụ cần thêm trường mà thêm trường thì đụng dữ liệu cá nhân. Ở ca này chắc chắn vẫn còn những chỗ thiếu thông tin thật - chưa ai tra xem quy định về dữ liệu cá nhân nói gì. Nhưng đi tra xong thì cái xung đột kia vẫn nguyên. Cái còn thiếu không phải một con số. Là một quyết định phân xử, và quyết định ấy phải nằm ở chỗ có thẩm quyền chốt.

Với loại chặn thứ nhất, làm rõ là cách gỡ. Với loại thứ hai, làm rõ không gỡ được gì - nó chỉ chuyển cuộc đàm phán từ tương lai về hiện tại.

Mà chuyển như vậy thì đôi khi đúng, đôi khi không.

Chuyển về hiện tại thì bạn trả giá bằng ba buổi họp, và trả ngay. Để lại tương lai thì bạn trả bằng một lần vỡ ở giữa dự án, cộng với việc lúc ấy cả hai bên đều đã lỡ xây theo cách hiểu của mình. Đắt hơn nhiều - nhưng không chắc chắn, vì có những câu mơ hồ chẳng bao giờ bị mang ra cãi.

Và có một thứ nữa mà bên trả giá ngay thường không được ghi công: ba buổi họp ấy trông giống hệt một sự chậm trễ. Trong báo cáo tuần, nó là một dòng “chưa duyệt được đặc tả”. Không có dòng nào ghi rằng bốn bất đồng vừa được lôi ra khỏi chỗ ẩn của chúng.

Giờ mình kể một ca ngược lại, nơi chuyện để mơ hồ là quyết định đúng và cả hai bên đều nói ra rằng mình đang làm vậy.

Một hợp đồng khác. Đến điều khoản về phạm vi tích hợp với hệ thống của bộ chủ quản, hai bên tắc: bên mình cần biết giao diện kết nối thế nào để ước lượng công, bên kia chưa thể trả lời vì phía bộ còn chưa ban hành chuẩn kết nối.

Ép chốt bây giờ thì chỉ có hai đường: bên mình đoán cao rồi báo giá cao, hoặc đoán thấp rồi chịu lỗ. Mà không chốt thì không ký được hợp đồng, không ký thì cả dự án đứng.

Hai bên chọn để nguyên chỗ mơ hồ, và ghi thẳng ra là mình đang để nó mơ hồ: phạm vi tích hợp sẽ được xác định trong giai đoạn thiết kế chi tiết, căn cứ chuẩn kết nối do bộ ban hành; nếu khối lượng vượt quá X thì hai bên thương thảo phụ lục.

Chín tháng sau, chuẩn kết nối có, hai bên chốt trong hai buổi.

Đọc lên thì câu ấy cũng chưa chốt gì, y như câu tháng Ba. Nhưng về bản chất nó là một thứ khác hẳn, và khác ở ba chỗ: cả hai bên đều biết chỗ đó còn để mở; có một mốc để quay lại chốt; và có một cái van cho trường hợp xấu.

Cái ở hợp đồng là một chỗ để mở có ghi nhãn. Cái ở tháng Ba là một chỗ để mở mà không ai biết là nó đang mở.

Và đây mới là chỗ đáng nhớ, chứ không phải chuyện rõ hay không rõ: không phải mọi câu chưa chốt đều cần được chốt ngay. Vấn đề là tổ chức có biết mình đang để lại một quyết định chưa chốt hay không.

Hai ca. Một cái là làm rõ và phải trả giá ngay, một cái là để mờ có chủ đích và không phải trả gì. Chúng không mâu thuẫn với nhau. Cả hai cùng nói một chuyện: sự mơ hồ trong một câu là chỗ chứa một cuộc đàm phán chưa diễn ra - và việc bạn phải quyết không phải là “có nên mơ hồ hay không”, mà là cuộc đàm phán ấy nên diễn ra lúc nào, và ai sẽ ngồi trong đó.

Nên câu mình tự hỏi bây giờ không phải “câu này đã rõ chưa”. Là: “Nếu viết câu này cho thật rõ, mình sẽ phải tự chọn giúp ai một cái gì?”

Nếu viết rõ ra mà không làm phát sinh quyết định mới nào - chỉ là một chi tiết vốn nên được ghi rõ ở tầng này - thì cứ viết, mất mười phút.

Còn nếu viết rõ ra nghĩa là phải chọn giữa cái đơn vị A muốn và cái phòng nghiệp vụ muốn, thì bạn vừa phát hiện một chuyện quan trọng hơn nhiều: cái đó không phải việc của bạn. Bạn không có thẩm quyền chọn hộ hai bên. Việc của bạn là làm cho hai bên biết rằng có một chỗ phải chọn, rồi đưa nó lên chỗ có người chọn được.

Đó cũng là điều Thảo đã làm mà không nhận ra. Ba buổi họp ấy không phải ba buổi thất bại. Nó là ba buổi mà một cuộc đàm phán bị hoãn từ tháng Ba cuối cùng cũng bắt đầu.

Nhưng đừng làm chuyện này với mọi câu. Một đặc tả có hàng trăm câu, và nếu bạn moi ra hết mọi chỗ có thể phải đàm phán thì dự án rất dễ mắc kẹt lại ở giai đoạn tài liệu - mà đó lại đúng là kiểu thất bại mà không ai gọi tên được, vì nhìn từ ngoài nó chỉ trông như đang làm cẩn thận.

Thang đo mình dùng vẫn là thang cũ, hỏi ngược từ hậu quả: nếu chỗ mơ hồ này bị hai bên hiểu khác nhau, tới lúc phát hiện thì gỡ có dễ không. Một câu mơ hồ về màu sắc màn hình thì sửa trong buổi chiều. Một câu mơ hồ về việc bên nào giữ số liệu gốc thì tới lúc phát hiện, hai bên đã có hai kho dữ liệu chạy song song sáu tháng.

Và cái nguyên lý đằng sau chẳng dính gì tới đặc tả. Khi nhiều người phải cùng đồng ý về một việc, ngôn ngữ mơ hồ làm cho việc đồng ý dễ xảy ra hơn, bởi vì nó không buộc ai phải bỏ đi cách hiểu của mình. Cái sự dễ ấy có thật và đôi khi là thứ duy nhất giúp mọi chuyện đi tiếp được. Nhưng nó không xoá đi cái bất đồng - nó dời cái bất đồng sang một thời điểm khác, và ở thời điểm ấy thì mỗi bên thường đã đi thêm một quãng theo hướng của riêng mình.

Một việc bạn thử được trong hai mươi phút, và nhớ là đừng gửi cho ai cả. Lấy một câu vừa được duyệt nhanh trong tài liệu gần nhất. Ngồi viết lại nó cho thật rõ: ai làm gì, bao nhiêu, ai chịu, khi nào. Rồi đếm xem có bao nhiêu chỗ mà để viết được, bạn đã phải tự điền vào một quyết định chưa ai chốt.

Số chỗ ấy không phải là số lỗi trong tài liệu, và nó cũng chưa chứng minh bạn đang chọn hộ ai. Có chỗ vốn thuộc quyền thiết kế của đội bạn, điền là đúng việc. Có chỗ chưa ai chốt được vì thông tin chưa tồn tại. Có chỗ cố ý để mở ở tầng này vì nó thuộc về tầng dưới. Cái duy nhất con số ấy cho biết là: có ngần ấy chỗ mà câu hiện tại không tự quyết được cách viết cụ thể của nó - chỗ nào đáng mang ra bàn, chỗ nào là việc của đội, chỗ nào nên để mở thì phải xét tiếp từng cái một.

Thảo, sau buổi thứ ba, nhắn cho mình:

Thảo Em cứ tưởng viết rõ là làm cho tài liệu tốt hơn. Hoá ra viết rõ là ép mọi người phải quyết. Mà có phải lúc nào cũng tới lúc quyết đâu anh.

https://caltalys.dev/ban-mo-ho-duyet-muoi-lam-phut

Caltalys · 10/10/2026 · Phân tích nghiệp vụ · Đặc tả · Đàm phán