We hypothesize that certain program complexities and difficulties to realize reuse potentials have their roots in weak mechanisms for generic design of today’s programming techniques. We back this hypothesis with empirical studies of program similarity patterns. In three lab projects and two industrial projects, we found 50%90% rates of repetitions that deliberately recurred in newly developed, well-designed programs. Not only did those repetitions increase conceptual complexity and size of programs, but also signified unexploited reuse opportunities. With suitable generic design solutions unifying similarities, we could avoid repetitions, raising reuse levels proportionally to the rates of repetitions that we found. Despite this potential benefits, avoiding repetitions with conventional generic design solutions was either impossible or would require developers to compromise other important design goals. We believe these problems are common to many programs, and in the second part o...