When a developer overcomplicates a piece of software as a mental exercise, or just because it's more fun. Sometimes it is intentional, but oftentimes results from a well-intentioned change done in the name of 'reusability', 'better abstraction' or something similar. - SeanKleinjung
Contrast with the idea that one should only DoTheSimplestThingThatCouldPossiblyWork.
See GoldPlating Heh...I knew that the concept had to already exist, just didn't have any other name for it...
See also AvoidComplexity