That may be relevant when you're writing a program. When you're writing a _library_, the "discovery" has already happened. But you can't just use the minimum level of generalization useful for your own program(s), you need to consider the conceivable needs of fellow programmers.
According to Stepanov generalisation is something you are supposed to discover as you develop a program, not something you do from first principles.