Sandi Metz, author of "Practical Object-Oriented Design in Ruby" and "99 Bottles of OOP", believes in simple code and straightforward explanations. She prefers working software, practical solutions and lengthy bicycle trips (not necessarily in that order) and writes, consults, and teaches about object-oriented design.
Object-oriented languages have opinions about how best to arrange code. These opinions lead OO to naturally offer certain affordances. Just as round doorknobs expect to be grasped and rotated, OO expects messages, polymorphism, loose-coupling and factories. The key to creating intuitive and maintainable OO applications is to understand and embrace these built-in affordances.