"True, nothing is perfect. By having loosely coupled teams you will loose a bit of efficiency regarding coding. But you gain that efficiency by cutting away overhead and coordination. In my view, what you win is bigger than what you loose. I think it is a very big win if every team understand their customer, and can prioritize on what the customer/user needs. You will gain a lot of innovation speed. If you find functionality that is really useful for multiple teams, spin it off into a separate component, with a separate team."
- andrej koelewijn