Another week, another installment of the Martin Fowler interview at Artima. Here’s a choice quote:
The cost of flexibility is complexity. Every time you put extra stuff into your code to make it more flexible, you are usually adding more complexity. If your guess about the flexibility needs of your software is correct, then you are ahead of the game. You've gained. But if you get it wrong, you've only added complexity that makes it more difficult to change your software. You're obviously not getting the payback.
One of the ideas drummed into my head by XP is that programmers are constantly predicting the future through our design choices. We're betting on what's going to be important and devoting resources to that. But that bet is rarely explicit and normally only exposed when it's dreadfully wrong. Designing a process (and focusing on supporting actions like refactoring) around admitting that your predictive powers diminish drastically the further out in time you go just feels right.