Dependency injection, code modularity, and testing often seem like staid, even boring, topics, but there are surprises when you put all three together. Seemingly independent decisions about each influence the others. Making rational development decisions each day can still lead you into a thicket of complexity and loss of maintainability. So when should you give it your “architectural attention”? This talk discusses the problem and suggests some limited solutions.