Here are two conventions I won't be following, with reasons: Pascal case method names Maybe it's just years of Java and Python showing, but I find ObjectName.MethodName() hard to read compared to ObjectName.methodName() . I tried to to adapt to this, I really did, and it's not due to taste matters. My brain keeps telling me I'm dealing with inner classes. I have to saccade out to the () to see what I'm dealing with - this is not irrelevant after a some hours of programming. Prefixing interfaces with 'I' Son of Hungarian notation alert. I just don't care enough that something is an interface and not a class to plonk 'I' in front of it. Why aren't we plonking 'C' in front of classes? Even so, I find having this distinction useless in working code - it's going to be irrelevant to me as a caller of your code what type model your implementation went with. One's an object signature, the other's an object generator+signature. But what do I care? If I'm using 'new' I know it's an object and if I'm using a function or factory it's irrelevant. All it does it make it look like Java circa 1999 with that 'IF' postfix convention. Doh....