Write reusable functions and data structures with type parameters, constraints, approximation elements, and type inference. Decide when generics improve an API and when interfaces or concrete code remain clearer.