Sometimes generic code is clearer than non-generic code. Although this is rare.
For example, (barring side-effects for simplicity) there is one and only one possible implementation for a function with signature:
f: T -> T
Where T is a generic type. Contrast this with: g: Int -> Int
which has many implementations, many of them possibly not what you intended. If what you intended was the identity function for integers, better use f, because it has fewer possible implementations than g. It's even easier for the reader to understand: since f doesn't mention integers, there's no point in checking whether it does any operation with them. Of course this is a trivial example, but the same point applies to more complex functions.