Well, a lot of the arguments you bring up are valid, but are related to a generally uncohesive team, lack of design ahead of time (I'm not design crazy, but defining public APIs upfront helps OOP work a lot better), or not using the tools available. That is, many of those things you mention go...