YAGNI, hay “You Aren’t Gonna Need It”, là một nguyên tắc phổ biến giúp tránh việc phát triển quá nhiều tính năng không cần thiết. Điều này giúp tiết kiệm thời gian và ngăn ngừa sự lãng phí tài nguyên. Tuy nhiên, có một ngoại lệ mà tôi gọi là YAGRI, tức “You Are Gonna Read It”, khuyên bạn không nên chỉ lưu trữ dữ liệu tối thiểu mà còn cần lưu lại những thông tin có khả năng cao sẽ được sử dụng.
Mục lục
Tại Sao YAGRI Quan Trọng?
Vấn đề thường xảy ra khi thiết kế giao diện chỉ yêu cầu hiển thị một số thông tin cụ thể, khiến bạn chỉ lưu trữ những dữ liệu đó. Sau này, bạn có thể nhận ra mình thiếu các thông tin giá trị để debug, phân tích nội bộ hoặc tái tạo bối cảnh.
Ví dụ, khi triển khai tính năng xóa dữ liệu, cách đơn giản nhất là xóa hàng đó khỏi cơ sở dữ liệu. Tuy nhiên, dù yêu cầu hiện tại chỉ là xóa, bạn nên lưu trữ thêm các thông tin như:
- Ai đã thực hiện xóa?
- Họ xóa bằng quyền gì?
- Thời điểm xóa?
- Lý do xóa (nếu có)?
Các Trường Dữ Liệu Quan Trọng Cần Lưu Trữ
Dưới đây là một số trường dữ liệu hữu ích mà bạn nên cân nhắc thêm vào hầu hết các bảng:
- created_at: Thời gian tạo
- updated_at: Thời gian cập nhật
- deleted_at: Thời gian xóa (nếu sử dụng soft delete)
- created_by: Người tạo
- Quyền sử dụng trong thao tác CRUD
Lợi Ích Của YAGRI
Việc này sẽ giúp bạn tiết kiệm thời gian và tránh rắc rối khi cần kiểm tra dữ liệu. Ví dụ, khi sếp đột nhiên hỏi: “Chúng ta có biết tại sao dữ liệu đó bị xóa không? Khách hàng đang lo lắng…”. Chỉ một trường dữ liệu nhỏ cũng có thể giúp bạn trả lời câu hỏi đó.
Dù không phải mọi trường dữ liệu đều được sử dụng, nhưng chỉ cần một trường có thể cứu bạn trong tình huống quan trọng. Điều này biện minh cho việc lưu trữ thêm dữ liệu. Cuối cùng, nhiệm vụ chính của kỹ sư là quản lý và duy trì dữ liệu một cách hiệu quả.
Tất nhiên, bạn cũng không nên lưu trữ quá nhiều dữ liệu không cần thiết. Nhưng tôi chưa từng nghe ai phàn nàn về việc một bảng có quá nhiều trường thời gian.