To build flexible systems, programmers must orient their thinking to writing code that works indirectly rather than directly. This approach runs counter to the traditional approach of programmers, who take pride in finding ways to reduce processing time. In flexible systems, programs often contain the logic to look up the rules wherever they are stored rather than the logic of the actual business rules themselves. Furthermore, because the developers have isolated many reusable pieces of complex logic, programs are often assemblies of references to other specialized programs. This approach takes some getting used to. It also requires good communication, good documentation, and good project management. The independent-minded programmer who would rather do things his own way presents a significant barrier to the success of such an approach. It is

critical that management take an active role in establishing and enforcing adherence to standards, including the concept of reuse.