Here are my thoughts:
1. Knowledge Sharing
Developers need to have the knowledge about the whole product, especially about how the feature he or she is responsible is being used.
No one would intend to make the code broken unless for political reasons, such as avoiding dependencies. We can argue that the developers are careless. However, in my experience, most of the cases, lake of the knowledge is the reason.