While I don’t know how to answer this question in a single paragraph, I attempted to answer it in a blog post instead: http://blog.ploeh.dk/2012/02/02/LooseCouplingAndTheBigPicture.aspx
To summarize, I find that the most important points are:
- Understanding a loosely coupled code base requires a different mindset. While it’s harder to ‘jump to collaborators’ it should also be more or less irrelevant.
- Loose coupling is all about understanding a part without understanding the whole. You should rarely need to understand it all at the same time.
- When zeroing in on a bug, you should rely on stack traces rather than the static structure of the code in order to learn about collaborators.
- It’s the responsibility of the developers writing the code to make sure that it’s easy to understand – it’s not the responsibility of the developer reading the code.