Type parameter names usually consist of a single letter. Most commonly it is one of these five: T for an arbitrary type, E for the element type of a collection, K and V for the key and value types of a map, and X for an exception. The return type of a function is usually R. A sequence of arbitrary types can be T, U, V or T1, T2, T3.
> T, U, V, or T1, T2, T2
I would not follow this convention, for the most part. Why make someone have to keep a mapping in their mind for multiple types to multiple parameter names? And what if you need to insert or rearrange types? I would suggest giving the types more meaningful names, such as "<DM extends DataModel, VM extends ViewModel>"