Adding layers of indirection and abstraction can solve all problems – except for the fatal problem of complexity and bloat resulting from having too many layers of indirection and abstraction.