“The more features, the better,” you may think when developing your fabulous product.
Endlessly adding new features makes your application look more solid and professional, allows you to raise the license fees, creates the impression that you never stop improving your product, and, sure enough, demonstrates your customer-oriented approach.
You are trying to make your existing and prospective users happy, and isn’t that great?
You have probably received quite a few requests like “add this feature, and I will surely buy your product” before.
The Price You Pay
Let’s take a closer look at the price you pay for trying to make everybody happy by stuffing your app with as much functionality as you can.
The side effects vary and are certainly something to think about.
When adding lots of new features, you cannot dedicate sufficient efforts and resources
It takes a lot of time and money to develop, design, test, optimize, and refine each new feature. Oftentimes, you produce bloatware with tons of features, none of which works perfectly. As a result, customers start to perceive your product as an aggregate of mediocre solutions. What do you want to create — a heavy-footed Softzilla that is nearly impossible to tame, or a highly specialized critter that will be admired for the preciseness and elegance with which it does its work?
If your product loses its focus
That is, you cannot describe its purpose in one sentence, it will be the notorious Jack of all trades, master of none. If you try to put all its great features into an advertising slogan, a description, or a press release, it will be very difficult to position your product in the market.
Naturally, you want to add new features, which could be appreciated by users working in other professional areas. You may believe that this approach will create demand for your product in different user groups who need to solve different problems.
However, there is a risk that none of these user groups will consider your product as a professional tool made especially for solving their specific problems. Most likely, both users and reviewers will think that your product is a general solution which, among other things, might help them solve some problems in their professional areas.
Marketing such products “for everybody” takes a lot of resources and efforts. Are you sure that you can effectively promote such solutions in a dozen niches at the same time?
Adding each new feature usually involves writing hundreds of lines of code
It also means that you have to “betray” your existing architecture and change some already-tested code fragments. In rare cases, you can do that without introducing any new bugs. Sometimes, you are lucky and the bug is located in the code associated with the new feature. Unfortunately, bugs tend to magically appear in other parts of your application, which had already been thoroughly tested and proven in real life. You probably hate bugs, don’t you?
The high probability of introducing bugs when adding new functionality
You have to do regression and integration testing before each release. The scope and complexity of the tests increase from build to build, and that increase is not linear. Writing new unit tests, inventing new test cases, hiring new testers — that’s the price you pay for adding all the “cool” and “useful” features. Is this price always worth the effect?
If you add a feature, it will be nearly impossible to get rid of it
Even if only a few users like it, they will not allow you to remove it. On the contrary, they will probably demand that you improve or extend it. Your technical support team will have to handle their unending requests and complaints. The requested improvement is not going to attract more users to this feature, but it will still be hard to deal with the demands without hurting your customers’ feelings by refusals. Maybe you shouldn’t suggest to users that you can provide the perfect solution for everybody if you cannot actually do it?
In most cases, the new feature will require a new button on your toolbar
Which already looks like a gigantic showcase, or a new item in your lengthy menu. Do you really want to create an “all-inclusive” user interface? Well, it’s your call.
Finally, when thinking about adding a new feature, just give a straight answer to this question: “Is anybody actually going to use this feature, except for the two users who asked about it in the last three years?”
How to Get Rid of Features
Developing a product without making it worse is an art. Well, maybe not an art but a craft, though a difficult one.
Below, you can find some tips on how to achieve balance and harmony when adding new features to your product, while keeping it focused, simple, and efficient.
Brainstorm: Can we remove any features or items from our product?
Once a year, get your team members together for one hour, ask them this question, and simply write down all answers without criticizing or discussing them. After that, briefly discuss each answer, asking its author to explain why the feature should be removed. You will learn a lot of new things about your product — and about your team, too.
During our last brainstorming session, we wrote down some thirty answers. After a while, we removed about ten features from our application or buried them deep in the user interface. Nothing has changed for the worse from doing that!
Gently switch off some functionality
If you have doubts about discarding a feature, simply remove its explicit calling from the main user interface (for example, by removing the respective item from the menu) while keeping the implicit calling (for example, via hotkeys).
Alternatively, you can bury the unwanted feature in a dialog somewhere deep in the user interface. If any users ask you how to access that feature, just give them the necessary hotkeys or the secret path to the dialog; possibly, you were too hasty in hiding the feature and should bring it back? If you get no inquiries about the hidden feature over several months, it means that your decision was right.
Analyze users’ wishes and actions
Communicating with your users over a long period and performing a simple analysis of what and how they do is what you usually need to do to clearly see which features of your product are used, and which are not. When you understand that, gently switch off unwanted functionality and see what happens.
Learn to say “no” to users
The sad truth of life is that you cannot make everybody happy. Learn to say “no” to your users if their wishes are not compatible with your plans. Sometimes, you should not leave even a shred of hope that the requested feature will ever be implemented. It is better to plainly reject a request at once rather than to give a hope and then slowly kill it. If you feel like the requested feature is excessive, just say no.
Moving some features to a separate product or an extension
Sometimes you can remove unwanted features from your application and implement that functionality in a specialized product or plugin, which you can market and sell separately from your main product. In especially successful cases, you can even develop a whole product line from such scrapped features.
Based on our experience of communicating with many vendors, we can assure you that you can increase your sales and profits by smartly dividing your product into multiple editions, extensions, and companion products. That’s a fact, not a wild guess.
Plan and Control – That’s the Only Way to Avoid the Trap
As you can see, adding new features is not always good.
By zealously implementing more and more functionality, you can harm both your product and your business.
Adding more features to your application increases the complexity of its user interface and code, and, consequently, its testing, supporting, and integrating costs. Besides, your efforts to bring the product with new functionality to new markets will make it less focused and increase its marketing costs. Please note that it might be nearly impossible to get rid of unpopular and flawed features. That’s because doing that will annoy the rare users who like those features and want to continue using them.
Nonetheless, it is obvious that an application evolves mostly by getting new functionality. That’s the natural life cycle of any software product. Do not go with the flow when developing your application. Instead, carefully plan and constantly control its development, keeping in mind the potential problems.
When developing a product, always look for a balanced solution: Be sensible when it comes to adding new features, and don’t be afraid to get rid of unnecessary ones.
How About Superfluous Features in Your Products?
You have probably fallen into this trap at least once when you added some features and later regretted doing it. If you have firsthand experience, how exactly did the unnecessary functionality got into your product? Did you understand that it was a mistake to add it? Did you succeed in fixing that mistake? We’d love to hear about it in the comments below.