For apps made by personal developer, simplicity is of the utmost importance. Unless you are a huge company like Adobe or Microsoft, it’s obvious that you lose against other services if you competed by number of features. Your app’s features won’t kill competitors. So leave the difficult things to others and focus only on the problems you would solve. If you have a clear image of what you want to make, you can easily determine which features should be added and should not be added.
My app called Inkdrop, the Markdown note-taking app, is carefully considered not to add unnecessary features. I don’t hesitate to decline users’ requests to keep it simple. This manner makes the app more valuable and it is true that users paying for Inkdrop are buying its simplicity. I got a following message from a user during a survey:
My suggestion would be to try to keep the app clean and simple, focus on supporting developers primarily and not to over-complicate things (like basically all the other note-taking systems out there). — Inkdrop user
I would like to explain how I keep the app simple.
In order to keep your app simple, it’s all about decisions on which feature would NOT be added. Adding features is one way and it cannot be undone as you will get users angry once you remove the feature.
To determine the features not to be added, classify them into following 3 groups:
Considering the LINE app as an example, Core features would be such as sending message and friend list. Important features are stickers, free call and so on. Nice-to-have features are timeline, message encryption, etc.
While it is not mature yet, the nice-to-have features should be basically rejected because nice-to-have means that it’s okay not to have at all. So, first make it only with core and important features, then make sure that the problem is really solved. If there’re a lot of nice-to-have features, it will be unclear to determine whether the app works or not. For instance, it doesn’t matter if the Markdown note-taking app has PDF attachment feature.
The most troubling problem is judgements whether it is Important or Nice to have. When you can’t do that, there is always a belief “more features are better” in your mind. You believe “users are God, I must listen to voices from customers and I must reflect them on my product.” Well, what will happen if you incorporate their all suggestions and add plenty of features?
From a development point of view, programs get more complicated as the number of functions increases. Complex programs are easy to have bugs and require larger maintenance costs. And then, that makes difficult to add changes and slows down the development.
Bugs are more likely to occur if you add a feature that you will never use. You will be not able to notice it is broken until someone reports. So, it doesn’t make sense to add such garbage feature.
Take a look at Adobe’s products and Microsoft’s products. You cannot use them without a thick reference book. Too many features make you hard to find out the one you want to use and hard to understand how to use it. There should be few people who wish to use such a complicated app made by a personal developer, by involving large learning costs.
In my experience, 99% of feature requests are what other services already have. If you consider all of them, your app will become so ordinary and anyone will not know who it is for. So it’s no problem to reject the suggestions if you felt you actually don’t need it.
You feel good to add more features because it looks like your app is getting mature. But there would not be anything turned up by adding unnecessary features, unfortunately. James Watt, a founder of BrewDog, urges in his book “Business for Punks” as following:
The power of any brand is inversely proportional to its scope; consequently your focus should be laser-like and your product should be uber-tuned. — James Watt
You have to narrow down the feature set and concentrate your limited resource on it - that should make your app great. I would be happy if it’s helpful for your product :)