How do you make your datastore as versatile as your code?
Where I struggle a little is the persistence of data. For example, I'm on a project now where it's clear that different data will be required in certain cases for certain customers, but I can't anticipate what those new data items will be. Modifying the structure of the database constantly is not a very good option.
How do you deal with that? If I suddenly have a new group of customers that need to track a user's hair color, what do I do in terms of my database to accommodate that?