Great article, thanks for writing it! I always find that objects get overloaded with attributes and methods that should either be on the parent class or outside the object entirely. Love what you have to say about if/else and type checking - both anti-patterns in my opinion, too.
That said, untangling and refactoring bad OOP in an existing code base can be a nightmare. When objects become intertwined and codependent, you can spend a long time trying to simplify and move functionality to the correct objects.