Designing flexible systems

A good quote from Larman about designing flexible systems:

Novice developers tend towards brittle designs, intermediate developers tend towards overly fancy and flexible, generalised ones (in ways that never get used). Expert designers choose with insight;  perhaps a simple brittle design whose cost of change is balanced against its likelihood.