As a programmer, I hate redundant functionality in software with a passion. I want to do things The One Right Way. But I wanna make a case about why including unnecessary features in software or alternative ways to do the same thing is bad for a practical reason, not just an aesthetic one.

  1. The more features a piece of software has, the longer it takes to learn how to use it. Even if some of the features are totally redundant, you won't know that until you learn them.

  2. Relatedly, the more features you see, the more you'll be tempted to cut corners and avoid learning them all. Like I did when I played Starcraft. And of course you don't know which features are the most important ones to know until you learn them, so you can't effectively prioritize them.

  3. When you find out two ways of doing the same thing, you're likely to spend a long time wondering what the difference is before you realize there isn't one. After all why would the developers implement it if it didn't add any functionality? Even if there is a difference, if it's not obvious what it is, that's a sign that one or both features are poorly designed.

  4. This may not apply to all software projects, but for languages, standards or development frameworks, more features means different programmers might come up with different ways of accomplishing the same tasks. This can lead to a lot of confusion when they work together, and in the best case that confusion will cost precious time.

  5. The more features, even if they overlap in functionality, the harder it is to make sure none of them have bugs. It gets exponentially more difficult to anticipate how they might all be used and test everything.

  6. Lastly, this doesn't concern the end user after it's done but while in development, every feature takes time to add. Any time the dev spends coding a feature that isn't needed is time not spent coding one that is needed, or fixing bugs, or doing something else of value.

Fun quote: "Normal people believe that if it ain't broke, don't fix it. Engineers believe that if it ain't broke, it doesn't have enough features yet."


You don't need an account or anything to post. Accounts are only for email notifications on replies. Markdown formatting is supported.