
... there was “too much inheritance”.
“Making a single change in one object sometimes required making changes in everything it was inherited from.”
That happens when developers apply OOP mindlessly. The purpose of good software design is to reduce coupling and increase cohesion, not the other way around ...