I like generics because it actually solves a lot of things that OOP and inheritance were supposed to without turning your dependencies into a ball of mud.
After 30 years of mediocre programming things I hate are unplanned/hidden side effects, train wrecks due to mutable state, and out of control dependencies. Error handling at this point seems like Weltschmerz.
Agreed on the second point, but when I think of "ergonomics", I'm mostly thinking about how much I have to type to get stuff done. For example, Java has generics and unchecked exceptions, but still sucks ergonomically without an IDE just due to syntax and imports.
After 30 years of mediocre programming things I hate are unplanned/hidden side effects, train wrecks due to mutable state, and out of control dependencies. Error handling at this point seems like Weltschmerz.