Flexibility as Anti-Pattern
koz got me thinking about unnecessary complexity. I got to thinking about the problem with every data abstraction layer I've worked on: I call it the "know-nothing" antipattern. I keep running into these frameworks where there's an underlying assumption that the framework can't know how the objects it returns will be used, which requires that every object be Cloneable. And there's usually some sort of ToXml() method, because you never know when you might want some XML. So now there's a bunch of extra code to allow for flexibility that could simply be ruled out. This is really bad when you think about the fact that these frameworks are generally created internally, for internal use.
The antithesis of the know-nothing anti-pattern is YAGNI. Data access layers can really make your life simpler. Let's just make it so we don't lard on enough flexibility to take that simplicity away.