A practice we've made a habit of is introducing flexible features to the products we create. A flexible feature is anything that has a slightly undefined purpose. The most common we introduce are:
These are features which we likely added to solve some specific problem, but perhaps we didn't understand the problem fully when we added it, or the uses of it were highly diverse. This would have prevented us from creating a more opinionated, specialized experience.
But flexible features aren't just something we add from laziness. By allowing users the freedom to use something however they please (and misuse as well), we unlock a golden opportunity to see where the product is falling short.
A great example of this is the notes feature we added to Cuebox's donor timeline. The timeline is a space that should show all history of that donor. Transactions, phone calls, emails etc. But we knew from the outset that we had excluded a bunch of events which we'd undoubtedly need to add later – but weren't inside the scope of the MVP.
To get around the fact that we knew we weren't feature-complete here, we added a generic notes and task creation experience. That way we could:
The key here is monitoring. It's critical to actually go and check how people are using these featuers and see if they're adding value or creating chaos, and slowly over time, adding in more tailored and integrated solutions to solve the problems our users have exposed.