Feature requests don’t slow down. They compound. Each one seems reasonable in isolation - small lift, customer value, two days of work. But they accumulate in the system. Each new parameter is a branch. Each configuration option is a test case you’ll miss. Each special case is a concept that future engineers have to load into their heads before they can reason about anything else.
I’ve gotten better at saying no. Not reflexively, but with a clear ask: what problem is this actually solving? Is there a simpler version that solves 80% of it? Can we wait and see if this comes up three more times before we build it?
Most requests don’t survive that conversation. The ones that do are usually worth building.
The discipline is recognizing that adding something to a system is much cheaper than removing it later. Every line of code is a liability until it proves otherwise.