i hate OO programming because of inheritance. It pissed me off to have to look through layers and layers of parents to search for a method. Stick with good ol' functions for easy debugging.
Except you can't have just functions, because then you end up with a semi-object system anyway. For example, you might have a function "dot" which puts a period at the end of a string, and a function "dot" which returns the dot product of two vectors. The first should be a string method, and the second should be a vector method. Without an object system, you'd call it dot-string and dot-vector, which is okay, but semi-object-oriented. Lisp has something that specializes functions based on its first argument.. That might be useful for that.
I disagree. A language without OO can allow code to be organised in an intelligent way by providing a module system. See Standard ML as (what I consider to be) a good example of this.
How can it be better, it seems to me that a module system would be a subset of an OO system? So logically it can't be better, if you are not forced to use all features of the system.
Good advice, but it doesn't help when one's coding in a larger system not just written by oneself. Then there's operator overloading; you can't trust anything to be doing what it suggests in an unknown, or large, codebase. Code readability goes down the pan if too much is hidden by mis-used OO techniques.