Boken "Software Design for Flexibility" tar for seg strategier for å bygge store systemer som enkelt kan tilpasses nye situasjoner med kun minimale programmeringsmodifikasjoner. Under tidspress er det lett for programmerere å skrive kode som fungerer godt for et spesifikt formål, uten rom for framtidig tilpasning. Imidlertid er de beste systemene de som kan utvikles videre; de kan tilpasses nye behov ved å legge til kode, fremfor å endre den eksisterende koden. Forfatterne, som har mer enn 100 års kombinert programmeringserfaring, deler effektive teknikker som kan hjelpe programmerere å unngå å kaste seg ut i situasjoner der de står fast. De utforsker måter å forbedre fleksibiliteten på ved å: - Organisere systemer med bruk av kombinatorer for å sette sammen deler som kan mikses og matches, fra små funksjoner til hele aritmetiske sett, med standardiserte grensesnitt - Berike data med uavhengige annotasjonslag, som måleenheter eller opphav - Sammenføre uavhengige biter av partiell informasjon ved hjelp av unifikasjon eller propagasjon - Skille kontrollstrukturer fra problemområdet.