Strategies for building large systems that can be easily adapted for new situations with only minor programming modifications.. Time pressures encourage programmers to write code that works well for a narrow purpose with no room to grow. But the best systems are evolvable; they can be adapted for new situations by adding code rather than changing the existing code. The authors describe techniques they have found effective--over their combined 100-plus years of programming experience--that will h