As a Customized Software Development company, we have to build software as per client's requirements. It is as simple as that.
Now conventional wisdom says: "Client is always right". We don't agree.
Client is right only when they know what they are talking about. Software development is such a complex world, in most cases clients do not know what they want. It is not their fault. It is just not their business. Their business is something else and they want a software to make it efficient. But most often than not, they end up making their business less efficient because of software.
Let's start with an example here:
Due to popularity of Facebook, Twitter and all such Social Networking sites, many of my clients want features like those sites in their web-based software. Now I am a big fan of social networking but I am not a big fan of having these features unnecessarily.
For that matter no software should have features which are not "really really really important" (at least in the first version).
Software is becoming too complicated and we are not sure if we can tolerate such complexity anymore.
Clients keep asking us to add features to their software to please their clients or users and its a vicious cycle. Because of that the software becomes too big, too complicated and too bloated to handle and maintain.
And Software companies like us keep profiting from such feature requests. We help client make their software bloated and than profit from maintaining that!
We are not big fan of such practices and we are not sure how long will they last.
We are in love with the philosophy of a company called 37signals.com.
If you would like to build a successful software you should start with very little functionality.
Just build the core functionality of your software and put it before your audience. That's it. Have them use it first.
Do not focus on anything else which is not core. It is not important right now.
Doing less has its own advantages.
If you are planning to build a software, we suggest you to list down all the features you want and ask this question to yourself for each feature.
Do you really really need this? Are your users not going to use your software if you do not have this?
This question will help you filter out most of the unwanted features and you will make it a slick, to the point system. That is a path to success in software world.