Article Software Complexity Fig

I want more software features!

Are you sure?

Reading Time: 3 minutes

We all want simple products but very often this does not correspond to the reality of the facts because we are fascinated by complex products. It’s strange but that’s how it is.

We like to think that we only want the basic functions that we really need but who can resist the temptation of not putting some optional extras when we buy a car? We do it even though we already know we won’t need them. When in doubt, better to have them than not. Right?

Maybe for a car the reasoning is plausible but for a software it is not always so.

During the development of a software product you are often tempted to add new features. This is mostly done by running usability tests on users or in beta.

During the software release period, many users provide useful feedback. Some report bugs others recommend features to add.


Fixing bugs is key but so is asking for new features!

What would we like most? Knowing from users what users want! It seems like the perfect solution.

After all, adding features is easy enough and keeps our conscience clear.

Who will ever complain about a new version with more features? Besides, these features are the ones that users have asked for.

Whoever produces the software thinks that in the end it is useful to improve the product or, at least, to update it. Everybody wins! Right? NO!

Adding features to a software is not always the best choice.

Certainly there are cases in which this way is the best but, unfortunately, often it is not.

Surely there are many positive aspects.

Adding features increases the value of the software and a list with more features allows us to be more attractive to the user. New functions immediately give the idea of novelty, of updating, of development, of a project that continues to evolve.


Unfortunately there are also cons and they have a very big weight.

Usually it would be preferable to give priority to bug fixing but we could fall into error by giving priority to the development of new features thus sacrificing the resources allocated to buses. Very serious mistake!

Adding functions leads to greater code complexity and higher development costs. As the code increases, so does the complexity of the entire quality management infrastructure. Think, just for example, of the new unit tests that need to be added and all the case studies that need to be tested.

Then what about security issues? Adding features can result in new security holes that need to be researched and tested.

Also, adding new features obviously introduces the possibility of new bugs that could add to previous ones and add new and more frustrating ones.

New features also mean new support, new internal documentation as well as a whole host of problems due to the maintenance of the software itself.

But there are cons on the end-user side as well. Let’s try to put ourselves in your shoes.

New version with new features means new things to learn. More time and energy. More complex (or at least different) interface and therefore more confusion.

If this leads to not easily finding the features they are interested in, the user will begin to develop a sense of frustration or even be intimidated by a program they can no longer handle.

The user also likes to be able to recommend software to others, but will not do so if they do not find it simple and functional. He would never recommend software that he finds difficult to use. It would look bad.

The word of mouth of users is an incredible marketing tool and it is very stupid to give it up.

We may find ourselves in the paradoxical condition of having users who want more features in our software and then turn to other simpler software when we give them what they want.

Scroll to top
Fabrizio Cesarini
Project Management Software
This is default text for notification bar