In economics there is a theory about why companies are the size they are. In a nutshell, it comes down to, "The point at which the internal stupidity of a large organization exceeds transaction costs between independent ones." This has all sorts of interesting consequences. For example the existence of widely understood standards reduces transaction costs which favors small organizations. The demands of designing a large new integrated system favors large organizations that can exert centralized control.<p>In software design, the commodity at question is not money but both forms of cost still exist and trade off with each other. For example compare iOS and Android. The centralized control from Apple did allow them to build something new and complex, and to get a better user experience. But once the interfaces are understood and standardized, Android is able to generate something reasonably good, albeit with a lot less consistency and more duplication of effort.