Adding a feature feels like progress. Removing one feels like admitting a mistake, even when it isn't one — sometimes a feature was right for a version of the product that no longer exists.
I try to review every feature in a product I maintain against one question: if this didn't exist yet, would I build it today, given what I now know about how people actually use the product? If the honest answer is no, it becomes a candidate for removal, not a permanent fixture just because it shipped once.
The features worth deleting usually share a pattern. They were built for a use case that turned out to be rare. They require disproportionate explanation relative to how often they're used. Or they quietly complicate every other part of the interface because the system has to account for their existence everywhere, even when nobody's using them.
Removing a feature is a real decision that deserves the same care as adding one — a genuine user might depend on it, and cutting something people rely on is a real cost, not a neutral cleanup. It's worth checking usage data and talking to the people actually affected before pulling something out.
But when a feature genuinely isn't earning its keep, keeping it anyway because deletion feels uncomfortable is its own kind of mistake. Every feature you keep is something future you has to keep explaining, maintaining and testing. The bar for keeping something should be at least as high as the bar for adding it in the first place.