One thing we know about software design is that the future is important. However, we also know that the future is very hard to predict. I think that I have come up with a way to explain exactly how hard it is to predict the future of software. The most basic version of this theory is: The accuracy of future predictions decreases relative to the complexity of the system and the distance into the future you are trying to predict. As your system becomes more and more complex, you can predict sma...