Пытаться написать хорошо и пытаться предугадать будущее - совершенно разные вещи, я под "хорошо" подразумеваю не соответствие сегодняшнего кода будущим требованиям, которые действительно не угадаешь, а возможность быстро поменять код под эти новые требования, когда они появятся.
Увы, если ты не предугадываешь новые требования, то и понять как писать под них - не понятно.