Predicting the Future

Bill Venners: Everyone would likely agree that predicting the future is difficult, but is it always a bad idea?

Ward Cunningham: In science it's easy to predict the future. Science is built upon studying the behavior of physical systems, which turn out to be, maybe short of the weather, pretty amazingly predictable. We test a theory by testing its predictive capability. The fact that we can shoot a rocket out into space and cause it to orbit—that is the epitome of prediction. But when we start talking about what will be desired in the future, we might have some instincts and they might be right, but they won't always be right. And we have to attend to the times when they aren't right.

I love it when a new requirement comes in, and we look at it and say, "Well, that's easy. The program is made to do that." We put the pieces into the program, and it just fits. I hate it when a new requirement comes in that doesn't fit nicely, as if the program were designed to make the requirement hard. In that case, we have a lot of work to do. But the nature of the work is first changing the program so the new requirement is an easy fit, and then doing the easy work to incorporate the requirement. In other words, instead of patching the new requirement onto an architecture that was not made to accommodate it, just buckle down and do the hard work to change the architecture so the requirement is easy to implement. The patch approach means that the next guy who comes along will have to understand both the system that wasn't made to do the new requirement, and the patch that tried to overcome that system without changing it. It's much better to change the system to accommodate the new feature easily.

Now somebody might say, "Why don't we look forward, look at all the work we have to do? Why don't we design a system that makes all work easy from the beginning?" And if you can pull that off, that's great. It's just that, over and over, people try to design systems that make tomorrow's work easy. But when tomorrow comes it turns out they didn't quite understand tomorrow's work, and they actually made it harder.