Yo-Yo Problem

dead-metaphor Puzzles and GamesSoftware Programs

Categories: software-engineeringcognitive-science

What It Brings

A yo-yo goes down, comes back up, goes down again. The motion is repetitive, oscillatory, and — crucially — the yo-yo never gets anywhere. It traverses the same vertical path over and over. This maps onto the experience of reading code in a deep class inheritance hierarchy: you start in the subclass, follow a method call up to the parent, find a call back down to an overridden method in the child, follow it up again to a grandparent, and so on. You bounce between levels, never settling, never building a complete picture.

Key structural parallels:

Where It Breaks

Expressions

Origin Story

The term was coined by Taenzer, Ganti, and Podar in their 1989 paper “Problems in Object-Oriented Software Reuse” presented at the ECOOP conference. They identified the yo-yo problem as a fundamental difficulty with deep inheritance hierarchies: the programmer’s need to repeatedly traverse between superclass and subclass definitions to understand behavior. The paper was prescient — it anticipated the composition-over- inheritance movement that would become orthodoxy a decade later.

The term gained broader currency through its inclusion in anti-pattern catalogs and object-oriented design textbooks in the 1990s. It resonated because deep inheritance was the dominant design approach in early OOP (particularly in C++ and Java), and the frustration it named was nearly universal among developers working in those ecosystems.

References

Related Mappings