There is no point in building a piece of software if it is not going to be used, and it won’t be used unless it is useful to someone. There is often a temptation to build something just because you can: you can see a really nifty way of doing it, and fancy the challenge or think it would be cool. It is a temptation that should usually be resisted.
This applies at all levels of software development, to individual features as well as to entire software systems.
For example, if there is a simple task that is currently performed manually, and you are thinking of automating it, you should look very carefully at what would be gained. Would the new system be easier or quicker to use, would it provide more information, or would it be less likely to result in errors? Unless the answers to these and similar questions are extremely positive, you should be very wary of going ahead.
You should ask similar questions when considering introducing a system or feature that will provide completely new functionality. Is anyone actually interested in this functionality? Will the benefits of using it outweigh the inconvenience? Remember that you, as the developer or designer, may not fully understand the priorities of the users.