We have Projects A, B, and C. We have Team 1 and Team 2.
Project A(Team 1) depends on a library, version==1.1.0Project B(Team 2) dependes on the same library, 1.0.0 < version < v1.2.0.Project C(Team 2) depends on the same library, 1.0.0 < version < v1.2.0.Project Adepends onProject C. One day, Team 2 updates projectsBandC's dependencies, making their version requirements version==1.3.0, in order to benefit from a bug fix. Now Team 1 has to updateProject Ato handle a new version of one of its dependencies. Sometimes this can be quick and painless, sometimes it can be painful. The more scattered projects there are, the more dependencies between these projects, the more likely version clashes can happen.
- Team 1 maintains an REST API and a client to that API.
- Teams 2 and 3 each maintain a client for the API.
One day, Team 1 changes an endpoint from /users/<signed_on_before_date> to /users?signed_on_before=<date>.
Now Teams 2 and 3 both need to update their clients and do some integration testing. Both teams would probably rather be working on their own tasks instead.