Feature bloat is ruining products

Is it just me, or does software feel jankier these days? Sometimes I tap a button on my phone and nothing happens. Other times there’s lag before my touch registers. The animations stutter, and the apps crash more often. The same kind of thing happens on game consoles, computers, cars, watches…

In many cases, I think this problem starts before the code is written. The people who make the decision to add a feature, or use a specific design, don’t have any context on the code needed to make it happen. It’s kind of like designing a skyscraper without knowing what materials you’re going to build it with.

Of course, every person in the chain is incentivized to work like this. The product manager is incentivized to raise the business metrics. The designer is incentivized to create something portfolio-worthy. The developer is incentivized to “make it work”. Anyone who says “we shouldn’t do this” isn’t celebrated or rewarded, so over time, they learn to stay quiet about it.

The thing is, even a feature that seems small can exponentially increase complexity. (For instance, if you add a dark theme: now your designers need to design two separate UIs for every project, your developers need to code them, and your QA people need to test them. And they have to do this for every future project too.) It can also cause bottlenecks: your engineers will need to maintain the feature, fragmenting time on future projects. The stress from handling this can increase employee churn, and when it comes time to onboard a replacement, it’ll take longer before they’re productive in a complex codebase.

I use lots of products that seem to be getting worse as they add new features. Their onboarding has become fragmented, their documentation contradicts itself, and their UI feels janky. These were products that I used to love, and they didn’t need to add anything to keep me as a customer. But, by trying to grow their product, they actually hurt it. (For some of them, a better strategy would have been to literally stop working!)

And it hurts, because I know there are people in these businesses stressing about these features, losing sleep, and even ruining their personal relationships for the sake of these projects. I want to tell them “it’s okay, as a customer, I don’t want you to burn yourself out over this”!

I also wonder how many of these new feature requests are made by people who spearhead features for their own reasons (corporate ladder climbing) rather than reflecting on what’s best for the company long-term. No one ever gets promoted by proposing to maintain the thing that’s already built. It’s a boring suggestion.

But maintenance is exactly the thing that I, as the customer, want these companies to focus on. I don’t need them to keep adding stuff. I just want them to keep their product stable. And when they do add a feature, I want them to take their time with it, play with it, experiment, even scrap it if it doesn’t make sense.

All of this to say, I’ve begun to question the assumption that software has to keep adding things to sustain itself. Sure, sometimes it’s a good idea, but many products could be a lot better if they didn’t focus on adding so much stuff.

Mark @mtmdev_