Can you imagine maintenance where you would only have to change a configuration? How about not having to touch existing production code but be able to completely change the behavior of an existing application?! The real reason to use a dependency injection container is Maintenance. When considering that after you write your first line of code, everything from that point on is maintenance, maintenance is a pretty big deal. Containers make changes seamless. Actually, interface-based development makes changes easier. Being able to push an implementation of that interface into the dependent objects when constructing them (dependency injection) makes changes seamless. And being able to push that all to the container configuration: awesome!