@liw I would agree, based on my own experience, although I would expand upon that to observe that the fairly seamless OO notation/syntax can also complicate debugging by making the true order of execution through nested inheritances unnecessarily opaque.
From that point of view, the explicit selections of erlang's pattern-matching are much easier to maintain in large projects.