Interface naming convention

So a few guys here at the office have been reading a book called “Clean Code” where it says that the preceding ‘I’ on an interface name is just a distraction, gives too much information and that the book author doesn’t want users of the code to know that they are talking to an interface.

I say, “why?”. My option is that it gives a clear indication of the indented use of the object. The author also says that he prefers prefixing the implementation of the interface with “imp” ….. so lets get this straight then;

This is bad
Interface : ISomeObject
Concrete Class : SomeObject

and this is good
Interface : SomeObject
Concrete Class : SomeObjectImp

Personally I think that the example that shows the ‘good’ code is wrong, all that he is doing is moving the distraction from a simple ‘I’ to ‘Imp’

Given the two examples above, I know which I think is the clearest.