I love watching people who obviously don’t know much about computers. They are wonderfully pragmatic, and will find the simplest path – even if it isn’t the optimal choice. The other day on the train I saw a guy using Notepad to write a report (his hunt & peck typing gave him away too!). Notepad does one thing; it lets you enter text (and move it around a bit).
This made me notice a parallel between learning a new piece of software and learning to juggle. The more features your software has the harder it is to learn; the more balls you have the harder it is to juggle. Notepad is the juggling equivalent of one ball – it’s easy. Let’s say this man on the train made the leap to Word Pad, or even worse to Word. Now he’s got more to worry about; formatting, fonts etc. More features, more balls. The formatting can get messed up, the fonts might keep reverting to the wrong size – he’s just dropped his juggling balls and is frustrated.
The problem is; people want features (whether they need them or not!) so will put pressure on you to add them: features add complexity, complexity increases bugs, bugs increase support issues …and…erm… support issues lead to the dark side…
Users are selfish. I don’t mean that as a criticism – they have their problems and they bought your software to solve them, so it’s only natural that they will ask for features so that solve them exactly. When you only have one customer the problem is contained – you are writing it just for them. Unfortunately, the more customers you have the more incompatible their requests become. You will eventually reach a point where 2 customers want completely the opposite thing. Adding all the features your customers want doesn’t scale – you can’t be everyone’s girlfriend. The further you go down the path of trying to please everyone; the more complex your product becomes, the harder it is to maintain, the harder it is to learn, the harder it is to use. Ultimately, you’ll please no one. Each feature must add to, rather than dilute, the value of your product to your entire community. Simply say no to the rest.
This philosophy will upset some customers, they may even go as far as to threaten to abandon your product. But, they bought your software for what it is now, they have already decided that what you offer is the best on the market – otherwise they would have taken their custom else where in the first place. Had you said yes to every feature earlier customers had requested you might not have won the customer who is now complaining!
It’s a difficult balance to strike, especially when you are starting out and grateful for every sale. But there comes a point when your product becomes bigger than any one customer. You must use your judgement and recognise your role as the software’s custodian; challenge the value of each feature so that your application stays focused on being the best in its niche rather than a poor product in many. If your goal is the best user experience then you must aspire to give your software the best features, not just the most.
“You know you’ve achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away”
–Antoine de Saint-Exupéry