I've found it frustrating to have to search for the definitions of types to find out if they should be instantiated as classes or interfaces. Coming from C#, the convention there is that interfaces are named with and "I" as the first character. So, IThing is immediately identifiable as an interface whereas Thing is obviously a class. I do understand that this would break a lot of current code.