IMO there are two ways to develop software that should be combined into a single one:
1. Be visionary. Be able to anticipate the future, based on trends, common sense, easiness, catching a market oportunity.
2. Listen to the users. They are the ones that really know what they want and need. Pay good attention to them. Provide them what they want and need.
If both are combined, then the software evolves and at the same time makes users happy. They are satisfied. They feel that the developers are progressing the right way. As a basic rule: never go against your users. Adapt yourself to their needs, not the opposite.
A simple example: I don't enjoy having the same picture as the desktop backgound. I enjoy using the main background as a "window" to see the world: so I always install several apps (on Windows, Mac and Linux) to have a dynamic background from (great photos) flickr (or others). This is something so simple. None of the availables operating systems offer this. Do they pay enough attention to users (because those apps that I use to change the desktop background have being downloaded thousands times!) ?