When you're doing a project you do it to benefit the future users of your to be product.
Then to implement a given task you see there is a way to improve it which would make the total project even more useful to its users.
One problem with software projects is that their end-users are not a fixed set. The beneficial features in the end determine who will use the software. But if a feature is not very useful to the targeted user-base, then it might be useful for some other users. And you're not trying to limit who could possibly benefit from your software.
So features bring about the idea of the user-base, and user-base brings about ideas how to improve the features, which again slightly changes the anticipated feature set, and offers opportunities for new features for additional users.
Then to implement a given task you see there is a way to improve it which would make the total project even more useful to its users.
One problem with software projects is that their end-users are not a fixed set. The beneficial features in the end determine who will use the software. But if a feature is not very useful to the targeted user-base, then it might be useful for some other users. And you're not trying to limit who could possibly benefit from your software.
So features bring about the idea of the user-base, and user-base brings about ideas how to improve the features, which again slightly changes the anticipated feature set, and offers opportunities for new features for additional users.