Saya sangat percaya merancang untuk masalah yang dihadapi dan tidak meniup desain Anda dengan mencoba menebak semua kasus yang harus Anda penuhi karena "suatu hari nanti kita mungkin membutuhkannya".
Pada dasarnya, diberikan daftar persyaratan khusus, desain yang bertentangan, namun, ini tidak berarti bahwa Anda tidak boleh:
- jadikan aspek-aspek desain Anda lebih mudah dikonfigurasi daripada pengkodean keras aspek-aspek itu dalam solusi Anda. Baik melalui parameter yang diteruskan saat runtime atau melalui konfigurasi eksternal yang dibaca saat startup (atau setelah HUP'ing).
- renda kode Anda dengan angka ajaib,
- hindari melihat-lihat apakah ada sesuatu yang sudah ditulis yang dapat Anda gunakan kembali, mungkin setelah mengadaptasi solusi yang ada untuk memberikan pendekatan yang cocok untuk situasi yang ada serta untuk persyaratan baru.
Masalah utama dengan merancang untuk "kemungkinan masa depan" adalah bahwa Anda selalu hanya menebak. Mungkin membuat tebakan yang terpelajar, tetapi "ketika dorongan datang untuk mendorong" itu masih hanya serangkaian tebakan.
Dengan melakukan ini, Anda juga memiliki kemungkinan yang sangat nyata untuk memeras solusi Anda agar sesuai dengan kasus umum (s) daripada menyelesaikan masalah spesifik yang dihadapi sebagaimana ditentukan oleh persyaratan yang diketahui Anda.
Apa yang dikatakannya? "Ketika semua yang kamu miliki adalah palu, semuanya mulai terlihat seperti paku."
Saya berharap memiliki satu pound untuk setiap kali saya mendengar seseorang berkata, "Tapi itu solusi yang lebih mudah beradaptasi untuk kasus-kasus umum yang mungkin kita lihat di masa depan."