It’s pretty much universal knowledge that lines of code is a bad measurement of productivity or value. Large code-bases aren’t necessarily more functional, they might simply be more verbose. All other things being equal, large code-bases are typically harder to understand than small ones. They cost more to maintain and it costs more to add functionality to them. Code is a cost. So part of good software engineering is about providing the most functionality with the least fluff possible.

So it worries me when product departments boast about the number of features their products have.

The goal of product development is to deliver values. I love valuable features, they’re great. But it’s the value I love, not the features.

A feature has to be built by engineers, UX designers, designers, testers etc. That costs effort that potentially could be used for more valuable things. Then it needs to be maintained by all of those people plus people like support staff, operations etc. This expenditure of effort is less intense, but has the drawback of lasting forever. Each feature also increases the complexity of our systems to our users, and in extreme cases may even make our product as a whole less useful to our customers.

Much like with engineering, good product development is about providing the most value with the least fluff possible. It’s time to look at features and see them a cost. Most features are worth it, but let’s be ruthless with the one’s that aren’t.

Now, this is the point where the analogue breaks done a bit. Unlike the verbose code, the feature fluff will be valuable to someone. But when we start to see features as a cost, and see customer value as the true currency, we can start to figure out which ones are actually worth it for our business.