This is one I have a tough time explaining to students who are so focused on the task at hand they don't feel there's time to sit back and reason in generality.
> The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise
By taking away all the non-essential things and leaving only on what you need, it allows you to truly understand the structures that you are studying. Definitely rings true when I work in ML/Haskell-style type systems. Easier said than done convincing the students though...
This is the essence of type abstraction and parametricity!