Intelligent systems can explore only tiny subsets of their potential external and conceptual worlds. To increase their effective capacities, they must develop efficient forms of representation, access, and operation. This Note develops several techniques that do not sacrifice expressibility, yet enable programs to semi-automatically improve themselves and thus increase their productivity. The basic source of power is the ability to predict the way that the program will be used in the future, and to tailor it to expedite such uses. Caching, abstraction, and expectation-simplified processing are principal examples of such techniques. This Note discusses the use of these and other economic principles for modern artificial intelligence systems. The analysis leads to some counterintuitive ideas (e.g., favoring redundancy over minimal storage in inheritance hierarchies).