Giả sử cuối tuần này bạn với tôi ngồi chung bàn ở một đám cưới. Tiệc nhỏ thôi, bảy bàn, mỗi bàn mười người. Trong lúc chờ món khai vị và nghe MC giới thiệu hai họ, tôi quay sang ra giá: trong bảy mươi khách ở đây có ít nhất hai người trùng sinh nhật. Trùng ngày và tháng là tính, không cần cùng năm. Ai thua trả một chầu bia.
Bạn nhìn quanh. Lịch có 366 ô nếu tính cả ngày 29 tháng 2, bảy mươi khách có ngồi mỗi người một ô cũng chưa lấp nổi một phần năm. Chỗ trống mênh mông thế kia thì hai người phải vô duyên lắm mới giẫm lên chân nhau. Bạn bắt tay tôi, trong bụng đã chọn sẵn quán. Tôi khuyên bạn chọn quán bình dân.
Vì sao tôi dám cược
Đây là bài toán ngày sinh, một bài quen thuộc của môn xác suất. Giả sử ngày sinh của mỗi khách rơi ngẫu nhiên vào một trong 366 ngày, ngày nào cũng có khả năng như nhau và không ai phụ thuộc vào ai. Khi đó, với bảy mươi khách, khả năng có ít nhất hai người trùng sinh nhật là khoảng 99,9%. Trang Math Fun Facts của Harvey Mudd College trình bày cách tính với lịch 365 ngày, kết quả gần như không đổi.
Trực giác của bạn thua vì nó đếm nhầm. Bạn đem bảy mươi người so với 366 ngày và thấy còn rộng chỗ. Nhưng vụ cược không hỏi có ai trùng sinh nhật với bạn. Nó hỏi có cặp nào trùng nhau hay không, mà bảy mươi người thì ghép được 2.415 cặp. Chỉ cần một cặp trong số đó là tôi thắng.
Con số chỉ trả lời một nửa
Bài toán xong ở đây. Tôi nhận kèo này không cần đắn đo, nhưng lý do không nằm trong phép tính. Nó nằm ở chầu bia. Nếu rơi vào phần xui còn lại, tôi mất một khoản nhỏ, và người mất là chính tôi. Chừng đó là đủ để một xác suất cao trở thành một quyết định dễ. Thay một trong hai điều kiện ấy thì con số vẫn y nguyên, còn quyết định thì khác hẳn.
Thử hai trường hợp tưởng tượng. Một trang blog hiển thị lỗi phông chữ ở một trong một nghìn lượt xem: người đọc tải lại trang, hết chuyện. Một phần mềm tính lương trả sai cho một trong một nghìn nhân viên: ở một công ty năm nghìn người, trung bình mỗi kỳ lương có năm người nhận sai tiền, và họ không tải lại trang được. Tỷ lệ giống nhau, nhưng không ai đặt hai sản phẩm này chung một tiêu chuẩn.
Ai trả giá cũng quan trọng không kém mức giá. Trong vụ cược, tôi quyết định và tôi trả. Trong phần mềm, người nói "thế là đủ" thường là người làm ra nó, còn người gặp lỗi là khách hàng, đúng lúc họ đang cần việc được xong. Khi người quyết định không phải người chịu hậu quả, "đủ tốt" là câu rất dễ nói.
Còn một câu phải hỏi trước cả hai câu trên: 99,9% của cái gì. Con số trong vụ cược có nghĩa vì tôi nói rõ mình giả định những gì. "Phần mềm xong 99,9%" thì không có nghĩa như thế, vì chưa ai đếm được hết những việc một phần mềm phải làm đúng. Ngay cả "99,9% bài test đã qua" cũng chỉ cho biết ta trả lời được gần hết những câu ta nghĩ ra để hỏi.
Hoàn hảo vẫn đắt
Năm 2017 tôi viết một bài tên là Hoàn thành thì tốt hơn là hoàn hảo . Chín năm sau tôi vẫn đứng về phía cái tựa ấy. Càng gần mức tuyệt đối, mỗi bước cải thiện thường càng tốn công và càng ít người nhận ra. Một sản phẩm nằm chờ đến ngày không còn gì để chê thì chưa giúp được ai, và cũng chưa dạy cho người làm ra nó điều gì.
Có những điều chỉ người dùng thật mới chỉ ra được: họ cần gì, họ hiểu sai chỗ nào, họ bỏ cuộc ở bước nào. Không buổi kiểm thử nội bộ nào thay được việc đó. Với loại hiểu biết này, "cứ ra mắt rồi sửa dần" là cách làm đúng.
Nhưng câu ấy chỉ đúng với những gì mình chưa thể biết. Nó thành cái cớ khi được dùng cho những gì mình biết rõ mà ngại làm: trường hợp lắt léo chưa thử, luồng thanh toán chưa ai đi hết từ đầu đến cuối, hai tính năng chưa từng chạy cùng nhau. Để khách hàng phát hiện hộ những lỗi ấy thì không còn là học từ thực tế. Đó là đẩy chi phí kiểm tra sang cho họ.
Kiểm tra đã rẻ hơn trước
Trong nhiều năm, loại việc thứ hai được hoãn vì một lý do chính đáng: nó đắt. Viết thêm test, chạy thử lại toàn bộ, rà từng cặp tính năng đều tốn giờ của những người đang có việc gấp hơn. Bỏ qua chúng là một phép tính hợp lý chứ chưa hẳn là cẩu thả.
Giờ đây AI làm cho phép tính đó thay đổi. Đây là nhận định cá nhân, tôi không có số đo nào để đưa ra: nhiều việc từng nằm mãi trong mục "làm sau" giờ rẻ đến mức lý do hoãn chúng không còn vững. Rẻ hơn, chứ không miễn phí. Một agent viết test cũng chỉ hỏi được những câu nó nghĩ ra, và kết quả của nó vẫn cần một người đọc lại và chịu trách nhiệm.
Điều này dịch chuyển ranh giới của hai chữ "đủ tốt". Khi kiểm tra còn đắt, bỏ qua một lượt chạy thử là biết cân nhắc. Khi nó rẻ đi, vẫn bỏ qua lượt chạy thử ấy thì khó gọi là cân nhắc nữa. Quan điểm năm 2017 không sai đi. Chỉ là phần được phép để lại cho "sửa dần" đã hẹp hơn trước.
Vậy khi nào là đủ
Tôi không có ngưỡng phần trăm nào để đưa ra. Thứ tôi có là ba điều kiện cho phần còn lại.
Một là biết nó gồm những gì. "Còn vài lỗi vặt" và "chưa thử thanh toán bằng thẻ quốc tế" là hai mức hiểu biết rất khác nhau. Chỉ mức thứ hai mới đủ để ra quyết định.
Hai là nếu nó xảy ra, người chịu phải chịu nổi, và mình phải có mặt để sửa. Lỗi phông chữ thì được. Sai lương thì không.
Ba là những gì kiểm được với giá phải chăng thì đã kiểm. Thứ để lại cho ngày ra mắt nên là thứ chỉ ngày ra mắt mới trả lời được.
Đủ cả ba thì 99,9% là đủ tốt, và thấp hơn thế nhiều khi cũng đủ. Thiếu một trong ba thì thêm bao nhiêu số chín cũng chưa đủ. Con số cho biết mình đang đứng ở đâu. Còn dừng ở đó hay đi tiếp là một quyết định, và quyết định thì phải có người đứng tên.
No comments yet