What you probably didn’t bargain for though is that with first-class functions, closures and a prototype inheritance system it’s one of the more expressive and flexible languages out there. Expressiveness and flexibility sound like good things but for many tasks actually lead to problems.
Now, I’m actually a big fan of Lisp, so if you answered Lisp then good for you and Paul Graham, but I think you know that you are in the minority.
The problem is that when your language is flexible enough to implement multiple different OO concepts, or has features that allow you to program in radically different paradigms then questions about code arise that simply don’t come up in more restrictive languages. Nobody who writes Java has had to worry about the right way to implement Object Orientation, or when to write higher order functions as opposed to abstracting using inheritance, or when to use the dynamicism of the language instead of a clunky visitor design pattern.