Three things stuck out in my mind today from reading the two books by 37signals a while back:
- Scratch your own itch,
- Decide what you won't do,
- Make decisions for your users.
Scratch your own itch – Essentially, if you solve a problem you have you will know something about it and you will have passion about the solution.
Decide what you won't do – There is tendency to watch competitors and listen to customers to chase the feature list. 80% of non-core features rarely get used and they just make the tool more complex for everyone esle. Stick to your core and decide what you won't do.
Make decisions for your customers – There is a tendency to try to make software "generic" so that anyone can use it. To accomplish this, everything is customizable and configurable. This way, one shoe fits everyone. Most users stick to the default configuration. So instead, build your software so that it makes those decisions for your customer so they don't have to.
The last two are hard to commit to, but once you do, you are free to build simpler and better software. Everyone won't want it but you don't need everyone.
Still it is hard to stay the course… after all, you want everyone to like you.