In complex applications, such as claims processing, learning management, scheduling systems, engineering software, and other such tools, it is common to provide flexibility to modify the user interface (and the underlying processing) to meet widely varying needs, rather than assuming that one size fits all. When working on the user experience design for such products, we need to ensure that it is easy for clients or users to configure the product as they wish, and we need to be mindful of the impact that client-specific configuration, customization, or individual personalization will have on the overall user experience. This presentation describes design patterns for configurable and customizable user interfaces, discusses how to decide which features should be configurable, and shares lessons learned.