
Why killing your favorite feature may be my biggest contribution
Adding features is easy. Removing them is brutal.
When you add, you're a hero. You shipped something. When you remove, you're the person who "broke" what someone else built. You face sunk cost arguments, bruised egos, and the inevitable "but what if we need it later?"
That's why most teams don't prune. They accumulate.
And then they wonder why everything takes so long. Why a "small change" requires three teams and two months. Why onboarding new engineers takes forever. Why the codebase feels like archaeology.
Complexity is the silent killer. Every feature you keep is maintenance you carry. Every edge case you preserve is cognitive load you impose. Every "just in case" is friction you embed into every future decision.
The hardest work I've done wasn't building something new—it was replacing bloated inventory logic from a monolith with something radically simpler. The original had grown over years, feature by feature, exception by exception. Nobody questioned it. It was just "how things worked."
Killing it required more than code. It required convincing people that less could be more. That removing functionality wasn't failure—it was focus.
Silo-thinkers take complexity as given. They optimize locally, unaware of the system-wide drag they create. Short-term thinkers avoid the investment pruning requires. Leadership often celebrates what's added, never what's removed.
But the leaders I respect most understand: subtraction is a skill. Saying "no" to features—including your own—is often the highest-leverage thing you can do.
Kill your darlings. Kill other people's darlings too, if they're dragging the system down.
The best products aren't the ones with the most features. They're the ones where someone had the courage to remove what didn't belong.