Sebuah tombol bisa dipindah dalam satu sore. Sebuah halaman bisa dibangun ulang dalam seminggu. Sebuah kolom yang ternyata berarti dua hal berbeda butuh migrasi, pengisian ulang, audit atas semua yang membacanya, dan percakapan dengan siapa pun yang selama ini mengandalkan arti lamanya.
Ketimpangan itu adalah hal paling berguna untuk diingat ketika sebuah sistem sedang dirancang.
Jalan pintas yang paling mahal
Kolom status yang sekaligus menyiratkan tanggal. Dikirim berarti dikirim, tapi kapan? Kalau jawabannya “lihat updated_at”, Anda menyimpan satu fakta di kolom yang berubah karena alasan yang tidak berhubungan, dan begitu seseorang menyunting catatan pesanan itu, tanggal pengirimannya ikut bergeser.
Total yang disimpan sebagai perhitungan harga saat ini. Ubah harga katalog dan setiap pesanan lama berubah diam-diam. Dokumen yang sudah keluar — faktur, kesepakatan, kuitansi — angkanya harus dibekukan sebagai kolom, karena ia catatan tentang apa yang disepakati, bukan tampilan harga hari ini.
Boolean yang jelas-jelas akan menjadi tiga keadaan. is_approved berubah menjadi disetujui, ditolak, menunggu klien kira-kira sebulan setelah rilis, dan saat itu ia sudah ada di enam kueri dan dua laporan.
Dan yang klasik: satu kolom menyimpan nilai yang artinya bergantung pada kolom lain. Selalu dimulai sebagai kemudahan kecil dan selalu berakhir sebagai aturan yang hanya hidup di kepala seseorang.
Beri nama menurut bisnisnya, bukan menurut layarnya
Tabel bernama submissions karena fitur pertamanya sebuah formulir akan
membingungkan selamanya. Tabel bernama quote_requests tetap masuk akal ketika
formulirnya didesain ulang, ketika permintaan mulai datang lewat email, dan ketika
seseorang membuatnya manual sambil menelepon.
Layar adalah cara data ditangkap saat ini. Ia bukan data itu sendiri.
Kapan jalan pintas boleh
Ada versi sah dari semua ini: kalau Anda memang belum tahu bentuknya, simpan yang mentah dan turunkan sisanya. Itu sebuah keputusan, dan sebaiknya ditulis di tempat yang akan ditemukan orang berikutnya.
Yang bukan keputusan adalah menemukan di tahun kedua bahwa sebuah kolom punya tiga arti berbeda tergantung kapan barisnya ditulis. Tidak ada yang memilih itu. Ia menumpuk begitu saja, satu sore demi satu sore.