Operator overloading and "for...in" loops are huge space/time savers and help to improve the readability of your code.

However, I would advise to stay away from using generics. In most situations they are time savers on short-term, but they actually hurt the readability of the code and indirectly reduce non-functional quality attributes of the software you are working on. I personally avoid them like a plague.

Quote Originally Posted by Super Vegeta View Post
Generics are obviusly very useful for saving the trouble of copy-pasting code that is exactly the same in function, but intended to be used with different types.
I don't agree. You can avoid copy-pasting by using refactoring properly, with the common techniques like class inheritance among others. Using generics is mostly a quick and dirty approach to a problem, so that you can quickly achieve something without proper architectural design and ignoring any existing software design patterns that may apply.

I think generics were introduced to Pascal languages for marketing reasons, they were not really necessary. This is a similar issue to exceptions. I also rarely use exceptions myself and consider them unnecessary, similar to Joel Spolsky's opinion (he's co-founder of Stack Overflow).