There really is an Uncertainty Principle for IT systems. Uncertainty arises from the fact that users will not know what they really need until they begin to work with a new system. The traditional waterfall approach to building systems (finish one phase before falling into the next) ignores this principle, and ignores the inevitable business changes that occur between freezing the specifications and delivering a system. But the waterfall methodology continues to be widely used.