Tôi đã dành hàng tháng trời xây dựng các bảng so sánh trước khi hiểu ra rằng cơ sở dữ liệu của mình đang lừa dối tôi.

Giao diện trông có vẻ ổn. Các hàng ngay ngắn, các dấu tích gọn gàng, các dấu X đỏ ở những nơi công cụ còn thiếu sót. Khách truy cập cuộn qua chúng và thỉnh thoảng nhấp vào. Nhưng ẩn dưới bề mặt, schema đang âm thầm làm sai lệch mọi kết luận. Tôi đã xây dựng một UI đẹp đẽ trên nền tảng dữ liệu tồi.

Cái bẫy Boolean

Các trang so sánh thường bắt đầu với một mô hình hiển nhiên. Bạn tạo ra một lưới với các hàng là tính năng, các cột là sản phẩm, và mỗi ô chứa một giá trị boolean. True nghĩa là công cụ có tính năng đó. False nghĩa là không. Trong một thời gian, điều này mang lại cảm giác ngăn nắp. Nhưng rồi khi bạn cố gắng so sánh hai công cụ quản lý dự án, hoặc ba cơ sở dữ liệu đám mây, hoặc bốn API gateway, cái lưới đó bắt đầu "nổi loạn".

Các ô boolean không thể truyền tải được sắc thái. Khi một ô hiển thị false, nó có thể mang năm ý nghĩa hoàn toàn khác nhau. Có thể công cụ đó thực sự thiếu khả năng đó. Có thể nó giải quyết cùng một vấn đề thông qua một cơ chế khác. Có thể tính năng đó có tồn tại nhưng nằm sau một bức tường phí (paywall) dành cho doanh nghiệp. Có thể nó yêu cầu một plugin mà bạn không để ý. Hoặc có thể bạn chỉ đơn giản là quên xác minh, và dấu X đỏ chỉ là một chỗ trống cho sự không chắc chắn của chính bạn.

Điều này quan trọng vì người dùng tin tưởng vào các lưới so sánh để đưa ra những quyết định tốn kém. Khi bạn đánh dấu một công cụ dựa trên CLI là thiếu khả năng cộng tác thời gian thực, có thể ý bạn là nó không có tính năng chia sẻ con trỏ trực tiếp. Nhưng chính công cụ đó có thể sử dụng quy trình làm việc dựa trên nhánh (branch-based workflows) và hàng đợi đánh giá (review queues) để đạt được kết quả tương tự. Việc đánh dấu là false đã biến một lựa chọn thiết kế thành một lỗi. Làm điều đó trên hai mươi tính năng và bạn không còn là đang so sánh hai công cụ nữa. Bạn đang tuyên bố một trong hai cái là bị lỗi.

Một schema boolean cũng rèn luyện bạn cách suy nghĩ theo thuật ngữ của nhà cung cấp thay vì nhu cầu của người dùng. Nếu các hàng của bạn mượn tên từ người dẫn đầu danh mục, bạn sẽ kết thúc bằng việc hỏi liệu mọi đối thủ cạnh tranh có Workspaces hay không vì Notion gọi chúng là Workspaces. Một công cụ khác gọi chúng là Projects. Một công cụ thứ ba thậm chí không có một vùng chứa (container) chuyên dụng, nhưng cho phép bạn phân quyền cho từng tệp riêng lẻ cho đến khi đạt được sự cô lập tương tự. Tên các hàng của bạn buộc mọi sản phẩm phải tuân theo mô hình tư duy của kẻ dẫn đầu, điều này thuận tiện cho gã khổng lồ thị trường nhưng lại không công bằng với tất cả những người khác.

Một bộ từ vựng tốt hơn cho Trạng thái

Cách khắc phục bắt đầu từ chính kiểu dữ liệu. Hãy ngừng lưu trữ các giá trị boolean. Hãy lưu trữ một trường trạng thái (status field) với bộ từ vựng rõ ràng.

Hãy xem xét sáu trạng thái sau.

Full nghĩa là công cụ xử lý được công việc mà không cần các biện pháp thay thế (workarounds) hoặc mua thêm phụ kiện.

Partial nghĩa là nó xử lý được một phần, hoặc chỉ xử lý được sau khi bạn cấu hình một thứ gì đó phức tạp. Đây là nơi hầu hết các bảng so sánh che giấu sự thiếu chính xác. Một công cụ cung cấp tính năng mã hóa nhưng chỉ khi dữ liệu ở trạng thái nghỉ (at rest) thì xứng đáng được đánh dấu là Partial, chứ không phải Full.

Different Model nghĩa là vấn đề được giải quyết, chỉ là không theo cách mà kẻ dẫn đầu danh mục thực hiện. Công cụ CLI với các nhánh và đánh giá thuộc về nhóm này. Tương tự là cơ sở dữ liệu sử dụng bản sao đọc (read replicas) thay vì một kết nối gom nhóm duy nhất (single pooled connection). Trạng thái này bảo tồn được sự thông minh trong thiết kế của sản phẩm thay vì trừng phạt nó vì không sao chép đối thủ cạnh tranh.

Not Applicable nghĩa là bản thân khái niệm đó không tương thích với loại công cụ này. Một nền tảng serverless function không cần lưu trữ cục bộ lâu dài theo cách mà một máy ảo (virtual machine) cần. Việc ép buộc một giá trị false ở đây là sự nhầm lẫn về danh mục.

Absent nghĩa là bạn đã tìm kiếm, và khả năng đó thực sự thiếu sót. Không có biện pháp thay thế, không có plugin, không có quy trình làm việc thay thế nào cả. Khoảng cách đó là có thật.

Unknown nghĩa là bạn chưa xác minh được nó