I agree that splitting large developments into collaborating components is often a good thing, but it certainly has its dark side.
Initial development of the individual modules can be faster this way, but at the expense of extra API negotiations, loss of shared understanding, duplication of code and of effort, reduced ability to refactor across module boundaries etc.
In short, attempting to split a project by component is potentially just as misguided as attempting to split it by layers. A holistic approach would admit that components without shared code and shared understanding tend toward wasteful silos, and layers without direct business purpose tend toward bloated API swamps.
E-mail addresses are not publicly displayed, so please only leave your e-mail address if you would like to be notified when new comments are added to this blog entry (you can opt-out later).